jSqlBox 2.0.2 发布,Java 持久层工具

栏目: 数据库 · 发布时间: 7年前

内容简介:jSqlBox2.0.2版发布,主要改进:jSqlBox是一款基于DbUtils内核开发的全功能数据库持久层工具,同时具备底层JDBC操作和上层ORM实体CURD、关联查询功能,具体功能大家可以看1. 自带DDL生成功能,支持几乎所有数据库(70多种数据库方言)。示例:

jSqlBox2.0.2版发布,主要改进:

  • 增加一批实体CURD方法;

  • 增加"按实体样板"查询功能;

  • 实体关联查询如果一条 SQL 写不完,可以分多次查询。

jSqlBox是一款基于DbUtils内核开发的全功能数据库持久层工具,同时具备底层JDBC操作和上层ORM实体CURD、关联查询功能,具体功能大家可以看 用户手册 ,就不多介绍了。下面只是列一下jSqlBox的独门武器,看看它和其它持久层 工具 相比有哪些特殊之处:

1. 自带DDL生成功能,支持几乎所有数据库(70多种数据库方言)。示例:

        SqlBoxContext ctx = new SqlBoxContext(dataSource);
        String[] ddls = ctx.toCreateDDL(User.class);

2. 无接口、无实现、无DAO、无配置,用最少的文件和语法完成最多的功能:

下图是在完成同样的 性能测试 时,jSqlBox和其它DAO工具文件数量的对比:

jSqlBox 2.0.2 发布,Java 持久层工具

当实体多达上百个时,想一想jSqlBox能省多少事?

当然性能也是不错的。见下图(这个测试仅针对实体CRUD):

jSqlBox 2.0.2 发布,Java 持久层工具

3. 最简洁的ORM实体关联查询:

下图从User到Privilege之间经过了两个多对多关联,在jSqlBox中这不是问题:

jSqlBox 2.0.2 发布,Java 持久层工具

一行代码就可以收工了:

List<User> users = ctx.entityAutoNet(User.class, UserRole.class, Role.class, RolePrivilege.class, Privilege.class).pickEntityList(User.class);

没有配置文件、没有XML、没有模板,就这么简单。

4. 树结构实体关联查询也是小菜,两行代码解决问题:

jSqlBox 2.0.2 发布,Java 持久层工具

EntityNet net = ctx.iQuery(new EntityNet(),TreeNode.class, TreeNode.class, alias("t", "p"), give("p", "t", "parent"), give("t", "p", "childs"), "select t.**, t.pid as p_id from treenodetb t");
TreeNode root = net.pickOneEntity("t", "A");

对于无递归查询出子树,jSqlBox也发明出了一种新的深度树存储方案,详见用户手册,这可以算是jSqlBox项目的副产品。

5. 无处不在的动态SQL,所有条目都可以当作参数传递,包括SqlBoxContext老大本身:

ctx.iExecute("insert into users (", //
   " name ,", param("Sam"), //一个参数写一行
   notNull("age,", user.getAge()), //notNull方法的第二个参数为null时,这一项将不会添加到SQL中
    " address ", param("Canada"), //
 ") ", valuesQuestions()); //自动根据参数个数补上 values(?,?...?)片段

//ActiveRecord的方法也接收乱七八糟的参数,来者不拒
new User(100,"Tom","China").update(ctx2, " and age>?", param(5), new PrintSqlHandler());

6. 在Dao层具备主从分离、分库分表功能,可以不依赖第三方Sharding工具:

public static class User extends ActiveRecord<User > {
   @ShardTable({ "MOD", "8" })
   @Snowflake
   @Id
   private Long id; 
 
   @ShardDatabase({ "MOD", "7" })
   @Id
   @Snowflake
   private Long databaseId;
...
}
//自动Sharding, 强制主表操作
User u1 = new User ().put("name", "Tom").insert(USE_MASTER);

7. 还有其它一些特点就不详细介绍了,只是简单提一下:

jSqlBox不重新发明SQL语法,即使是按样板查询,也不重新发明SQL,好学。

jSqlBox支持动态配置;

jSqlBox兼容DbUtils;

jSqlBox自带声明式事务,也可以使用Spring事务。

jSqlBox可以切换模板;

jSqlBox有很多SQL写法,包括链式写法和支持重构的Lambda语法等;

jSqlBox有批处理、缓存、日志、拦截器,但也有黑科技, 如抽象类实例化、多行SQL文本支持。

jSqlBox架构优秀,模块式架构,jSqlBox模块的源码只有30多个文件。

jSqlBox无配置文件、启动快,0秒启动。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

让云落地

让云落地

【美】Michael J. Kavis(迈克尔 J.凯维斯) 著 / 陈志伟、辛敏 / 电子工业出版社 / 2016-3 / 65.00元

云计算落地已成事实。从前几年的概念普及,到如今越来越多的企业将业务迁移至云上,云计算正在改变整个社会的信息资源使用观念和方式。云计算还在不断成长,技术细节也在不断变化之中。对于使用者而言,能够基于自身的业务、技术和组织需求等各方面情况,选择正确的云服务模式,是成功使用云计算最关键的技术决策之一。 《让云落地:云计算服务模式(SaaS、PaaS和IaaS)设计决策》共有 16 章,作者有意避开......一起来看看 《让云落地》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器