一个比Dbutils更小巧、更好用的持久化工具

从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1、连接(connection) 2、语句(statement)、3结果集(result set),我们对数据库做的事情无非:连接数据库,执行语句,拿到结果。因此,持久化工具的目的不言自明:进一步简化连接的管理、语句的执行、结果集提取等操作。

Memory在设计与实现上,都借鉴了Dbutils,其相对于hibernate,mybatis这些庞然大物,已经是一个极其小巧的工具。 但是Memory的类和接口更少(不超过10个),体积更小(只有二十几K),数目和体积都约为dbutils的1/3,却添加了非常实用的功能:

a) 将简单的POJO对象直接持久化到数据库中;
b) 打印运行时出错的SQL语句,其可以直接拷贝到数据库客户端上进行调试;
c) 直截了当的分页查询。

开源中国上的链接
GitHub上的链接


代码示例:


public static void testCrud() throws SQLException {
/**
* 创建一条记录
*/

Product product = new Product();
product.setName(
"apple");
product.setStock(10);
product.setStatus(true);
product.setCreatedDate(new Date());
System.out.print(
"入库之前Product没有ID:");
System.out.println(product);
memory.create(Product.class, product);

/**
* 读取这条记录
*/

product = memory.read(Product.class, product.getId());
System.out.print(
"使用CRUD的read方法读取:");
System.out.println(product);

/**
* 换一种方式读取
*/

product = memory.query(
"select * from product where id = ?",
new BeanHandler<Product>(Product.class), product.getId());
System.out.print(
"使用CQRS的query方法读取:");
System.out.println(product);

/**
* 更新这条记录
*/

product.setStock(15);
product.setStatus(true);
product.setCreatedDate(new Date());
memory.update(Product.class, product);
// 查看结果
product = memory.read(Product.class, product.getId());
System.out.print(
"查看更新结果:");
System.out.println(product);

/**
* 删除一条记录
*/

memory.delete(Product.class, product.getId());
// 查看结果
product = memory.read(Product.class, product.getId());
System.out.print(
"查看删除结果:");
System.out.println(product);
}

[该贴被tecentID29C38于2015-05-17 21:16修改过]
[该贴被tecentID29C38于2015-05-17 21:16修改过]