数据库操作工具 hydrogen-dao

Apache
Java
跨平台
2015-03-10
捏造的信仰

(本项目终止开发,因为现在 MyBatis 配合 SpringBoot 使用已经全程免配置,其易用性已经达到作者本人的期望。)

hydrogen-dao 是一个轻量级的 JDBC 数据库操作工具,专注于简化数据库的连接管理 SQL 执行。其主要功能有:

  • 连接池管理,状态查看;

  • 跨数据库的事务;

  • 根据查询参数来动态组装 select/insert/update/delete 语句,免除大量的 if-else;

  • 简化分页查询和批处理。

下面是一个例子:

// 简单查询
List users = dao.query("select * from users where id in(?,?,?)", 1,2,3);


// 查询结果包装成 Pojo
List users = dao.query(User.class, "select * from users where id in(?,?,?)", 1,2,3);


// 动态组装条件
List users = dao.query(SQL
        .Select("ID", "NAME", "ROLE")
        .From("USERS")
        .Where(username != null, "NAME=?", username)  // 仅当变量 username 不为 null 时才会包含该查询条件
        .And(role != null, "ROLE in ?", roles)           // 这里的 roles 变量可以是数组或 List
);


// 分页查询
String sql = "select * from users where name like ?";
int pageSize = 10;  // 页大小
int pageIndex = 2;  // 页号,0 表示第一页

Page page = dao.queryPage(User.class, sql, pageSize, pageIndex, "Adm%");

System.out.println("Total count: " + page.getTotal()); // 要获取总记录数,实际上查询了两次
for (User user: page) {
    System.out.println(user);
}

hydrogen-dao 是一个 Java 的轻量级的数据库访问库,依赖标准的 JDBC 接口。下面是一个使用例子:

查询记录

DAO dao = getDAO();List userList = dao.query(
        User.class,                                         // 包装类
        "select * from USER where NAME like ? and ROLE=?",  // 语句
        "admin%", 3);                                       // 参数for (User user: userList) {
    System.out.println("user name: " + user.getName());}

执行事务

final DAO dao = getDAO();DAO.runTransactionWithException(new Runnable() {  // 所有事务都以 Runnable 的方式执行,简单明了
    public void run() {
        dao.execute("insert into USER(id,name) values(?,?)", 1, "user1");
        throw new Exception();    // 之前的 insert 将会回滚,同时异常抛出
    }});

使用方法参考 WIKI

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

可用于测量多种气体种类的便携式万用气体检测仪

气体检测仪是一种气体泄露浓度检测的仪器仪表工具,其中包括:便携式气体检测仪、手持式气体检测仪、固定式气体检测仪、在线式气体检测仪等。主要利用气体传感器来检测环境中存在的气体种类,...

07/25 15:27
5
0
记一下常用的平台、框架、软件

需求管理平台:禅道、TFS、码云 代码管理软件:SVN、GIT 代码质量控制:FindBugs、Checkstyle、PMD、Jacoco等maven插件;infusion-hydrogen 自动部署平台:Jenkins、TFS 自动部署常用容器:d...

2018/12/15 09:10
3
0
不锈钢品名

不锈钢弹簧丝 stainless steel spring wire 亮面不锈钢弹簧丝 bright finish stainless steel spring wire 雾面弹簧丝 cloudy surface stainless steel spring wire 不锈钢焊丝 stainless st...

2016/02/18 16:14
3
1
KgB2B商贸平台商铺相册插件-Hibernate配置代码

KgB2B商贸平台商铺相册插件-Hibernate配置代码,完整版hibernate配置。

2014/03/31 11:31
92
0
一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)

如何让组件不再依赖容器?这篇 博文主要是通过两种解决方案来解决这个问题,最后对比各自的优缺点。 服务定位器 解决方案之一就是使用服务定位器(Service Locator),我们也可以叫主动查找。...

2018/01/13 18:29
15
0
一步步重构容器实现Spring框架——从一个简单的容器开始(八)

最近一直在和容器打交道,甚至前面的博文,我们也介绍了Spring的IoC的原理以及源码,但是回头看看,duang~ duang~的,还是深了,不够通俗易懂,不够深入浅出。由于以上原因吧,从这篇博客开始...

2018/01/13 18:27
15
0
泛型在Web中的作用

当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦。 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了。 要...

2018/01/21 16:14
11
0
NO.24 ZenTaoPHP框架提供的DAO功能

禅道并没有试着去实现ORM或者ActiveRecord这样的概念。因为我们相信,框架要留给开发人员足够的自由发挥的空间,而不是所有的都要包办。所以框架里面提供了一个简单方便的数据库访问对象类:...

2012/09/25 16:24
55
0
泛型在Web中的作用

当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦。 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了。 要...

2018/01/21 15:56
5
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部