通用 Service CRUD 封装IService接口,它采用 get 查询单行, remove 删除 ,list 查询集合, page 分页,前缀命名方式区分 Mapper 层接口避免混淆。通用Service的使用场景是,如果方法很简单,例如,就是一个插入,或者根据条件更新,就不用在再Service写方法了,使用通用Service提供的方法即可。如果有较多的业务逻辑,一般在service中自定义方法,自己的service继承通用service。定义方法中,使用通用service要注入mapper。
注意:可以2种方式(Service 接口和Mapper接口)的CRUD一起用。
1,定义一个接口继承 IService接口
public interface UserService extends IService{}
2,定义一个实现类,实现自定义的接口UserService之前要继承IService的实现类ServiceImpl。
/**
*IService:mp提供的接口。ServiceImpl:mp提供的接口实现类。
*ServiceImpl, T>是IService 的实现类。
*/
@Service
public class UserServiceImpl extends ServiceImpl implements UserService{}
3,测试类注入自定义UserService 接口
@Autowired
private UserService userService;
4,批量插入saveBatch
/**
* 插入(批量)
*
* @param entityList 实体对象集合
* @param batchSize 插入批次数量
*/
@Test
public void saveBatch() {
Collection entityList=new ArrayList();
entityList.add(new User().setName("zsf").setAge(1).setEmail("[email protected]"));
entityList.add(new User().setName("whh").setAge(21).setEmail("[email protected]"));
userService.saveBatch(entityList);
}
5,批量插入或批量修改saveOrUpdateBatch
/**
* 插入(批量)
*
* @param entityList 实体对象集合
* @param batchSize 插入批次数量
* 当有主键id存在的时候-修改update。
* 当无主键是增加insert。
*/
@Test
public void saveOrUpdateBatch() {
Collection entityList=new ArrayList();
//此修改
entityList.add(new User().setId(1168160961132040194L).setName("zsf").setAge(1).setEmail("[email protected]"));
//此添加
entityList.add(new User().setName("whh2").setAge(21).setEmail("[email protected]"));
entityList.add(new User().setName("whh3").setAge(11).setEmail("[email protected]"));
userService.saveOrUpdateBatch(entityList);
}
sql查看:
6,批量删除removeByIds
/**
* 删除(根据ID 批量删除)
* @param idList 主键ID列表
* SQL: DELETE FROM user WHERE id IN ( ? , ? )
*/
@SuppressWarnings("unchecked")
@Test
public void removeByIds() {
long[] array= {1168160961547276289L,1168162405327331330L};
List
7,批量更新updateBatchById
/**
* 根据ID 批量更新
* @param entityList 实体对象集合
* @param batchSize 更新批次数量
* SQL:UPDATE user SET age=?, email=? WHERE id=?
*/
@Test
public void updateBatchById() {
Collection entityList=new ArrayList();
entityList.add(new User().setAge(1).setEmail("[email protected]").setId(1168110720185864193L));
entityList.add(new User().setAge(1).setEmail("[email protected]").setId(1168160961132040194L));
userService.updateBatchById(entityList);
}
8,查询总记录数count
/**
* 查询总记录数
* SQL:SELECT COUNT( 1 ) FROM user
*/
@Test
public void count() {
int count = userService.count();
System.out.println(count);
}
9,了解更多方法的用法,请查询源码或者官方文档
https://mp.baomidou.com/guide/crud-interface.html#service-crud-%E6%8E%A5%E5%8F%A3