1.自定义的MyBaseMapper 继承 mybatis-plus的BaseMapper
public interface MyBaseMapper<T> extends BaseMapper<T> { /** * <p>功能说明: 通用分页查询列表</p> * 这个就是抽取出来的公共方法 */ <R,E> IPage<R> listByPage(Page page, @Param("param") E e); }2.UserInfoMapper 继承 MyBaseMapper
public interface UserInfoMapper extends MyBaseMapper<UserInfo> { }3.编写MyBaseService
public interface MyBaseService<T> { /** * <p>功能说明: 通用分页查询</p> */ <E,R> IPage<E> listByPage(R r); }4.UserInfoService 继承 MyBaseService
public interface UserInfoService extends MyBaseService<UserInfo> { }5.MyBaseServiceImpl 实现 MyBaseService
public abstract class MyBaseServiceImpl<T> implements MyBaseService<T> { private MyBaseMapper<T> myBaseMapper; // 因为T是泛型,所以要set的方法把泛型的类型传进来 // 谁继承MyBaseServiceImpl,谁就要调用set方法传进来 // 这样就能知道泛型的具体类型 public void setMyBaseMapper(MyBaseMapper<T> myBaseMapper){ this.myBaseMapper = myBaseMapper; } @Override public <E, R> IPage<E> listByPage(R r) { return myBaseMapper.listByPage(null,r); } }6.UserInfoServiceImpl 继承 MyBaseServiceImpl 实现 UserInfoService
@TransactionalService public class UserInfoServiceImpl extends MyBaseServiceImpl<UserInfo> implements UserInfoService { private UserInfoMapper userInfoMapper; // @Resource放到set方法上 // 创建set方法 // 调用父类的set方法,把参数传进去 @Resource public void setUserInfoMapper(UserInfoMapper userInfoMapper){ this.userInfoMapper = userInfoMapper; this.setMyBaseMapper(userInfoMapper); } }