版本1.2.5 更新日志 2019-07-30
CamelHelper为驼峰和下划线命名互转的处理类
BeanUtil.toUnderlineName 删除, 用 CamelHelper.toUnderlineName 代替
BeanUtil.toCamelCase 删除, 用 CamelHelper.toCamel 代替
版本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