同步操作将从 drinkjava2/jSqlBox 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
English instructions please see "README_ENG.md"
基于DbUtils内核的全功能数据库持久层工具
jSqlBox是一个全功能开源Java数据库持久层工具,在架构、功能、易用性等方面都不输于其它持久层工具,可以说,只要是与数据库操作相关的功能,jSqlBox都已具备,如DDL操作、分页、分库分表、声明式事务、分布式事务、关联映射查询等,所有这些功能都包含在一个1M大小的jar包中,不依赖任何第三方库。
请见与其它DAO工具对比, 可以对jSqlBox的功能与特点有一个大概的了解。
在pom.xml中加入:
<dependency>
<groupId>com.github.drinkjava2</groupId>
<artifactId>jsqlbox</artifactId>
<version>4.0.8.jre8</version> <!-- 或最新版 -->
</dependency>
jSqlBox分为Java8和Java6两个版本发布,Java8和Java6版本的主要区别是Java8版的实体类可以只声明ActiveEntity接口就可以进行CRUD操作了,并且Java8版提供了利用Lambda写支持重构的SQL的功能。对于新项目开发,请尽量使用Java8版本。
另一种使用jSqlBox的方式是:因为它没有用到第三方依赖,对于需要学习或更改它的源码的场合,也可以直接将jSqlBox的源码拷到项目目录里就可以直接使用它了。
以下示例演示了jSqlBox的基本配置和使用:
pom.xml中引入:
<dependency>
<groupId>com.github.drinkjava2</groupId>
<artifactId>jsqlbox</artifactId>
<version>4.0.8.jre8</version> <!-- Java8版 -->
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId> <!--H2内存数据库-->
<version>1.3.176</version>
</dependency>
在IDE里输入以下源程序:
import javax.sql.DataSource;
import org.h2.jdbcx.JdbcConnectionPool;
import static com.github.drinkjava2.jsqlbox.DB.*;
import com.github.drinkjava2.jdialects.annotation.jdia.UUID25;
import com.github.drinkjava2.jdialects.annotation.jpa.Id;
import com.github.drinkjava2.jsqlbox.*;
public class HelloWorld implements ActiveEntity<HelloWorld> {
@Id
@UUID25
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public HelloWorld setName(String name) {
this.name = name;
return this;
}
public static void main(String[] args) {
DataSource ds = JdbcConnectionPool //这个示例使用h2内存数据库
.create("jdbc:h2:mem:DBNameJava8;MODE=MYSQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0", "sa", "");
DbContext ctx = new DbContext(ds);
ctx.setAllowShowSQL(true); //开启SQL日志输出
DbContext.setGlobalDbContext(ctx); //设定全局DbContext
ctx.quiteExecute(ctx.toDropAndCreateDDL(HelloWorld.class)); //从实体创建DDL,创建表格
ctx.tx(() -> {//开启事务
HelloWorld h = new HelloWorld().setName("Foo").insert().putField("name", "Hello jSqlBox").update();
System.out.println(DB.iQueryForString("select name from HelloWorld where name like", ques("H%"),
" or name=", ques("1"), " or name =", ques("2")));
h.delete();//删除实体
});
ctx.executeDDL(ctx.toDropDDL(HelloWorld.class));//删除表格
}
}
上面这个演示包括了根据实体类生成DDL并执行、插入实体到数据库、执行更新、查询出结果、即打印出"Hello jSqlBox"、删除实体、删除数据库。
示例中的实体类只需要声明接口(限Java8版)。查询语句使用了jSqlBox独创的参数内嵌式SQL写法,可以自由拼接复杂的条件SQL,也不用考虑参数和问号对齐的问题了。
因为开启了日志输出,可以看到命令行打印出的SQL执行日志:
SQL: drop table HelloWorld if exists
PAR: []
SQL: create table HelloWorld ( id varchar(250),name varchar(250), primary key (id))
PAR: []
SQL: insert into HelloWorld (name, id) values(?,?)
PAR: [Foo, emeai4bfdsciufuuteb9a7nmo]
SQL: update HelloWorld set name=? where id=?
PAR: [Hello jSqlBox, emeai4bfdsciufuuteb9a7nmo]
SQL: select name from HelloWorld where name like? or name=? or name =?
PAR: [H%, 1, 2]
SQL: delete from HelloWorld where id=?
PAR: [emeai4bfdsciufuuteb9a7nmo]
SQL: drop table HelloWorld if exists
PAR: []
以上是jSqlBox最简短的入门介绍,详细的使用说明请参见用户手册。
以下范例位于jSqlBox的demo目录下:
欢迎发issue提出更好的意见或提交PR,帮助完善项目
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。