当前位置: 首页 > 文档资料 > Hutool 帮助文档 >

支持事务的 CRUD-Session

优质
小牛编辑
137浏览
2023-12-01

介绍

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

Session创建

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

//默认数据源
Session session = Session.create();

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

事务CRUD

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

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