目录
1 前言
2 使用方法
2.1 继承ServiceImpl,>
2.2 基础业务开发的使用
2.3 复杂业务开发的使用
2.3 Lambda查询
2.4 Lambda更新
1 前言
我本以为Mapper层的类能够继承BaseMapper<XXX>,而不用我们手动写一些mapper方法已经够离谱了。没想到海油膏手,一部分服务层的方法也能不用我们自己写,具体如下。
2 使用方法
2.1 继承ServiceImpl<XXXMapper, XXX>
前提是Mapper层也要继承BaseMapper<XXX>,不然启动项目会报错,示例代码如下:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}
2.2 基础业务开发的使用
比如说:新增用户。那么代码如下,什么都不用写,直接使用自带的方法即可。
public class UserController {public void saveUser(){//其它代码...userService.save(user);}
}
2.3 复杂业务开发的使用
比如说:根据id扣工资。这里就没有自带的方法给你用,开发流程就和Mybatis差不多了,不过服务层有个地方需要注意,那就是不需要再注入Mapper依赖了,直接使用baseMapper即可,如下。
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {public void deductBalance(xx) {//就不用@Autowired之类了baseMapper.deductBalance(xx);}
}
如果要问为什么,那就是内部已经做了@Autowired的操作了。
2.3 Lambda查询
lambdaQuery()
在上式后面加个点,就会弹出一堆东西,如下,这些都是用来构造查询条件的。
条件构造完之后,再来一个点,就可以选择是查询一条还是多条,如下。
函数 | 作用 |
---|---|
one() | 查询一条 |
list() | 查询多个 |
page() | 分页查询 |
exists() | 判断是否存在 |
count() | 计数 |
最后直接return,是的,Mapper层不需要写了。
public List<User> queryUsers() {//其它代码...return lambdaQuery().like(xx).eq(xx).ge(xx).list();
}
2.4 Lambda更新
lambdaUpdate()
和Lambda查询差不多,就不多讲了。不过一定要记得在最后加上个update(),如下。
public void deductBalance() {//其它代码...lambdaUpdate()//三个参数分别为,条件,属性名(可以用lambda方法),设置的值.set(remainBalance == 0, User::getStatus, UserStatus.FROZEN).eq(xx).update();
}