mybatis 返回主键
来源:互联网 发布:手机服装绘图软件 编辑:程序博客网 时间:2024/06/05 03:33
mybatis返回主键
mybatis返回主键分为两种情况,第一种数据库支持自增主键,比如mysql、sqlserver;第二种是不支持自增主键,比如oracle
数据库支持自增主键(mysql、sqlserver)
使用insert、update标签中的useGeneratedKeys、keyProperty来获取主键返回值,useGeneratedKeys设置为true,keyProperty设置为主键对应实体类的属性值,如果是联合主键那么属性名用逗号隔开;insert时,返回的是新增记录的主键值、update时返回的时更新记录的主键值
这里拿insert举例,useGeneratedKeys="true" keyProperty="id"
<insert id="insertSelective" parameterType="testmaven.entity.User" useGeneratedKeys="true" keyProperty="id"> insert into user(name,age) values (#{name,jdbcType=VARCHAR},#{age,jdbcType=INTEGER}) </insert>
同理,如果插入多条记录,只要设置了useGeneratedKeys、keyProperty
,同样可以获取主键;
<insert id="insertBatch" useGeneratedKeys="true" keyProperty="id"> insert into user(name,age) values <foreach collection="list" separator="," item="item"> (#{item.name,jdbcType=VARCHAR},#{item.age,jdbcType=INTEGER}) </foreach> </insert>
mybatis generator设置方法
我们通常使用generator插件来生成mapper,generator支持主键自动生成,就不需要一个个mapper文件设置了,只要在生成的时候配置一下就可以了。
<!-- !!!! Table Configurations !!!! --> <table tableName="ss_order" domainObjectName="Order" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" > <generatedKey column="id" sqlStatement="MySql" identity="true" ></generatedKey> </table>
生成的mapper.xml带有useGeneratedKey信息
数据库不支持自增主键(oracle)
在数据库不支持自增主键情况下,需要使用selectKey来返回插入的主键值。
selectKey属性
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> select last_insert_id() as id </selectKey>
插入记录后,获取主键(如mysql)
selectKey中的order=after,代表先执行insert into,后执行selectKey。此处利用mysql的last_insert_id函数来获取最后一条记录的id
<insert id="insert" parameterType="com.mycat.test.model.Test"> INSERT INTO test(name) VALUES(#{name,jdbcType=VARCHAR}) <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> select last_insert_id() as id </selectKey> </insert>
插入记录前,获取主键(如oracle)
注意,selectKey中的order=before,代表先执行selectKey,后执行insert into。此处利用sequence先获取id值,设置到sql中,然后返回主键。
<insert id="insert" parameterType="com.mycat.test.model.Test"> INSERT INTO test(id,name) VALUES(#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}) <selectKey resultType="java.lang.Integer" order="before" keyProperty="id"> select xx_sequence.nextval from dual </selectKey> </insert>
0 0
- MyBatis insert 返回主键
- MyBatis返回主键
- mybatis insert返回主键
- mybatis 返回主键
- MyBatis返回主键
- Mybatis insert 返回主键
- mybatis 主键的返回
- Mybatis 返回主键
- mybatis insert 返回主键
- mybatis 返回主键
- mybatis insert 返回主键
- mybatis主键的返回
- mybatis自动返回主键
- mybatis主键返回
- mybatis之主键返回
- MyBatis之主键返回
- mybatis 插入返回主键
- Mybatis返回主键id
- 如何用DataStage构建企业异构数据库之间的高速通道
- list_entry
- ActiveMQ vs JbossMQ
- 使用Spark DataFrame进行大数据处理
- Android实现定时器
- mybatis 返回主键
- window7远程桌面到服务器不能复制粘贴解决办法
- iOS 关于屏幕旋转shouldAutorotate
- SourceForge和Github开源软件开发管理场所
- HTTPS科普扫盲帖
- PCIe-块设备驱动-Single DMA
- Thinkphp ajax异步提交的方法总结
- iOS 上架- IPA打包上传遇到问题记录
- java 中 mongodb的各种操作 模糊查询 精确查询 等等