MyBatis-Plus中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑
说明:
- 通用 Service CRUD 封装
IService
接口,进一步封装 CRUD,采用get
查询单行、remove
删 除、save
插入、update
更新、list
查询集合、page
分页,前缀命名方式区分 Mapper 层避免混淆 - 泛型 T 为任意实体对象
- 建议如果存在自定义通用 Service方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
- 官网地址:https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F%
A3
1. 创建Service接口和实现类
/**
* UserService继承IService模板提供的基础功能
*/
public interface UserService extends IService<User> {
}
/**
* ServiceImpl实现了IService,提供了IService中基础功能的实现
* 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法,并在实现类中实现
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
2. 创建测试类
@SpringBootTest
public class MyBatisPlusServiceTest {
@Autowired
private UserService userService;
}
3. 测试Iservice的方法
1.测试查询记录数
@Test
public void testGetCount(){
// SELECT COUNT( * ) FROM user
long count = userService.count();
System.out.println("查询总记录数为"+count);
}
2.测试批量插入
@Test
public void testSaveBatch() {
// SQL长度有限制,海量数据插入单条SQL无法实行,
// 因此MP将批量插入放在了通用Service中实现,而不是通用Mapper
ArrayList<User> users = new ArrayList<>();
for (int i = 0; i < 5; i++) {
// User user = new User(null,"keke"+i,23+i,"123"+i+"qq.com");
User user = new User();
user.setName("keke"+i);
user.setAge(20+i);
user.setEmail("34464"+i+i+"@qq.com");
users.add(user);
}
boolean res = userService.saveBatch(users);
System.out.println(res);
}