5.5 独创Db + Record模式

Db类及其配套的Record类,提供了在Model类之外更为丰富的数据库操作功能。使用Db与Record类时,无需对数据库表进行映射,Record相当于一个通用的Model。以下为Db + Record模式的一些常见用法:

  1. // 创建name属性为James,age属性为25的record对象并添加到数据库
  2. Record user = new Record().set("name", "James").set("age", 25);
  3. Db.save("user", user);
  4.  
  5. // 删除id值为25的user表中的记录
  6. Db.deleteById("user", 25);
  7.  
  8. // 查询id值为25的Record将其name属性改为James并更新到数据库
  9. user = Db.findById("user", 25).set("name", "James");
  10. Db.update("user", user);
  11.  
  12. // 获取user的name属性
  13. String userName = user.getStr("name");
  14. // 获取user的age属性
  15. Integer userAge = user.getInt("age");
  16.  
  17. // 查询所有年龄大于18岁的user
  18. List<Record> users = Db.find("select * from user where age > 18");
  19.  
  20. // 分页查询年龄大于18的user,当前页号为1,每页10个user
  21. Page<Record> userPage = Db.paginate(1, 10, "select *", "from user where age > ?", 18);

以下为事务处理示例:

  1. boolean succeed = Db.tx(new IAtom(){
  2. public boolean run() throws SQLException {
  3. int count = Db.update("update account set cash = cash - ? where id = ?", 100, 123);
  4. int count2 = Db.update("update account set cash = cash + ? where id = ?", 100, 456);
  5. return count == 1 && count2 == 1;
  6. }});

以上两次数据库更新操作在一个事务中执行,如果执行过程中发生异常或者run()方法返回false,则自动回滚事务。

< 5.4 Generator与JavaBean

5.6 paginate 分页 >