ORM 框架 sqltoy-orm 4.12.2 发版
开源地址:
- github: https://github.com/chenrenfei/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
感谢热心朋友开发了idea 针对sqltoy的插件,快速定位sql
https://gitee.com/threefish/sqltoy-idea-plugins
更新内容
1、增强直接写sql查询时自动根据情况补齐select c1,c2,.. from table where
2、优化quickvo,剔除对log4j的依赖改用jdk自带log,大幅减小jar的大小
3、增加三个单表查询、修改、删除方法,更加简化单表操作,便于内部逻辑快捷处理
/** * findEntity 模式,简化sql编写模式,面向接口服务层提供快捷数据查询和处理 * 1、通过where指定条件 * 2、支持lock * 3、支持order by (order by 在接口服务 层意义不大) * 4、自动将对象属性映射成表字段 */ @Test public void findEntity() { //条件利用sqltoy特有的#[]充当动态条件判断,#[]是支持嵌套的 List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffName like ?] #[ and status=?]") .lock(LockMode.UPGRADE).orderBy("staffName").orderByDesc("createTime") .values("陈", 1)); System.err.println(JSON.toJSONString(staffVOs)); } /** * 指定where 条件并提供对象传参 */ @Test public void findEntityByVO() { 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"))); System.err.println(JSON.toJSONString(staffVOs)); } /** * 通过参数传值进行删除,where必须有值(后端会校验),delete操作属于危险操作 */ @Test public void deleteEntity() { Long deleteCount = sqlToyLazyDao.deleteByQuery(StaffInfoVO.class, EntityQuery.create().where("status=:status").values(new StaffInfoVO().setStatus(1))); System.err.println(deleteCount); } /** * update 操作where也必须有值,以防危险操作 */ @Test public void updateEntity() { Long updateCount = sqlToyLazyDao.updateByQuery(StaffInfoVO.class, EntityUpdate.create().set("staffName", "张三").where("staffName like ? and status=?").values("陈", 1)); System.err.println(updateCount); }
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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
clop v0.0.8 版本更新,Golang 实现的命令行选项解析库
changelog see#48数据格式为slice时,清空default的数据 package main import ( "log" "github.com/guonaihong/clop" ) type A struct { Name []int `clop:"-e" usage:"数组测试" valid:"required" default:"[1,2]"` } func main() { a := A{} err := clop.Bind(&a) if err != nil { log.Fatal(err) } log.Printf("%+v\n", a) } // v0.0.8版本之前,此代码执行时,命令行输入 ./test.exe -e 3 -e 4,输出的结果是[1 2 3 4] // v0.0.8版本 结果为[3, 4] 项目地址 https://gitee.com/guonaihong/clop https://github.com/guonaihong/clop
- 下一篇
小说精品屋 - plus v2.1.0 发布,集成 Elastic Search 搜索引擎
小说精品屋-plus v2.1.0版本发布了,主要改进包括: 更新 集成搜索引擎,增强了搜索功能。 增加默认图片,在读取网络图片失败时设置,防止一直失败重试。 演示地址 点击前往(前台门户) 项目介绍 小说精品屋是一个多平台(web、安卓app、微信小程序)、功能完善的小说弹幕网站,包含精品小说专区、轻小说专区和漫画专区。包括小说/漫画分类、小说/漫画搜索、小说/漫画排行、完本小说/漫画、小说/漫画评分、小说/漫画在线阅读、小说/漫画书架、小说/漫画阅读记录、小说下载、小说弹幕、小说/漫画自动爬取、小说内容自动分享到微博、邮件自动推广、链接自动推送到百度搜索引擎等功能。包含电脑端、移动端、微信小程序等多个平台,现已开源web端、安卓端、小程序端源码。 小说精品屋-plus是在小说精品屋的基础上,重新进行了数据库设计、代码重构和功能增强,提升了程序整体的可读性和性能,增加了很多商用特性。主要升级如下: 数据库重新设计,结构调整。 服务端代码重构,MyBatis3升级为MyBatis3DynamicSql。 移动站与PC站站点分离,浏览器自动识别跳转。 PC站UI更新。 新闻模块。 排行榜...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用