MyBatis体系结构:SqlSession

SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection.他是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象.SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,他的底层封装了JDBC连接,可以用SqlSession实例来直接执行已知映射的SQL语句.每个线程都应该有他自己的SqlSession实例.SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中.也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet当中的HttpSession对象中,使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭他.
SqlSession常用方法如下:
int insert(String statement):
插入方法,参数statement是配置文件中定义的<insert…/>元素的id,返回执行SQL语句所影响的行数
int insert(String statement,Object patameter):
插入方法,参数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 paramenter):
查询方法,参数statement是在配置文件中定义的<select…/>元素的ID,parameter是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象的集合
<E>List<E> selectList<String statement,Object parameter,RowBounds rowBounds>:
查询方法,参数statement是在配置文件中定义的<selete…/>元素的id,parameter是查询所需的参数,通常是对象或者Map,RowBounds对象用于分页,他的两个属性: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 parament,String mapKey)
查询方法,参数statement是在配置文件中定义的<select…/>元素的id,parameter是查询所需的参数,通常是对象或者Map,mapKey是返回数据的其中一个列名,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象
<K,V>Map<K,V> selectMap(String statement,Object parameter,String mapKey,RowBounds rowBounds)
查询方法,参数statement是在配置文件中定义的<select…/>元素的id,parameter是查询所需的参数,通常是对象或者Map,mapKey是但会数据的其中一个列名,RowBounds对象用于分页,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象.
void select(String statement,ResultHandler handler)
查询方法,参数statement是在配置文件中定义的<select…/>元素的id,resultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询.
void select(String statement,Object parameter,ResultHander handler)
查询方法,参数statement是在配置文件中定义的<select…/>元素的id,parameter是查询所需的参数,通常是对象或者Map,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询.
void select(String statement,Object] parameter,RowBounds rowBounds,ResultHandler handler)
查询方法,参数statement是在配置文件中定义的<select…/>元素的id,parameter是查询所需的参数,通常是对象或者Map,RowBounds对象用户分页,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询
void commit()
提交事务
void rollback()
回滚事务
void close()
关闭SqlSession对象
Connection getConnection()
获得JDBC的数据库连接对象
<T> T getMapper(Class<T> type)
返回mapper接口代理对象,该对象关联了SqlSession对象,开发者可以通过该对象的直接调用方法操作数据库,参数type是Mapper的接口类型,MyBatis官方手册建议通过mapper对象访问MyBatis