Mybatis之序列插入语句(Mysql和Oracle)

来源:互联网 发布:唯品会淘宝天猫哪个好 编辑:程序博客网 时间:2024/05/22 10:27

在使用mybatis根据ID自增长插入语句问题?

在mybatis核心配置文件中解决

MYSQL解决办法:

<!-- public void addDept(Dept dept);mysql支持自增主键;自增主键的获取,mybatis也是利用statement.getGeneratedKeys()要想前台获取添加的数字,添加两个属性useGeneratedKeys="true": 使用自增主键获取主键值keyProperty: 对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性 --><insert id="addDept" useGeneratedKeys="true" keyProperty="deptno" databaseId="mysql" >insert into dept(dname,loc) values (#{dname},#{loc});</insert>

Oracle解决办法:

<!--Oracle不支持自增;Oracle使用序列序列来模拟自增;每次插入的数据的主键是从序列中拿到的值:如歌获取到这个值? --> <insert id="addDept" databaseId="oracle" > <!-- keyProperty:查出的主键封装给JavaBean的哪个属性   order="BEFORE":当前SQL在插入之前运行  AFTER:当前SQL在插入之后运行  resultType: 查出数据的返回值类型    BEFORE运行顺序:  先运行selectKey查询id的sql;查出id的值封装给javaBean的id属性  再运行插入的SQL;就可以取出id属性对应的值  AFTER: 先 运行插入的SQL(从序列中取出新值作为id)  再运行selectKey查询id的sql --> <selectKey keyProperty="deptno" order="BEFORE" resultType="Integer"> <!-- 编写查询主键的SQL语句 --> <!-- BEFORE:-->SELECT seq_deptno.nextval FROM dual<!-- AFTER: SELECT seq_deptno.currval FROM dual --> </selectKey> <!-- 插入时的主键是从序列中拿到的 --><!-- BEFORE: -->insert into dept(deptno,dname,loc) values (#{deptno},#{dname},#{loc})<!-- AFTER:insert into dept(deptno,dname,loc) values (seq_deptno.nextval,#{dname},#{loc})--></insert> 



原创粉丝点击