Mybatis 获取 insert 操作返回值主键

本文聚焦MyBatis持久层,介绍insert操作获取返回值相关内容。默认insert等语句返回操作记录条数,重点讲解获取insert产生的主键。分别阐述了使用xml文件配置插入和利用注解操作来获取新插入记录id值的方法,还补充了xml中转义字符的处理方式。

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

一、关于返回值

在使用mybatis做持久层时,insert、update、delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数;而记录条数可以直接获取,下面主要是讲解关于获取 insert 是产生的主键。

二、使用 xml 文件配置插入

1、简要阐述:实体类User,在com.dao包下:

public class User implements Serializable{
	
    private String id;
    private String name;

    ...

}

 2、xml 的操作文件配置如下:

<!-- useGeneratedKeys="true" 把新增加的主键赋值到自己定义的keyProperty(id)中 -->
<insert id="saveUser" parameterType="com.dao.User" useGeneratedKeys="true" keyProperty="id">
	insert into tbl_user ...
</insert>

3、在 service 层中就可以获取到刚新插入记录的 id 值:

//调用自定义的插入方法咯,插入新的一条记录 参数user为实体类对象
userDao.saveUser(user);

//获取新插入记录的id列的值
String id = user.getId();

三、利用注解操作

1、简要阐述:实体类User,在com.dao包下:

public class User implements Serializable{
	
    private String id;
    private String name;

    ...

}

 2、Dao 层方法操作如下:

@Insert("INSERT INTO user ('name') VALUES (#{user.name})")
@Options(useGeneratedKeys=true, keyProperty="id")
public void saveUser(User user);

3、在 service 层中就可以获取到刚新插入记录的 id 值:

//调用自定义的插入方法咯,插入新的一条记录 参数user为实体类对象
userDao.saveUser(user);

//获取新插入记录的id列的值
String id = user.getId();

四、补充一下 xml 中转义字符

第一种方法: 

附:XML转义字符

&lt;     <   小于号   
&gt;     >   大于号   
&amp;     &   和   
&apos;     ’   单引号   
&quot;     "   双引号   

第二种方法:
因为这个是xml格式的,所以不允许出现类似">"这样的字符,但是可以使用<![CDATA[ ]]>符号进行说明,此符号不进行解析,判断逻辑写在其内部!
mapper.xml 示例如下:

<if test="startTime != null ">
    AND <![CDATA[ record_time >= #{startTime,jdbcType=DATE}  ]]>
</if>

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值