0%

9.1 MyBatis体系结构 9.1.2 SqlSession常用方法

9.1.2 SqlSession

SqlSessionMyBatis的关键对象,它是执行持久化操作的对象,类似于JDBC中的Connection。它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句。

SqlSession要单独使用

每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中比如Serlvet当中的HttpSession对象中。

SqlSession用完要关闭

使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它.

SqlSession常用方法

SqlSession的常用方法如下:

方法 描述
int insert(String statement) 插入方法,参数statement是在配置文件中定义的insert元素的`id,返回执行SQL`语句所影响的行数。
int insert(String statement,Object parameter) 插入方法,参数statement是在配置文件中定义的insert元素的id,parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
int update(String statement) 更新方法,参数statement是在配置文件中定义的update元素的id,返回执行SQL语句所影响的行数。
int update(String statement,Object parameter) 更新方法,参数statement是在配置文件中定义的update元素的id,parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
int delete(String statement) 删除方法,参数statement是在配置文件中定义的delete元素的id。返回执行SQL语句所影响的行数。
int delete(String statement,Object parameter) 删除方法,参数statement是在配置文件中定义的delete元素的id,parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
<T>T selectOne(String statement) 查询方法,参数statement是在配置文件中定义的select元素的id。返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。
<T>T selectOne(String statement,Object parameter) 查询方法,参数statement是在配置文件中定义的select元素的id,parameter是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。
<E> List<E> selectList(String statement) 查询方法,参数是在配置文件中定义的select元素的id,返回执行SQL语句查询结果的泛型对象的集合。
<E> List<E> selectList(String statement,Object parameter)。查询方法,参数statement是在配置文件中定义的select元素的id,parameter是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象的集合。
<E> List<E> selectList(String statement,Object parameter,RowBounds rowBounds) 查询方法,参数statement是在配置文件中定义的select元素的id,parameter是查询所需的参数,通常是对象或者MapRowBounds对象用于分页,它的两个属性:offset指查询的当前页数;limit指当前页显示多少条数据。返回执行SQL语句查询结果的泛型对象的集合。
<K,V> Map<K,V> selectMap(String statement,String mapKey) 查询方法,参数statement是在配置文件中定义的select元素的id,mapKey是返回数据的其中一个列名,执行SQL语句查询的结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象。
<K,V> Map<K,V> selectMap(String statement,Object parameter,String mapKey) 查询方法,参数statement是在配置文件中定义的select元素的id,parameter是查询所需的参数,通常是对象或者Map,mapKey是返回数据的其中一个列名,执行SQL语句查询的结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象。
void select(String statement,ResultHandle rhandler) 查询方法,参数statement是在配置文件中定义的<select.../>元素的id,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询
void select(String statement,Object parameter,ResultHandler handler) 查询方法,参数statement是在配置文件中定义的select元素的id,parameter是查询所需的参数,通常是对象或者Map,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
void commit() 提交事务。
void rollback() 回滚事务。
void close() 关闭SqlSession对象。
Connection getConnection() 获得JDBC的数据库连接对象。
<T>TgetMapper(Class<T>type) 返回mapper接口的代理对象,该对象关联了SqlSession对象,开发者可以通过该对象直接调用方法操作数据库,参数typeMapper的接口类型。MyBatis官方手册建议通过mapper对象访问MyBatis
## 提示 ##
在实际应用中很少会直接使用DriverManager来获取数据库连接,通常都会使用DataSource来获取数据库连接,SqlSessionFactory底层封装了DataSource

原文链接: 9.1 MyBatis体系结构 9.1.2 SqlSession常用方法