支持事务的CRUD-Session

介绍

Session非常类似于SqlRunner,差别是Session对象中只有一个Connection,所有操作也是用这个Connection,便于事务操作,而SqlRunner每执行一个方法都要从DataSource中去要Connection。样例如下:

Session创建

SqlRunner类似,Session也可以通过调用create

  1. //默认数据源
  2. Session session = Session.create();
  3. //自定义数据源(此处取test分组的数据源)
  4. Session session = Session.create(DSFactory.get("test"));

事务CRUD

session.beginTransaction()表示事务开始,调用后每次执行语句将不被提交,只有调用commit方法后才会合并提交,提交或者回滚后会恢复默认的自动提交模式。

  • 新增
  1. Entity entity = Entity.create(TABLE_NAME).set("字段1", "值").set("字段2", 2);
  2. try {
  3. session.beginTransaction();
  4. // 增,生成SQL为 INSERT INTO `table_name` SET(`字段1`, `字段2`) VALUES(?,?)
  5. session.insert(entity);
  6. session.commit();
  7. } catch (SQLException e) {
  8. session.quietRollback();
  9. }
  • 更新
  1. Entity entity = Entity.create(TABLE_NAME).set("字段1", "值").set("字段2", 2);
  2. Entity where = Entity.create(TABLE_NAME).set("条件1", "条件值");
  3. try {
  4. session.beginTransaction();
  5. // 改,生成SQL为 UPDATE `table_name` SET `字段1` = ?, `字段2` = ? WHERE `条件1` = ?
  6. session.update(entity, where);
  7. session.commit();
  8. } catch (SQLException e) {
  9. session.quietRollback();
  10. }
  • 删除
  1. Entity where = Entity.create(TABLE_NAME).set("条件1", "条件值");
  2. try {
  3. session.beginTransaction();
  4. // 删,生成SQL为 DELETE FROM `table_name` WHERE `条件1` = ?
  5. session.del(where);
  6. session.commit();
  7. } catch (SQLException e) {
  8. session.quietRollback();
  9. }