mybatis执行insert语句,如何返回主键给对象的问题(限主键为整数类型)
2017-12-14 16:23
483 查看
大体总结有两个方法:
一、如果数据库指定了主键自增长:
1、在实体类的映射文件 "*Mapper.xml" 文件中:
注释:
<insert></insert>中没有resultType属性,但<selectKey></selectKey> 标签是有的,
order="AFTER" 表示先执行插入语句,再执行查询语句
(可设置为 BEFORE 或 AFTER:
如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。
如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,
可以在插入语句中嵌入序列调用keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段)
SELECT LAST_INSERT_ID() 表示MySQL语法中查询出刚刚插入的记录自增长Id
注意:User实体类中 id 要有 getter() and setter() 方法
二:如果数据库没有指定主键自增长:
1、在实体类的映射文件 "*Mapper.xml" 文件中:
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.go.model.User">
insert into user(userName,password,comment)values(#{userName},#{password},#{comment})
</insert>
注释:
<insert></insert> 中没有resultType属性,不要乱加
useGeneratedKeys="true" 表示给主键设置自增长
keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段
parameterType="com.go.model.User" 这个属性指向传递的参数实体类
注意:User实体类中 id 要有 getter() and setter() 方法
一、如果数据库指定了主键自增长:
1、在实体类的映射文件 "*Mapper.xml" 文件中:
<insert id="insert" parameterType="com.go.model.User"> <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey> insert into user(userName,password,comment)values(#{userName},#{password},#{comment}) </insert>
注释:
<insert></insert>中没有resultType属性,但<selectKey></selectKey> 标签是有的,
order="AFTER" 表示先执行插入语句,再执行查询语句
(可设置为 BEFORE 或 AFTER:
如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。
如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,
可以在插入语句中嵌入序列调用keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段)
SELECT LAST_INSERT_ID() 表示MySQL语法中查询出刚刚插入的记录自增长Id
注意:User实体类中 id 要有 getter() and setter() 方法
二:如果数据库没有指定主键自增长:
1、在实体类的映射文件 "*Mapper.xml" 文件中:
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.go.model.User">
insert into user(userName,password,comment)values(#{userName},#{password},#{comment})
</insert>
注释:
<insert></insert> 中没有resultType属性,不要乱加
useGeneratedKeys="true" 表示给主键设置自增长
keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段
parameterType="com.go.model.User" 这个属性指向传递的参数实体类
注意:User实体类中 id 要有 getter() and setter() 方法
相关文章推荐
- MyBatis使用MySQL数据库如何在执行insert操作后返回自增的主键
- 不用存储过程,如何在执行一个INSERT语句后,返回新记录的主键值。
- MyBatis-执行插入语句的时候返回主键ID到传入的参数对象中
- MyBatis使用MySQL数据库如何在执行insert操作后返回自增的主键
- Mybatis在执行insert语句返回自增主键
- MyBatis执行insert如何返回主键
- (转)Mybatis insert后返回主键给实体对象(Mysql数据库)
- MyBatis中,传String类型参数到xml配置文件,并执行SQL语句后返回String类型的结果写法(jeesite)
- mybatis返回对象包含Long类型主键值 oracle数据库
- 记录:java执行mysql语句查询字段类型:timestamp返回页面显示会多出个 .0,自己如何处理的
- mybatis insert 如何返回主键
- 如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
- 如何在mybatis中一个insert,delete,update中执行多条SQL语句
- mybatis执行insert实体后返回主键
- Mybatis执行insert语句,获取主键
- 如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
- 关于MyBatis中insert返回值与SQLserver触发器/存储过程返回执行结果的问题
- mybatis 进行插入操作,如何返回主键问题
- Mybatis insert后返回主键给实体对象
- 如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键