mybatis怎么设置主键自增

mybatis怎么设置主键自增,第1张

mybatis自增主键配置:mybatis进行插入 *** 作时,如果表的主键是自增的,针对不同的数据库相应的 *** 作也不同。基本上经常会遇到的就是OracleSequece和Mysql自增主键。主要说明下在mybatis中对于自增主键的配置。1、不返回自增主键值:如果考虑到插入数据的主键不作为其他表插入数据的外键使用,可以考虑这种方式。OracleSequence配置TEST_USERSEQ_TEST_USER_IDnextval insert into (ID,NAME,AGE) values ( ,#{name}, #{age} ) 当插入语句如上配置时,那么针对如下语句 User user = new User(); usersetName("test"); usersetAge(24); userMapperinsert(user); Systemoutprintln(userid); // userid 为空userid为空,也就是说如上的配置并不能在完成插入 *** 作后将插入时的主键值存放到保存的对象中。2、Mysql自增主键配置由于mysql数据库中,可以设置表的主键为自增,所以对于Mysql数据库在mybatis配置插入语句时,不指定插入ID字段即可。主键的自增交由Mysql来管理。TEST_USER insert into (NAME,AGE) values (#{name}, #{age} )同样,针对Mysql如此配置mybaits,插入完成后userid为空。插入后获取自增主键值:上述的情况能满足大部分情况,但有时候我们会遇到类似一对多的那种表结构,在插入多端数据时,需要获取刚刚保存了的一段的主键。那么这个时候,上述的配置就无法满足需要了。为此我们需要使用mybatis提供的来单独配置针对自增逐渐的处理。1、OracleSequence配置:TEST_USER SEQ_TEST_USER_IDnextval select from dual insert into (ID,NAME,AGE) values ( #{id}, #{name}, #{age} ) 当使用了后,在实际的插入 *** 作时,mybatis会执行以下两句SQL:select SEQ_TEST_USER_IDnextval from dual; // 语句1 insert into (ID,NAME,AGE) values ( , , ); // 语句2在执行插入 语句2 之前,会先执行 语句1 以获取当前的ID值,然后mybatis使用反射调用User对象的setId方法,将 语句1 查询出的值保存在User对象中,然后才执行 语句2 这样就保证了执行完插入后User user = new User(); usersetName("test"); usersetAge(24); userMapperinsert(user); Systemoutprintln(userid); // userid 不为空userid是有值的。2、Mysql自增主键配置针对于Mysql这种自己维护主键的数据库,可以直接使用以下配置在插入后获取插入主键,TEST_USER insert into ( NAME, AGE ) values ( #{name}, #{age} ) 当然,由于Mysql的自增主键可以通过SQL语句select LAST_INSERT_ID();来获取的。因此针对Mysql,Mybatis也可配置如下:TEST_USER SELECT LAST_INSERT_ID() insert into (ID,NAME,AGE) values ( #{id}, #{name}, #{age} ) 只不过该中配置需要额外的一条查询SQL小结当数据插入 *** 作不关心插入后数据的主键(唯一标识),那么建议使用 不返回自增主键值 的方式来配置插入语句,这样可以避免额外的SQL开销当执行插入 *** 作后需要立即获取插入的自增主键值,比如一次 *** 作中保存一对多这种关系的数据,那么就要使用 插入后获取自增主键值 的方式配置

以上就是关于mybatis怎么设置主键自增全部的内容,包括:mybatis怎么设置主键自增、Mybatis的缓存讲解、顶呱呱啊!更便捷的Mybatis增强插件——EasyMybatis等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9567223.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存