欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-09 09:18:44
...
<?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>  
相关标签: 标签