从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1、连接(connection) 2、语句(statement)、3结果集(result set),我们对数据库做的事情无非:连接数据库,执行语句,拿到结果。因此,持久化工具的目的不言自明: 进一步简化连接的管理、语句的执行、结果集提取等操作。
Memory在设计与实现上,都借鉴了Dbutils,其相对于hibernate,mybatis这些庞然大物,已经是一个极其小巧的工具。 但是Memory的类和接口更少(不超过10个),体积更小(只有二十几K),数目和体积都约为dbutils的1/3 ,却添加了非常实用的功能:
将简单的POJO对象直接持久化到数据库中;
打印运行时出错的SQL语句,其可以直接拷贝到数据库客户端上进行调试;
直截了当的分页查询。
代码示例:
public static void testCrud() { /** * 创建一条记录 */ 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); }
详细可运行的例子,在这里可以看到和下载。