Mybatis 获取 insert 操作返回值主键

一、关于返回值

在使用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 中转义字符

第一种方法: 

扫描二维码关注公众号,回复: 15241486 查看本文章

附:XML转义字符

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

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

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

猜你喜欢

转载自blog.csdn.net/w2462140956/article/details/88667960
今日推荐