版本1.2.5 更新日誌 2019-07-30
版本1.2.4 更新日誌 2019-07-24
新增 一級緩存開關 top.service.thread-cache
新增 二級緩存開關 top.service.redis-cache
刪除 top.service.open-redis
在 srpingboot2.x.x 和MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。
編程規範參考《阿里巴巴Java開發手冊》
借鑒 mybaties plus 部分思想
特性:
功能強大的查詢
條件匹配器Condition 查詢一
以下僅僅是條件匹配器的部分功能, 更多功能等待用戶挖掘.
@RestController
@RequestMapping("/condition")
public class ConditionController {
@Autowired
UserService userService;
/**
* 條件匹配器的一個例子
*/
@GetMapping("/query1")
public List<UserDTO> query1(){
//**查詢 返回對象 */
List<UserDTO> listUsers = userService.listObjects(
Condition.create() //創建條件匹配器對象
.between("age",10,20) //生成 age BETWEEN 10 AND 20
.eq("sex","男") //生成 AND(sex = '男')
.eq("name","C","D","E")//生成 AND(name = 'C' OR name = 'D' OR name = 'E')
.like("name","A", "B") //生成 AND(name LIKE '%A%' OR name LIKE '%B%')
//不等
.ne("name","張三","李四")
//等同於 .eq("substring(name,2)","平")
.add("substring(name,2)='平' ")//自定義條件
.le("loginCount",1)//小於等於
.lt("loginCount",2)//小於
.ge("loginCount",4)//大於等於
.gt("loginCount",3)//大於
.isNull("name")
.isNotNull("name")
);
return listUsers;
}
}
生成的WHERE條件如下:
SELECT id,code,name,password,sex,age,amount,mobile,isAdmin,loginCount,lastDate,deptId,createUser,updateUser
FROM users a
WHERE age BETWEEN 10 AND 20
AND (sex = '男')
AND (name = 'C' OR name = 'D' OR name = 'E')
AND (name LIKE '%A%' OR name LIKE '%B%')
AND (name <> '張三' AND name <> '李四')
AND substring(name,2)='平'
AND (loginCount <= 1)
AND (loginCount < 2)
AND (loginCount >= 4)
AND (loginCount > 3)
AND name is null
AND name is not null
LIMIT 0,6666
條件匹配器Condition 查詢二
@RestController
@RequestMapping("/condition")
public class ConditionController {
@Autowired
UserService userService;
@GetMapping("/query2")
public List<UserDTO> query2(){
//**查詢 返回對象 */
List<UserDTO> listUsers = userService.listObjects(
userService.where() // 等同於 Condition.create() 創建一個條件匹配器對象
.eq("concat(name,id)","A1") //生成 (concat(name,id) = 'A1')
.eq("concat(name,id)","C1","D2","E3")//生成 AND (concat(name,id) = 'C1' OR concat(name,id) = 'D2' OR concat(name,id) = 'E3' )
);
return listUsers;
}
}
生成的WHERE條件如下:
SELECT id,code,name,password,sex,age,amount,mobile,isAdmin,loginCount,lastDate,deptId,createUser,updateUser
FROM users a
WHERE (concat(name,id) = 'A1')
AND (concat(name,id) = 'C1'
OR concat(name,id) = 'D2'
OR concat(name,id) = 'E3' )
高級查詢 帶分組, 排序, 自定select 后欄位, 指定分頁的查詢
利用查詢構造器 EntitySelect 和 Condition的查詢
實體查詢構造器
/**
* 核心使用 繼承了 topfox 的SimpleService
*/
@Service
public class CoreService extends SimpleService<UserDao, UserDTO> {
public List<UserDTO> demo2(){
List<UserDTO> listUsers=listObjects(
select("name, count('*')") //通過調用SimpleService.select() 獲得或創建一個新的 EntitySelect 對象,並返回它
.where() //等同於 Condition.create()
.eq("sex","男") //條件匹配器自定義條件 返回對象 Condition
.endWhere() //條件結束 返回對象 EntitySelect
.orderBy("name") //設置排序的欄位 返回對象 EntitySelect
.groupBy("name") //設置分組的欄位 返回對象 EntitySelect
.setPage(10,5) //設置分頁(查詢第10頁, 每頁返回5條記錄)
);
return listUsers;
}
}
輸出sql如下:
SELECT name, count('*')
FROM users a
WHERE (sex = '男')
GROUP BY name
ORDER BY name
LIMIT 45,5
[admin
]