• 支持事务的CRUD-Session
    • 介绍
      • Session创建
      • 事务CRUD

    支持事务的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. }