MyBatis 返回insert注解操作主键

在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键。但是,在默认情况下,insert操作返回的是一个int值,它并非表示主键id,而是表示当前SQL语句影响的行数。

一、使用 @Insert 注解时 

@Insert("insert into file(create_at,update_at,file_name,file_url,file_md5) VALUES (#{create_at},#{update_at},#{file_name},#{file_url},#{file_md5})")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") //该注解用于返回主键
void save(File file);

如上,@Options注解的属性大概解释

useGeneratedKeys:指对于支持自动生成记录主键的数据库,如:MySQL,此时设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID

 keyProperty:指传入对象的成员变量

keyColumn:指定数据库table中的主键

在调用了插入方法之后,@Options注解会自动为表的主键字段设置自增的值,并把它赋值给作为入参的DTO,进而可以直接从这个对象中获取新生成记录的主键

二、使用 xml 时

<insert id="insert" parameterType="com.wzp.history.back.model.File" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
  insert into file (create_at, update_at, file_name, file_url, file_md5) values (#{create_at,jdbcType=BIGINT}, #{update_at,jdbcType=BIGINT}, #{file_name,jdbcType=VARCHAR}, #{file_url,jdbcType=VARCHAR}, #{file_md5,jdbcType=VARCHAR})
</insert>

如上示例,将@Options注解的三大属性分别写到上面示例位置就行

发布了25 篇原创文章 · 获赞 28 · 访问量 5451

猜你喜欢

转载自blog.csdn.net/wzp12321/article/details/103875848
今日推荐