目錄
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();
}