sqltoy-orm 4.13.8 发版

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

内容简介:开源地址: github: https://github.com/chenrenfei/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugi...

开源地址:

更新内容

1、 sql 执行时加上了签名注释,目前以sql id为签名,便于运维通过数据库来跟踪sql的归属

mysql 为例: 在sql开始部位增加了id,便于运维通过数据库日志快速定位问题sql的归属

```sql
/* id=qstart_order_search */  select  ORDER_ID,      DEVICE_TYPE from xxx
```

感谢网名cmd的用户反馈此意见!

2、升级spring和springboot的版本依赖到5.2.8 和 2.3.2 版本
3、quickvo增加一个min版本,不支持yml配置,减少文件大小

快速了解 sqltoy-orm:

  • sqltoy是全新一代的ORM框架,兼顾jpa对象式操作的优势,同时极大增强了查询功能,辅以科学的sql编写模式、巧妙的缓存翻译集成、极致的分页优化以及针对大规模数据下的分库分表、超复杂场景下的 mongodb 、elastic、clickhouse组合应用!
  • sqltoy给你带来了多种主键策略,除常规的UUID、sequence、identity外,还包含雪花算法和基于 redis 产生有规则的业务主键等。
  • sqltoy还提供了针对统计分析的:数据旋转、无限级分组计算、同比环比等来减少开发者写复杂sql。
  • sqltoy在很多方面提供了极为实用的方法,如:树形表处理、isUnique、findTop、getRandomResult、updateFetch等等
  • sqltoy不走jooq全对象式、mybatis全sql式这种不是天就是地的极端路子,紧贴项目实战发展起来的框架,让各自技术以合理的方式应用于合理的地方!

简要举例介绍(因篇幅问题部分举例):

  • JPA式的CRUD,但规避了其不足,提供了默认的SqlToyCRUDService(简单的则无需写service方法) 和 SqlToyLazyDao(开发无需自己写Dao,只需要写Service业务逻辑),可以了解类似于update、updateAll、saveOrUpdate等内在逻辑,减少了数据库交互,考虑了高并发和业务对象变更的特征!
 @Autowired
 private SqlToyCRUDService sqlToyCRUDService;

 //基于对象保存 
 sqlToyCRUDService.save(staffInfo);

 //基于对象更新(字段值为null的不会参与变更) 
 sqlToyCRUDService.update(staffInfo);
 
 //深度变更,全部字段都参与变更
 sqlToyCRUDService.updateDeeply(staffInfo);
 
 //基于对象更新(制定强制修改的字段) 
 sqlToyCRUDService.update(staffInfo,new String[]{"staffName","onDuty"});

 //基于对象更新 
 sqlToyCRUDService.saveOrUpdate(staffInfo);

 //加载对象
 sqlToyCRUDService.load(new StaffInfoVO("S190715009"));

 //加锁获取对象
 sqlToyCRUDService.load(new StaffInfoVO("S190715009"),LockMode.UPGRADE);

 //判断对象是否唯一
 sqlToyCRUDService.isUnique(staffInfo, "staffCode");

 //delete\deleteAll\updateAll\loadAll 等等不一一写完
  • 单表等简单的查询和变更操作,提供了链式操作
//单表对象查询,直接传参模式
List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class,
				EntityQuery.create().where("#[staffName like ?] #[ and status=?]").values("陈", 1).lock(LockMode.UPGRADE)
						.orderBy("staffName").orderByDesc("createTime"));

//单表查询,对象传参模式
List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class,
				EntityQuery.create().where("#[staffName like :staffName] #[ and status=:status]")
						.values(new StaffInfoVO().setStatus(1).setEmail("test3@aliyun.com")));


//代码中链式查询并删除
Long deleteCount = sqlToyLazyDao.deleteByQuery(StaffInfoVO.class,
				EntityQuery.create().where("status=:status").values(new StaffInfoVO().setStatus(1)));

//链式变更
Long updateCount = sqlToyLazyDao.updateByQuery(StaffInfoVO.class,
				EntityUpdate.create().set("staffName", "张三").where("staffName like ? and status=?").values("陈", 1));
  • 更强大的查询,sqltoy强调复杂查询建议放置于xml中跟代码分离(但是可以写在代码中的),不要见xml就反,请深入了解之后再反!
//sqltoy统一的规则就是直接传递sql语句或者对应的sqlId,并不是说sql只能写在xml中(推荐但不绝对)
findBySql(final String sqlOrSqlId, final String[] paramsNamed, final Object[] paramsValue,
			final Class<T> voClass)

//嫌弃上面的格式化传参也可以使用这样链式查询
sqlToyLazyDao.findByQuery(new QueryExecutor("sqltoy_order_search").names("orderId", "authedOrganIds")
				.values(null, authedOrgans).resultType(DeviceOrderInfoVO.class));
  • sqltoy提供了最简洁的动态sql编写

sqltoy-orm 4.13.8 发版

我们对比一下mybatis的实现(很简单的sql写的如此让人不愿意写!)

sqltoy-orm 4.13.8 发版

  • 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率

sqltoy-orm 4.13.8 发版

  • 极致分页优化

sqltoy-orm 4.13.8 发版

  • 旋转数据并进行环比计算

sqltoy-orm 4.13.8 发版


以上所述就是小编给大家介绍的《sqltoy-orm 4.13.8 发版》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

认知盈余

认知盈余

[美] 克莱·舍基 / 胡泳、哈丽丝 / 中国人民大学出版社 / 2011-12 / 49.80元

“互联网革命最伟大的思考者”克莱•舍基 继《未来是湿的》之后最新力作 看自由时间如何变革世界的未来 如果说《未来是湿的》揭示的是“无组织的组织力量”, 那么《认知盈余》揭示的就是 “无组织的时间力量”。 腾讯董事会主席兼首席执行官马化腾首度亲笔作序倾情推荐 克莱•舍基说,美国人一年花在看电视上的时间大约2 000亿个小时,而这几乎是2 000个维基百科项目一年所需要的......一起来看看 《认知盈余》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

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

HTML 编码/解码