在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键。但是,在默认情况下,insert操作返回的是一个int值,它并非表示主键id,而是表示当前SQL语句影响的行数。
一、使用 @Insert 注解时
1 | @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:指对于支持自动生成记录主键的数据库,如:MySQL,此时设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID
- keyProperty:指传入对象的成员变量
- keyColumn:指定数据库table中的主键
在调用了插入方法之后,@Options注解会自动为表的主键字段设置自增的值,并把它赋值给作为入参的DTO,进而可以直接从这个对象中获取新生成记录的主键
二、使用 xml 时
1 | <insert id="insert" parameterType="com.wzp.history.back.model.File" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> |
如上示例,将@Options注解的三大属性分别写到上面示例位置就行