Mybatis-Plus批量插入用法详解
什么是Mybatis-Plus?
Mybatis-Plus 是一个 Mybatis 的增强工具,在 Mybatis 的基础上进行了简单的封装,使其用起来更加方便和简洁。它提供了一系列的增强功能,诸如自动化 CRUD 操作、分页、排序、关联查询等功能,可以大大提高开发效率和代码质量。
Mybatis-Plus批量插入的用法
在实际开发中,我们常常需要对数据进行批量插入操作。在 Mybatis-Plus 中,批量插入的基本用法就是通过 insertBatch
方法实现的。
insertBatch方法的使用
/**
* 批量插入
*
* @param entityList 实体对象列表
* @return 插入成功记录数
*/
int insertBatch(@Param("list") Collection<T> entityList);
从方法签名可以看出,我们需要传入一个实体对象的集合 Collection<T> entityList
,然后就可以执行批量插入操作,返回插入成功的记录数。
以下是一段示例代码:
public int saveBatch(List<User> userList) {
return userMapper.insertBatch(userList);
}
批量插入的注意事项
在使用 insertBatch
方法时,需要注意以下几点:
- 传入的实体对象列表不能为空
- 如果有主键自增的情况,需要在实体类上加上
@TableId(type = IdType.AUTO)
注解,表示该字段为自增类型 - 如果是 Oracle 数据库,需要将
insertBatch
改为insertBatchSomeColumn
,并且在表中必须要有一个默认值为 null 的字段,作为批量操作时的占位符。
示例1:批量插入用户信息
假设我们有一个用户实体类 User
,其中包含了用户的 id、name 和 age,现在需要批量插入一批用户信息。
首先,我们需要在 User
类上添加主键自增的注解:
@TableId(type = IdType.AUTO)
private Long id;
然后,编写插入操作:
public int saveBatch(List<User> userList) {
return userMapper.insertBatch(userList);
}
这里的 userMapper
是通过 @Autowired
注解注入的一个 Mapper 对象。
接着,我们可以在测试类中编写以下代码来测试批量插入操作是否成功:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testBatchInsert() throws Exception {
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setName("张三");
user1.setAge(18);
userList.add(user1);
User user2 = new User();
user2.setName("李四");
user2.setAge(20);
userList.add(user2);
int rows = userMapper.insertBatch(userList);
assert rows == userList.size();
}
}
示例2:批量插入商品信息
现在,我们需要批量插入一些商品信息,商品实体类 Product
包括了商品的 id、name 和 price。
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Double price;
编写批量插入操作:
public int saveBatch(List<Product> productList) {
return productMapper.insertBatch(productList);
}
测试批量插入操作:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductMapperTest {
@Autowired
private ProductMapper productMapper;
@Test
public void testBatchInsert() throws Exception {
List<Product> productList = new ArrayList<>();
Product product1 = new Product();
product1.setName("苹果");
product1.setPrice(5.0);
productList.add(product1);
Product product2 = new Product();
product2.setName("梨");
product2.setPrice(3.5);
productList.add(product2);
int rows = productMapper.insertBatch(productList);
assert rows == productList.size();
}
}
总结
Mybatis-Plus 的批量插入操作可以大大提高数据插入的效率,需要注意的是主键自增的注解和 Oracle 数据库中的插入方式,希望本篇文章可以对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus批量插入用法详解 - Python技术站