1.在自己的service接口中继承IService(mybatis-plus提供的CRUD接口),IService需提供泛型;
//这个接口mybatis不能自己实现
public interface AdminService extends IService<Admin> { }
2.实现自己的service接口并且继承mybatis-plus的ServiceImpl这个类,这个类支持泛型,需要提供一个mapper接口和实体类;
如果最service有特别的需求,可以通过在这里重写所需的方法即可,例如下面对save方法进行重写,对用户名密码进行格式判断。
@Service public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService { //实现我们自己Admin的service接口,继承mybatis的ServiceImpl的实现, //自定义sava方法,实现业务逻辑 @Override public boolean save(Admin entity) { //1.用户名不能重复 QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("username", entity.getUsername()); Integer count = baseMapper.selectCount(queryWrapper); if (count>0){ //存在相同用户名用户 throw new RuntimeException("存在相同用户名用户"); } //2.密码必须在6到12位之间 //首先判断密码不能为空 if (StringUtils.isEmpty(entity.getPassword())){ throw new RuntimeException("密码为空"); } //判断密码长度 int length = entity.getPassword().length(); if ((length<6)||(length>12)){ throw new RuntimeException("密码长度应为6-12之间"); } int insert = baseMapper.insert(entity); return insert==1; } }
测试
这里只需提供我们的service接口,因为上面的实现类通过@Service已经将对象托管至spring,我们可以通过注释@Resource将实现类注入进来。
@Test void test02(){ //创建一个条件对象 Admin admin = new Admin(); admin.setUsername("1211110"); admin.setRealName("张三"); admin.setPassword("121212"); boolean save = adminService.save(admin); System.out.println(save); }
总结
1.AdminService必须要有实现类,它不能像mapper一样mybatis会自动提供实现类;setSize()方法
2.分页中尽量不要使用setMaxLimit()方法,而应该使用setSize()方法,而且会默认给出10个数值,所以会覆盖setMaxLimit设置的