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

在使用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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值