Topfox 快速开发框架更新了 版本1.2.5

栏目: 软件资讯 · 发布时间: 5年前

内容简介:必备 详细介绍和例子源码: https://gitee.com/topfox/topfox-sample topfox 介绍 在 srpingboot2.x.x 和MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 编程规范参考《阿里巴巴Java开发手册》 借...

必备

topfox 介绍

在 srpingboot2.x.x 和MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

编程规范参考《阿里巴巴 Java 开发手册》

借鉴 mybaties plus 部分思想

特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 集成 Redis 缓存: 自带Redis缓存功能, 支持多主键模式, 自定义redis-key. 实现对数据库的所有操作, 自动更新到Redis, 而不需要你自己写任何代码; 当然也可以针对某个表关闭.
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:可自由配置,充分利用Redis提高性能, 完美解决主键问题. 支持多主键查询、修改等
  • 内置分页实现:基于 MyBatis 物理分页,开发者无需关心具体操作,写分页等同于普通查询
  • 支持devtools/jrebel热部署
  • 热加载 支持在不使用devtools/jrebel的情况下, 热加载 mybatis的mapper文件
  • 内置全局、局部拦截插件:提供delete、update 自定义拦截功能
  • 拥有预防 Sql 注入攻击功能
  • 无缝支持spring cloud: 后续提供分布式调用的例子

更新日志

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

  • 多主键的支持, 包括: 更新, 删除, 查询, 数据校验组件, 修改日志组件;
  • java 远程调用返回空对象的处理;
  • 技术文档修改

 

功能强大的查询

 

4.2.1. 条件匹配器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

4.2.2. 条件匹配器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' )

4.3. 高级查询 带分组, 排序, 自定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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

终极算法

终极算法

[美] 佩德罗·多明戈斯 / 黄芳萍 / 中信出版集团 / 2017-1-1 / 68.00元

算法已在多大程度上影响我们的生活? 购物网站用算法来为你推荐商品,点评网站用算法来帮你选择餐馆,GPS系统用算法来帮你选择最佳路线,公司用算法来选择求职者…… 当机器最终学会如何学习时,将会发生什么? 不同于传统算法,现在悄然主导我们生活的是“能够学习的机器”,它们通过学习我们琐碎的数据,来执行任务;它们甚至在我们还没提出要求,就能完成我们想做的事。 什么是终极算法? ......一起来看看 《终极算法》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具