Session

Introduction

Session is very similar to SqlRunner, with the difference being that a Session object contains only one Connection, which is used for all operations, facilitating transactional operations. In contrast, SqlRunner requests a Connection from the DataSource for every method execution. Here’s an example:

Session Creation

Similar to SqlRunner, Session can also be created by calling create:

// Default data source
Session session = Session.create();

// Custom data source (in this case, the data source of the "test" group)
Session session = Session.create(DSFactory.get("test"));

Transactional CRUD

session.beginTransaction() indicates the beginning of a transaction. After this method is called, each executed statement will not be committed until the commit method is called. Once committed or rolled back, the default auto-commit mode will be restored.

  1. Insert
Entity entity = Entity.create(TABLE_NAME).set("field1", "value").set("field2", 2);
try {
	session.beginTransaction();
	// Insert, generates SQL: INSERT INTO `table_name` SET(`field1`, `field2`) VALUES(?,?)
	session.insert(entity);
	session.commit();
} catch (SQLException e) {
	session.quietRollback();
}
  1. Update
Entity entity = Entity.create(TABLE_NAME).set("field1", "value").set("field2", 2);
Entity where = Entity.create(TABLE_NAME).set("condition1", "condition_value");
try {
	session.beginTransaction();
	// Update, generates SQL: UPDATE `table_name` SET `field1` = ?, `field2` = ? WHERE `condition1` = ?
	session.update(entity, where);
	session.commit();
} catch (SQLException e) {
	session.quietRollback();
}
  1. Delete
Entity where = Entity.create(TABLE_NAME).set("condition1", "condition_value");
try {
	session.beginTransaction();
	// Delete, generates SQL: DELETE FROM `table_name` WHERE `condition1` = ?
	session.del(where);
	session.commit();
} catch (SQLException e) {
	session.quietRollback();
}