Mybatis学习 — insert元素

一、主键回填

        主键回填,JDBC中的Statement对象在执行插入的SQL后,可以通过getGennerateKeys方法获得数据库生成的主键(需要数据库驱动支持),还要配置其属性keyProperty或keyColumn,告诉系统把生成的组件放入哪个属性中。

 <insert id="insertRole" parameterType="Role" useGeneratedKeys="true" keyProperty="roleId">
        INSERT INTO role(ROLE_NAME,ROLE_DESC) VALUES(#{roleName},#{roleDesc})
    </insert>
  • useGenneratedKeys = “true”
  • keyProperty=“roleId” 告诉Mybatis把生成的主键放入哪个属性当中
二、自定义主键

selectKey主要用于主键暂不支持自动增加的表

  • keyProperty:将Pojo类定义的哪个属性设置为主键
  • order:何时生成这条SQL语句,BEFORE为在当前定义的SQL之前执行
  • resultType,告诉myBatis返回什么类型的结果集
  <insert id="insertRole" parameterType="Role">
        <selectKey keyProperty="roleId" order="BEFORE" resultType="int">
            select if (max(ID)=null,1,max(ID)+3) from role
        </selectKey>
         INSERT INTO role(ID,ROLE_NAME,ROLE_DESC) VALUES(#{roleId},#{roleName},#{roleDesc})
    </insert>

以上配置表示:

  • 当角色表为空时,将id设为1
  • 当角色记录表不为空时,id设置为当前id加3
    在测试时,当角色表的记录为空时,运行程序报错,原因没找到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值