mybatis返回主键ID(自增和非自增)的两种方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mybatis返回主键ID(⾃增和⾮⾃增)的两种⽅式
⼀.mapper映射⽂件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.TableNameMapper">
<!-- 插⼊数据并返回⾃增ID
有⾃增ID功能数据库可以采⽤useGeneratedKeys="true"开启判断是否是⾃增ID
keyProperty="id" 指定插⼊数据后⾃增ID返回时赋值给实体类的那个属性(这⾥是id属性)
-->
<insert id="insertData" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="id">
insert into tableName values(null,#{name})
</insert>
<!--
⾮⾃增主键
像Oracle数据库采⽤序列来作为⾃增主键,通过 selectKey⼦来获取主键值
MySQL同样适⽤(只是order属性处为after, 因为mysql⾃增完ID后才返回ID值)
-->
<insert id="insertDataAgain">
<!--
selectKey中resultType属性指定期望主键的返回的数据类型,
keyProperty属性指定实体类对象接收该主键的字段名
order属性指定执⾏查询主键值SQL语句是在插⼊语句执⾏之前还是之后(可取值:after和before)
-->
<!-- oracle -->
<selectKey resultType="integer" keyProperty="id" order="BEFORE">
SELECT LAST_INSERT_ID()
</selectKey>
<!--
<selectKey resultType="integer" keyProperty="id" order="AFTER">
SELECT id from tableName order by id desc limit 1
</selectKey>
-->
insert into tableName values(null,#{name})
</insert>
</mapper>
注: ORACLE返回主键最好是在插⼊SQL执⾏之前执⾏,也就是order属性值设置为before
⼆.mapper接⼝
public interface TableNameMapper {
//插⼊数据
public Integer insertData(Map<String, Object> map);
//插⼊数据
public Integer insertDataAgain(Map<String, Object> map);
}
三.如何取到ID
当数据添加成功之后,你打印接⼝中传⼊的map,会发现⾥⾯多了⼀个id属性,且值和数据库⾃增的id是⼀模⼀样的,这就是ID返回的实现。

相关文档
最新文档