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.
- 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();
}
- 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();
}
- 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();
}