您的位置:首页 > 其它

selectKey 这个标签主要用于Insert数据时不支持主键自动生成的问题

2017-12-06 14:26 369 查看
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
如果使用xml的方式进行接口映射  namespace的值必须是接口的全路径
-->
<mapper namespace="com.et.mybatis.selectKey.SqlKeyMapper">
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" order="BEFORE" resultType="int">
<!-- selectKey 这个标签主要用于Insert数据时不支持主键自动生成的问题
如果在oracle中 应该写的SQL语句是  select 序列.nextval from dual
如果在mysql 中应该写的SQL语句是    select max(主键列)+1 from 对应表
☆  ☆  ☆  SelectKey需要注意order属性。
MySQL一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。
Oracle这样取序列的情况,需要设置为before,否则会报错。
-->
select id.nextval from dual
select max(id)+1 from arcticle
</selectKey>
insert into arcticle(id,title,content,userid) values(#{id},#{title},#{content},#{userid})
</insert>
</mapper>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  标签
相关文章推荐