mybatis 主键回显

本文介绍了在MyBatis中如何处理主键回显,包括当表的主键字段有自增规则时的配置,以及如何自定义主键规则并回填。通过在<insert>标签中设置keyProperty和useGeneratedKeys属性,可以利用数据库的自增特性获取主键值。对于无自增规则的表,可以使用selectKey子标签来定义自增规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.如果要插入数据的表的主键字段有自增的规则

示例:

<insert id="save"  keyProperty="id" useGeneratedKeys="true" parameterType="student">
    INSERT into<include refid="tableName"/>(studentName,phone,birth) 
    VALUE (#{studentName},#{phone},#{birth});
</insert>

用法:
      在<insert>标签中添加keyProperty=“主键字段”,useGeneratedKeys=”true”

字段解析:
       keyProperty:表示指定的属性作为主键

      useGeneratedKeys:如果为true,会使mybatis使用Jdbc的getGeneratedKeys()的方法来获取数据库内部生成得到主键。例如,mysql和sql server自动递增的字段,oracle的序列等,但是使用它的前提是必须要给出KeyProperty属性


2.自定义主键规则,并回填

假如我们要插入数据的表没有设置主键自增的规则,但是我们也要实现上面通样的效果,这时我们可以自己定义自增的规则。

示例:如果表里没有记录,主键初始值为1,如果存在记录,每次+2递增

<insert id="save"  keyProperty="id" useGeneratedKeys="true" parameterType="student">
        <selectKey keyProperty="id" resultType="int" order="BEFORE">
            select if(max(id) is null,1,max(id)+2)  from student;
        </selectKey>
        INSERT into<include refid="tableName"/>(id,studentName,phone,birth) 
        VALUE (#{id},#{studentName},#{phone},#{birth});
</insert>

讲解:这里用到了selectKey子标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值