SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。
它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。
SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句。
每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession 实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet当中的HttpSession 对象中。使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它。

SqlSession 的常用方法如下:
(1)int insert(String statement)。插入方法,参数statement是在配置文件中定义的<insert.../>元素的id,返回执行SQL语句所影响的行数。
(2)int insert(String statement,Object parameter)。插入方法,参数statement是在配置文件中定义的<insert.../>元素的id,parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
(3)int update(String statement) 。更新方法,参数statement是在配置文件中定义的<update.../>元素的id,返回执行SQL语句所影响的行数。
(4)int update(String statement,Object parameter)。更新方法,参数statement是在配置文件中定义的<update.../>元素的id,parameter 是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
(5)int delete(String statement) 。删除方法,参数statement是在配置文件中定义的<delete.../>元素的id。返回执行SQL 语句所影响的行数。
(6)int delete(String statement,Object parameter)。删除方法,参数statement 是在配置文件中定义的<delete.../>元素的id,parameter 是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
(7)<T> T selectOne(String slatement)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。
(8)<T> T selectOne(String statement,Object parameter)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象,通常查询结具只有一条数据时才使用。
(9)<E> List<E> selectList(String statemenl)。查询方法,参数是在配置文件中定义的<select.../>素的id,返回执行SQL话句查询结果的泛型对象的集合。
(10)<E> List<E> selectList(String statement,Object parameter)。杳洵方法,参数statement是在配置文件中定义的<select../>元素的id,parameter 是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象的集合。
(11)<E> List<E> selectList(String statement,Object parameter,RowBounds rowBounds)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,RowBounds对象用于分页,它的两个属性: offset指查询的当前页数; limit指当前页显示多少条数据。返回执行SQL语句查询结果的泛型对象的集合。
(12)<K,V> Map<K,V> selectMap(String statement,String mapKey) 。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,mapKey是返回数据的其中一个列名,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value 是封装的对象。
(13)<K,V> Map<K,V> selectMap(String statement,0bject parameler,Sting mapKey)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,mapKey 是返回数据的其中一个列名,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象。
(14)<K,V> Map<K,V>selectMap(Sting statement,Object parameter,Sting mapKey,RowBounds rowBounds)。查询方法,参数statement 是在配置文件中定义的<select.../>元素的id,parameter 是否询所需的参数,通常是对象或者Map,mapKey 是返回数据的其中一个列名,RowBounds 对象用于分页。执行SQL 语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value 是封装的对象。
(15)void select(String statement,ResultHandler handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
(16)void select(String statement,Object parameter,ResultHander handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id,parameter 是查询所需的参数,通常是对象或者Map, ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
(17)void select(String statement,Object parameter,RowBounds rowBounds,ResultHandrhandler)。查询方法,参数statement是在配置文件中定义的<selec.../>元素的id,是查询所需的参数,通常是对象或者Map,RowBounds 对象用于分页,parameter
ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
(18)void commit()。提交事务。
(19)void rollback()。回滚事务。
(20)void close()。关闭SqlSession对象。
(21)Connection getConnection()。获得JDBC的数据库连接对象。
(22)<T> T getMapper(Class<T> type)。返回mapper接口的代理对象,该对象关联了SqlSession对象,开发者可以通过该对象直接调用方法操作数据库,参数type是Mapper的接口类型。Mybatis官方手册建议通过mapper对象访问MyBatis。

SqlSession介绍的更多相关文章

  1. MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用

    学习框架一个比较好的路径阅读源码.本文介绍的SqlSessionFactory和SqlSession.可以通过了解SqlSessionFactory接口和SqlSession接口以及两个的实现类入手, ...

  2. mybatis的执行流程

    1.SqlSessionFactoryBuilder与SqlSessionFactory 我们一般在使用mybatis是都会通过new SqlSessionFactoryBuilder.build(. ...

  3. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  4. Spring-data-jpa详解,全方位介绍。

    本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...

  5. 【原创】纯干货,Spring-data-jpa详解,全方位介绍。

    本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...

  6. Mybatis拦截器介绍

    拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法.Mybatis拦截器设计的一个初 ...

  7. 纯干货,Spring-data-jpa详解,全方位介绍

    本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...

  8. MyBatis 源码分析——介绍

    笔者第一次接触跟MyBatis框架是在2009年未的时候.不过那个时候的他并不叫MyBatis,而是叫IBatis.2010年的时候改为现在的名字--MyBatis.这几年过去了,对于笔者来讲有一点陌 ...

  9. MyBatis源码解读(4)——SqlSession(上)

    在上一篇博客中提到MyBatis是如何实现代理类MapperProxy,并抛出了一个问题--是怎么执行一个具体的sql语句的,在文末中提到了MapperMethod的execute采用命令模式来判断是 ...

随机推荐

  1. 兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。

    因为ie8一下不兼容                 document.getElementsByClassName()                 功能:通过class的名字获取符合条件的元素 ...

  2. 《剑指offer》-递增数组中找到和为S的(最小)两个元素

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 首先 ...

  3. Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)

    今天在对 Ubuntu 进行更新源的时候,突然出现下列错误(为了省事,更新前直接切换了 root 用户) 上网查了一下,网上解释说应该是之前那个更新被强制取消的问题,进程仍然还在.用这个命令查看一下: ...

  4. Spring之配置文件bean作用域的详细介绍

    Spring的配置文件applicationContext.xml中bean作用域的详细介绍: 1:对象的创建:单例和多例        scope="singleton",默认值 ...

  5. Delphi---TServerSocket和TClientSocket发送和接收大数据包

    https://www.cnblogs.com/zhangzhifeng/p/6065244.html TServerSocket和TClientSocket用非阻塞模式发送和接收比较大的数据时,可能 ...

  6. bzoj4184

    题解: 按时间分治线段树 然后线性基维护一下就好了 尝试了一下循环展开并没有什么效果 代码: #include <bits/stdc++.h> using namespace std; ; ...

  7. 配置虚拟域名,hosts文件起作用

    快速打开hosts方法 开始->运行->system32->回车 当前路径文件夹drivers\etc\hosts hosts文件起作用,目前楼主知道有两个可能原因 1.刷新dns ...

  8. PTA 7-2 是否完全二叉搜索树(30 分) 二叉树

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

  9. X分钟速成Python

    先附上一张号称“一篇程序覆盖Python基础的代码”,基本的结构都涉及到了 源代码下载: learnpython-zh.py Python 由 Guido Van Rossum 在90年代初创建. 它 ...

  10. hdu 6185 递推+【矩阵快速幂】

    <题目链接> <转载于 >>> > 题目大意: 让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠.答案 ...