mybatis在insert后通过useGeneratedKeys获取自增主键

本文介绍在MyBatis中如何使用mapper.xml配置实现主键自增及自动封装到实体类属性,通过具体SQL插入语句示例,展示useGeneratedKeys与keyProperty属性的正确用法。

引言:在mapper.xml中:useGeneratedKeys="true"、keyProperty="id",这两个属性将主键封装到id属性上。sql插入执行成功后从实体getId即可。注意:非insert的返回值(影响行数)

<insert id="addRole" parameterType="com.ycs.community.sysbo.domain.po.RolePo" keyProperty="id" useGeneratedKeys="true">
        INSERT INTO t_sys_role(code,
			`name`,
			data_scope,
            `level`,
			`desc`,
			create_time
		)
		VALUES (
			#{code,jdbcType=VARCHAR},
	  		#{name,jdbcType=VARCHAR},
	  		#{dataScope,jdbcType=VARCHAR},
	  		#{level,jdbcType=VARCHAR},
	  		#{desc,jdbcType=VARCHAR},
	  		#{creTm,jdbcType=BIGINT}
		)
    </insert>

MyBatis-Plus中,有两种常见的方法可以使insert方法返回自主键。 第一种方法是使用`selectKey`标签进行配置。示例代码如下: ```xml <insert id="insert"> insert into ums_admin(username, password, icon, email, nick_name, note, create_time, login_time) values (#{username}, #{password}, #{icon}, #{email}, #{nickName}, #{note}, #{createTime}, #{loginTime}) <selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert> ``` 该方法通过`selectKey`标签在插入操作后获取的ID,并将其赋值给实体类的对应属性[^2]。 第二种方法是设置`useGeneratedKeys`和`keyProperty`属性。示例代码如下: ```xml <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="TbUser"> INSERT INTO tb_user SET <if test="name!=null"> name = #{name}, </if> <if test="sex!=null"> sex = #{sex}, </if> <if test="tel!=null"> tel = #{tel}, </if> <if test="email!=null"> email=#{email}, </if> create_time = #{createTime} </insert> ``` 其中,`useGeneratedKeys`设置为`true`表示开启主键,`keyProperty`指定数据库主键对应的实体类属性,将自主键赋值给传入的实体类参数。插入并获取主键值的代码如下: ```java //插入 userDao.insert(tbUser); //tbUser.getId()获取到自主键值 System.out.println(tbUser.getId()); ``` 使用这种方法,在执行插入操作后,可直接通过实体类对象的对应属性获取主键值[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值