Loading... ## 关于通用mapper中的insertList()方法 **通用mapper中的insertList()方法有两个:** **1. tk.mybatis.mapper.common.special.InsertListMapper包下的insertList()方法:** **使用该方法的实体类主键必须是自增的(需要在实体类中指出)。** 如果实体的**主键名为’id’,同时主键自增** 。在不修改代码的情况下,使用insertList()方法实现的批量插入数据后**通用mapper能自动回写主键值到实体对象中** 。 如以下实体类和对应mapper: ```java @Data @Table(name = "user") public class User { @Id @KeySql(useGeneratedKeys = true) private Integer id; private String username; private String desc; } ``` ```java public interface UserMapper extends InsertListMapper<User> { } ``` 如果实体类主键名不是id,同时**实体类主键是自增的** ,想要实现实体类主键回写,需要**重写insertList()方法** ,其实就是修改了注解上的值,把@Options注解上的keyProperty值改为自己实体类的主键名 如以下实体类和对应的mapper: ```java @Data @Table(name = "user") public class User { @Id @KeySql(useGeneratedKeys = true) private Integer uid; private String username; private String desc; } ``` ```java public interface UserMapper extends Mapper<User>, InsertListMapper<User> { @Options(keyProperty = "uid",useGeneratedKeys = true) @InsertProvider(type = SpecialProvider.class, method = "dynamicSQL") int insertList(List<User> recordList); } ``` **2. tk.mybatis.mapper.additional.insert.InsertListMapper包下的insertList()方法:** 该方法不支持主键策略,需要在实体类中指定主键。该方法执行后**不会回写实体类的主键值** 。 最后修改:2022 年 01 月 09 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏