SqlSession 是 MyBatis 中用于执行 SQL 操作的主要接口。它提供了一系列方法,用于执行查询、插入、更新和删除等数据库操作,还提供了事务管理的功能。以下是关于 SqlSession 的基本介绍:

创建 SqlSession

一般情况下,你可以通过 SqlSessionFactory 的 openSession 方法创建 SqlSession 实例。SqlSession 的创建是相对轻量级的操作,因此通常在每个数据库操作中都会创建一个新的 SqlSession 实例。
SqlSession sqlSession = sqlSessionFactory.openSession();

查询操作

通过 SqlSession,你可以执行查询操作,并获取查询结果。以下是一个简单的查询示例:
User user = sqlSession.selectOne("getUserById", 1);

在这个例子中,getUserById 是映射文件中定义的查询语句的唯一标识符,1 是传递给查询的参数。

插入、更新和删除操作

SqlSession 提供了相应的方法来执行插入、更新和删除操作:
// 插入
int rowsInserted = sqlSession.insert("insertUser", newUser);

// 更新
int rowsUpdated = sqlSession.update("updateUser", updatedUser);

// 删除
int rowsDeleted = sqlSession.delete("deleteUser", userId);

在这些例子中,insertUser、updateUser 和 deleteUser 是映射文件中定义的对应操作的唯一标识符。

获取 Mapper 接口实例

MyBatis 通过动态代理机制支持使用 Mapper 接口进行数据库操作。你可以通过 getMapper 方法获取 Mapper 接口的实例,然后使用该实例调用方法执行数据库操作:
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);

提交和回滚事务

在默认情况下,SqlSession 是不自动提交事务的。你可以通过调用 commit 方法手动提交事务,或者通过调用 rollback 方法回滚事务:
sqlSession.commit();
// 或
sqlSession.rollback();

关闭 SqlSession

使用完 SqlSession 后,需要关闭它以释放资源。你可以调用 close 方法来关闭 SqlSession:
sqlSession.close();

注意事项

  •  SqlSession 的实例是非线程安全的,每个线程应该拥有自己的 SqlSession 实例。


  •  在使用完 SqlSession 后,应该及时关闭以释放数据库连接。


  •  如果使用了事务,务必要在合适的地方调用 commit 或 rollback 方法,以确保事务的正确提交或回滚。


总体而言,SqlSession 是 MyBatis 中执行数据库操作的关键接口,通过它,你可以执行各种 SQL 操作,管理事务,并获取 Mapper 接口的实例进行数据库操作。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7032/MyBatis