优雅的 ORM 框架 sqltoy-orm-4.11.9 发版了
声明:
如果您的数据规模较小或者做前置交易类系统即较少涉及复杂查询领域的,可以忽视本框架!因为针对常规的CRUD sqltoy跟大家并无较大差异!
如果您的数据规模较大,涉及相对复杂的查询已经影响到了用户体验,可以深入了解sqltoy,对你会有较大的帮助!
开源地址:
- github: https://github.com/chenrenfei/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
更新内容
1、支持保留字处理,对象操作自动增加保留字符号,跨数据库sql自动适配
2、重新编写修复StringUtil 分隔符号切割函数splitExcludeSymMark( 在sqltoy简单场景下不受影响)
3、增加缓存数据获取为空的日志提醒,,给开发更多信息
4、查询返回结果支持List<Object[]>,同时支持resultType 直接给Map.class等接口(之前必须是HashMap等实现类)、
5、quickvo支持yml格式的配置文件
6、增强sql执行输出
#xml配置模式
<bean id="sqlToyContext" name="sqlToyContext" class="org.sagacity.sqltoy.SqlToyContext"
init-method="initialize" destroy-method="destroy">
<!-- 项目中使用到的保留字定义,多个保留字则用逗号分隔 -->
<property name="reservedWords" value="maxvalue,minvalue"/>
<!-- 其他配置项目此处省略 -->
</bean>
# yml模式
spring:
sqltoy:
reservedWords: maxvalue,minvalue
sqltoy特点说明:
- 支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch等
- 具有JPA模式的CRUD功能(即CRUD无需写sql),无需写Dao,sqltoy提供了SqlToyLazyDao,同时提供了quickvo从数据库生成POJO。
- 根本上杜绝了sql注入问题
- 最科学的sql编写方式
* sqltoy的sql编写(支持嵌套)
select *
from sqltoy_device_order_info t
where #[t.ORDER_ID=:orderId]
#[and t.ORGAN_ID in (:authedOrganIds)]
#[and t.STAFF_ID in (:staffIds)]
#[and t.TRANS_DATE>=:beginDate]
#[and t.TRANS_DATE<:endDate]
* mybatis同样功能实现
select *
from sqltoy_device_order_info t
<where>
<if test="orderId!=null">
and t.ORDER_ID=#{orderId}
</if>
<if test="authedOrganIds!=null">
and t.ORGAN_ID in
<foreach collection="authedOrganIds" item="order_id" separator="," open="(" close=")">
#{order_id}
</foreach>
</if>
<if test="staffIds!=null">
and t.STAFF_ID in
<foreach collection="staffIds" item="staff_id" separator="," open="(" close=")">
#{staff_id}
</foreach>
</if>
<if test="beginDate!=null">
and t.TRANS_DATE>=#{beginDate}
</if>
<if test="endDate!=null">
and t.TRANS_DATE<#{endDate}
</if>
</where>
- 缓存翻译大幅提升性能,减少多表关联,让sql直观可维护
- 最高等级的分页优化
- 支持用算法代替sql实现行列转换、同比环比、分组汇总等
- 支持分库分表
- sqltoy支持跨数据库函数自适应:一套sql可以自适应多种数据库
- 提供了5种默认的非数据库相关的主键策略
1、shortNanoTime 22位有序安全ID,格式: 13位当前毫秒+6位纳秒+3位主机ID
2、nanoTimeId 26位有序安全ID,格式:15位:yyMMddHHmmssSSS+6位纳秒+2位(线程Id+随机数)+3位主机ID
3、uuid:32 位uuid
4、SnowflakeId 雪花算法ID
5、redisId 基于redis 来产生规则的ID主键
- 提供了通用字段赋值处理
- 提供了树形表的统一处理机制
- sql文件更新自动重载,便于开发阶段无需重启应用
- 慢sql统计功能

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
云办公系统 skyeye v3.1.6 发布,学校模块更新
云办公系统skyeye v3.1.6发布,本次更新主要以学校模块为主。 更新内容: 学校模块试卷管理新增其他阅卷人管理 学校模块班级信息新增当前班级和历史班级区分 学校模块新增年级开始时间设定 学校模块新增我带领的历史班级查阅 笔记模块样式调整,和有道统一战线 ERP模块新增bom表设计,可设计多种商品方案 系统所有textarea界面样式更新,新增字数提醒,复制,还原,清除功能 效果图: 效果图 效果图
-
下一篇
🔥不会状态机?不知道状态模式?不会利用它来减少if else并解耦?来看看这篇文章!!!
引言 状态模式大家可能初听会很陌生,这种模式有什么用?我就是个CRUD BOY,面对不同的状态,我一个状态一个状态的判断,if else、if else...... 不断的来写不同的逻辑它不香吗? 香! 但是作为一个杰出的后浪代表,仅仅如此怎能满足我对知识的欲望! 我们知道面向对象的设计模式有七大基本原则: 开闭原则(Open Closed Principle,OCP) 单一职责原则(Single Responsibility Principle, SRP) 里氏代换原则(Liskov Substitution Principle,LSP) 依赖倒转原则(Dependency Inversion Principle,DIP) 接口隔离原则(Interface Segregation Principle,ISP) 合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP) 最少知识原则(Least Knowledge Principle,LKP)或者迪米特法则(Law of Demeter,LOD) 简单理解就是: 开闭原则是总纲,它指导我们要...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装