MyBati 学习总结8 SqlSessionFactory 以及 SqlSession

SqlSession是mybatis的 主要java接口。SqlSession 由 SqlSessionFactory 对象创建,
SqlSessionFactory 则 由 SqlSessionFactoryBuild对象通过加载 xml 配置文件的文件流 或者 Configuration 对象生成
相关层级

  1. SqlSessionFactoryBuild
  2. SqlSessionFactory
  3. SqlSession

代码演示

String resource = "resource/common/mybatis-config.xml"
InputStream in = Resources.getResourceAsStream(resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();

properties参数加载顺序

  • 首先读取在 properties 元素体中指定的属性;

  • 其次,读取从 properties 元素的类路径 resource 或 url 指定的属性,且会覆盖已经指定了的重复属性;

  • 最后,读取作为方法参数传递的属性,且会覆盖已经从 properties 元素体和 resource 或 url 属性中加载了的重复属性。
    因此,通过方法参数传递的属性的优先级最高,resource 或 url 指定的属性优先级中等,在 properties 元素体中指定的属性优先级最低。

Resources类

API method
在这里插入图片描述

SqlSessionFactory

SqlSessionFactory 有如下方法可以创建 SqlSession 实例。

SqlSession openSession()
SqlSession openSession(boolean autoCommit)
SqlSession openSession(Connection connection)
SqlSession openSession(TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType,TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType)
SqlSession openSession(ExecutorType execType, boolean autoCommit)
SqlSession openSession(ExecutorType execType, Connection connection)

Configuration getConfiguration();

默认的SqlSession

  • 会开启一个事务(也就是不自动提交)。

  • 将从由当前环境配置的 DataSource 实例中获取 Connection 对象。
    事务隔离级别将会使用驱动或数据源的默认设置。

  • 预处理语句不会被复用,也不会批量处理更新。

SqlSession

执行语句方法

这些方法被用来执行定义在 SQL 映射的 XML 文件中的 SELECT、INSERT、UPDATE 和 DELETE 语句。

<T> T selectOne(String statement, Object parameter)
<E> List<E> selectList(String statement, Object parameter)
<T> Cursor<T> selectCursor(String statement, Object parameter)
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
int insert(String statement, Object parameter)
int update(String statement, Object parameter)
int delete(String statement, Object parameter)
分页参数 RowBounds

实例化的时候调用含参的构造器,创建一个RowBounds类实例,
在这里插入图片描述
通过实例可以获取limit 和offset属性。
在这里插入图片描述

SqlSession的事务控制
void commit()
void commit(boolean force)
void rollback()
void rollback(boolean force)
Session级别的 本地缓存

Mybatis 使用到了两种缓存:本地缓存(local cache)和二级缓存(second level cache)。

每当一个新 session 被创建,MyBatis 就会创建一个与之相关联的本地缓存。
任何在 session 执行过的查询语句本身都会被保存在本地缓存中,那么,相同的查询语句和相同的参数所产生的更改就不会二度影响数据库了。

设置 localCacheScope=STATEMENT 表示缓存仅在语句执行时有效。 如果 localCacheScope 被设置为 SESSION,那么 MyBatis 所返回的引用将传递给保存在本地缓存里的相同对象。对返回的对象(例如 list)做出任何更新将会影响本地缓存的内容,进而影响存活在 session 生命周期中的缓存所返回的值。因此,不要对 MyBatis 所返回的对象作出更改,以防后患。

本地缓存会被增删改、提交事务、关闭事务以及关闭 session 所清空。
你可以随时调用以下方法来清空本地缓存:

void clearCache();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值