版本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