# EnhancedJDBC **Repository Path**: drinkjava2/enhancedjdbc ## Basic Information - **Project Name**: EnhancedJDBC - **Description**: EnhancedJDBC是一个基于Apache Commons DbUtils并对其功能作了改进的纯JDBC持久层工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 34 - **Forks**: 11 - **Created**: 2017-08-30 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: database-dev **Tags**: None ## README ## EnhancedJDBC 开源协议: [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0) EnhancedJDBC(又名jDbPro)是一个建立于Apache Commons DbUtils上,并对其增强了动态SQL功能的JDBC持久层工具,它是一个承上(包装JDBC,支持多种SQL写法)启下(作为ORM项目内核)的项目,但它本身也是一个独立的工具,可以单独使用,其运行环境为Java6或以上。 作为ORM项目的内核,EnhancedJDBC仅关注于改进JDBC操作的易用性,它不考虑对象映射、关联映射、数据库方言、分布式事务等高级功能,这些高级功能属于ORM工具如jSqlBox负责的范畴。jSqlBox的设计理念是尽量将每个功能点设计成独立的小项目,隔离它们的相互依赖性,每个小项目都可以单独使用,整合在一起就成了jSqlBox,这与Hibernate之类将JDBC、ORM功能捆绑在一起的持久层工具是不同的。目前在这一理念下已经开发的工具项目有: 1)jDialects,这是一个支持70多种方言的SQL分页、DDL支持、JPA支持工具,用于解决利用JDBC工具进行跨数据库开发的问题。 2)jTransactions,这是一个将声明式事务作为单独的项目提供的小工具,目前包含一个微型实现TinyTx,并支持配置成使用Spring的声明式事务。 3)jBeanBox,这是一个微型IOC/AOP工具,如果不想用笨重的Spring-Ioc,可以用它来替代。 4)EnhancedJDBC,即本项目,主要优点是利用纯JDBC完成最主要的功能:SQL操作,但是加入了内嵌SQL式写法、分页、多租户支持,让纯JDBC开发也可以达到高效率、多功能,用最低的学习成本获得较高的开发效率和接近底层JDBC的运行效率。 5)jSqlBox,这是一个整合了上述子项目的ORM工具,除了拥有EnhancedJDBC的所有功能并与DbUtils兼容之外,主要增加了实体映射、ActiveRecord、声明式事务、分布式事务等高级功能。得益于EnhancedJDBC等子项目做了大量底层工作,jSqlBox项目只用了约40个类就构成了一个功能完备的ORM工具。 ### 如何引入EnhancedJDBC到项目? 在项目的pom.xml文件中加入如下行: ``` com.github.drinkjava2 enhanced-jdbc 5.0.7.jre8 ``` EnhancedJDBC不依赖于任何第三方库, 即可以用上述Maven的方式引入,也可以将它的源码拷到项目中即可使用。 ### 说明 从2.0.2版本起,EnhancedJDBC即不再有自已的说明文档,因为它的功能已在jSqlBox中的用户手册中有比较详细的介绍。 以下两行是个简短的使用示例,更多使用方式请参见jSqlBox的用户手册。 ``` public class HelloWorld { @Id @Column(length = 20) private String name; public String getName() { return name; } public HelloWorld setName(String name) { this.name = name; return this; } public static void main(String[] args) { DataSource ds = JdbcConnectionPool .create("jdbc:h2:mem:DBName;MODE=MYSQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0", "sa", ""); JdbcContext.setGlobalNextAllowShowSql(true); JdbcContext ctx = new JdbcContext(ds); JdbcContext.setGlobalDbContext(ctx); ctx.executeDDL(ctx.toCreateDDL(HelloWorld.class)); new HelloWorld().setName("Hellow jSqlBox"); JDBC.exe("insert into HelloWorld (name) values(?)",JDBC.par("tom")); System.out.println(JDBC.qryString("select name from HelloWorld")); ctx.executeDDL(ctx.toDropDDL(HelloWorld.class)); } } ```