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設置的