放弃老旧的Mybatis,强类型替换字符串,这是一款你不应该错过的ORM
一款轻量级、高性能、强类型、易扩展符合C#开发者的JAVA自研ORMgithub地址 easy-query https://github.com/xuejmnet/easy-query
gitee地址 easy-query https://gitee.com/xuejm/easy-query
背景
转java后的几年时间里面一直在寻找一个类.net的orm,不需要很特别的功能仅希望90%的场景都可以通过强类型语法来编写符合直觉的sql,来操作数据库编写业务,但是一直没有找到仅Mybatis-Plus的单表让我在最初的时间段内看到了希望,不过随着使用的深入越发的发现Mybatis-Plus只是一个残缺的orm,因为大部分场景不支持表达式或者强类型会导致它本身的很多特性都无法使用,比如你配置了软删除,那么如果你遇到了join不好意思软删除你需要自己处理,很多配置会随着手写sql的加入变的那么的不智能,甚至表现得和sqlhelper没区别,别说Mybatis-Plus-Join了,这玩意更逆天,如果一个orm想写出符合自己的sql需要不断地调试尝试来“拼接”出想要的语句那么他就称不上一个ORM连sqlbuilder也算不上Mybatis-Plus-Join就是这样.
所以在4-5年后我终于忍受不了了,决定自研一款orm,参考现有.net生态十分完整的orm代码,和几乎完美符合扩展性和语义性的链式表达式让.net的orm带到java中。
查询
查询第一条数据
Topic topic = easyQuery.queryable(Topic.class)
.where(o -> o.eq(Topic::getId, "123"))
.firstOrNull();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` WHERE `id` = ? LIMIT 1
==> Parameters: 123(String)
<== Time Elapsed: 2(ms)
<== Total: 0表单条件动态查询
Topic topic = easyQuery.queryable(Topic.class)
.where(o -> o.eq(Topic::getId, "123"))
.singleOrNull();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` WHERE `id` = ?
==> Parameters: 123(String)
<== Time Elapsed: 2(ms)
<== Total: 0数据库函数列
用户存储的数据是base64结果,但是内存中是普通的字符串或者其他数据,easy-query提供了无感的使用,譬如pgsql的geo等地理相关数据
数据库函数列 https://xuejm.gitee.io/easy-query-doc/guide/adv/column-sql-func-auto.html
支持like的高性能加密解密
用来实现支持like模式的高性能加密解密,支持emoji和非emoji两种用户可以自行选择
数据库加密解密 https://xuejm.gitee.io/easy-query-doc/guide/adv/column-encryption.html
更多功能比如数据追踪差异更新,数据原子更新,分库分表(老行当了肯定要支持),一款本无依赖双语(java/kotlin)都支持的高性能orm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]