【发现新大陆】sqltoy-orm:我的首选ORM框架之路

前言

在认识sqltoy前用过:原生jdbc,JdbcTemplate,hibernate(但不熟),mybatis,mybatis-plus

未满足使用的原因

  1. JdbcTemplate满足了直接写sql的需求,但是无法对象crud
  2. mybatis+mybatis-plus这两个结合几乎能解决很多问题,但是每一次写sql都要去定义一个接口,而且直接写sql不太方便

选择原因

  • 原因:
    因为上述有需求不能满足,在那时候打算参考流行框架为自己定制一个orm,但是发现这不是一件简单的事情(由衷佩服开源的ORM提供者),所以放弃了这想法,后来在开源社区中偶发现了sqltoy。

  • 使用(备注:sqlToyHelperDao是增强型sqltoy dao):
    1、在众多流行框架的潮流下,sqltoy也具有对象crud,例

sqlToyHelperDao.save(sysRole);
sqlToyHelperDao.delete(sysRole)

2、非常直接的在代码里写sql,例

// 一般写法
sqlToyHelperDao.executeSql("select * from tb_user", User.class);
// 如果jdk支持文本块,则可以这样写,不用+号拼接,更为直观
String sql =
	"""
	select * from tb_user a
		left join tb_ext b on (a.id = b.id)
	""";
sqlToyHelperDao.executeSql(sql, User.class);

3、xml写法(根据id查找到模板sql,不用定义Service)
java类:

List<SysUser> list = sqlToyHelperDao.findBySql("ani_user_opus_findFollowsEmail", dto, SysUser.class);

xml文件:

    <sql id="ani_user_opus_findFollowsEmail">
        <value>
            <![CDATA[
            select s2.email
            from ani_user_opus a1
                     left join sys_user s2 on s2.id = a1.user_id
            where a1.opus_id = :opusId
              and s2.is_deleted = 0
              and s2.email is not null
            group by s2.email
            ]]>
        </value>
    </sql>
  • 上面是本人经常用到的写法,还有一些高级功能和配置就不一一介绍,如需要可以去sqltoy主页自行研究

结尾

还有一件事,sqltoy的xml模板语法实在太优雅啦!!!

  • 比如自带非空判断,也就是说不用自己写
  • 再比如 in写法:#[and id in (:opusIds)]
sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从10.5 开始 mysql 支持5.6、5.7、8.0 版本 postgresql 支持9.5 以及以上版本 sqlserver 支持2008到2019版本,建议使用2012或以上版本 sqlite sybase_iq 支持15.4以上版本,建议使用16版本 elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本 clickhouse mongodb (只支持查询) sqltoy-orm特性: 1、根本上杜绝了sql注入问题,sql支持写注释、sql文件动态更新检测,开发时sql变更会自动重载。 2、最直观的sql编写模式,当查询条件稍微复杂一点的时候就会体现价值,后期变更维护的时候尤为凸显。 3、极为强大的缓存翻译查询:巧妙的结合缓存减少查询语句表关联,极大简化sql和提升性能。 4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库sqltoy-orm特点: 1、最优雅直观的sql编写模式 2、天然防止sql注入,执行过程 3、最强大的分页查询 4、最巧妙的缓存应用,将多表关联查询尽量变成单表 5、跨数据库 6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表 9、五种非数据库相关主键生成策略 10、elastic原生查询支持 11、elasticsearch-sql 插件模式sql模式支持     sqltoy-orm框架系统 更新日志: v4.18.22 1、在findEntity中EntityQuery可以设置fetchSize 2、在sqltoyContext中可以全局设置fetchSize,例如 spring.sqltoy.fetchSize=200 3、convertType 支持空集合返回空集合 4、针对一些特殊原因导致表名是数据库关键词的处理支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值