SqlSession的使用简单
在得到SqlSessionFactory之后就可以创建一个SqlSession对象了,SqlSession对象的生命周期通常像如下方法所示:
public static void useSqlSession(SqlSessionFactory sqlSessionFactory)
{
//在通过SqlSessionFactory获取一个SqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//用标准的try/catch/finally写法操作数据库
try
{
//select
//update等待操作
//提交事务
sqlSession.commit();
}
catch(Exception e)
{
//出错,回滚事务
sqlSession.rollback();
}
finally
{
//关闭
sqlSession.close();
}
}
SqlSession接口定义
SqlSession定义了操作数据库的基本,这个Mybatis定义的用户层接口,使用该接口基本能满足用户(调用客户端)访问数据库的基本要求。由于接口定义的代码和注释比较多,这里就不贴了。其主要的方法如下:
- select类方法
- update/insert/delete方法
- commit()
- rollback()
- close()
如果了解过jdbc,肯定知道这些方法的用途!
SqlSession的创建过程
SqlSessionFactoryBuilder.build()方法会创建一个DefaultSqlSessionFactory对象
public SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}
我们再来看
DefaultSqlSessionFactory.openSession()方法
public SqlSession openSession() {
return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
}
//这个是最终创建SqlSession对象的方法,需要三个参数
//execType,这个示例使用的是configuration.getDefaultExecutorType(),即在Configuration默认配置的
//事务隔离等级,我们对数据库操作里一般都不会带这个属性,这个属性由数据库分配即可
//autoCommit:这个一般都是false,不然事务将没有意义
private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
Transaction tx = null;
try {
final Environment environment = configuration.getEnvironment();
//获取一个事务工厂,这个也是在配置文件中配置的
final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(e