版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务1.3MyBatis核心对象了解MyBatis的三大核心对象核心对象的实例化方法三大核心对象之间的关系1本节任务
三大核心对象:SQLSessionFactoryBuilder、SqlSessionFactory和SqlSession。
1.SqlSessionFactoryBuilder
SqlSessionFactory是创建SqlSession的工厂,而SqlSessionFactory的创建则依赖于SqlSessionFactoryBuilder。
SqlSessionFactoryBuilder是MyBatis中用于构建SqlSessionFactory的构建器。图1.3.1为SqlSessionFactoryBuilder类的build()重载方法。
2知识支撑图1.3.1SqlSessionFactoryBuilder类的build()重载方法以字节流的方式传入1build(InputStreaminputStream,Stringenvironment,Propertiesproperties)以字符流的方式传入1build(Readerreader,Stringenvironment,Propertiesproperties)以配置类(Configuration)的方式传入1build(Configurationconfig)
此处以字节流的方式为例,其核心代码如下:2知识支撑1//读取mybatis-config.xml核心配置文件2InputStreaminputStream=Resources.getResourceAsStream("核心配置文件的位置信息");3//构造SqlSessionFactory工厂实例4SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);由于SqlSessionFactory是线程安全的,因此一经创建,其在整个应用程序执行期间都会存在。如果多次创建同一个数据库的SqlSessionFactory,那么将造成资源浪费和性能下降。因此,通常一个数据库只创建一个SqlSessionFactory,并采用单例模式对其进行管理。
2.SqlSessionFactory
SqlSessionFactory是MyBatis框架中的一个核心接口,主要用于创建SqlSession。SqlSessionFactory
在被SqlSessionFactoryBuilder构造完成后,就可以通过调用openSession()重载方法来创建SqlSession,且不同的openSession()重载方法创建的SqlSession具有不同的特性。表1.3.1所示为不同openSession()重载方法的比较。
2知识支撑方法名称描述SqlSessionopenSession()用于开启一个事务SqlSessionopenSession(BooleanautoCommit)参数autoCommit可设置是否开启事务。若传传入参数数为true,则表示关闭事务控制,自动提交;若传传入参数数为false,则表示开启事务控制SqlSessionopenSession(Connectionconnection)参数connection可提供自定义连接SqlSessionopenSession(TransactionIsolationLevellevel)参数level可设置隔离级别SqlSessionopenSession(ExecutorTypeexecType)参数execType为执行器类型,有以下3个可选值。ExecutorType.SIMPLE:表示为每条语句创建一条新的预处理语句;ExecutorType.REUSE:表示会复用预处理语句;ExecutorType.BATCH:表示会批量执行所有更新语句SqlSessionopenSession(ExecutorTypeexecType,BooleanautoCommit)参数execType为执行器的类型,参数autoCommit为设置是否开启事务SqlSessionopenSession(ExecutorTypeexecType,Connectionconnection)参数execType为执行器的类型,参数connection可提供自定义连接表1.3.1不同openSession()重载方法的比较
3.SqlSession
SqlSession是MyBatis框架中一个非常重要的类。每个SqlSession实例都包含执行SQL语句所需的所有信息,可以通过执行映射文件中定义的SQL语句,完成对数据库的增删改查操作。表1.3.2所示为SqlSession的常用方法。
2知识支撑方法名称描述<T>TselectOne(Stringstatement)查询方法,参数statement是在配置文件中定义的<select>元素的id,查询结果为一个泛型对象<T>TselectOne(Stringstatement,Objectparameter)查询方法,parameter是查询语句所需的参数,查询结果为一个泛型对象<E>List<E>selectList(Stringstatement)查询方法,参数statement是在配置文件中定义的<select>元素的id,查询结果为泛型对象的集合<E>List<E>selectList(Stringstatement,Objectparameter)查询方法,parameter是查询语句所需的参数,查询结果为泛型对象的集合<E>List<E>selectList(Stringstatement,Objectparameter,RowBoundsrowBounds)查询方法,rowBounds是用于分页的参数对象,查询结果为泛型对象的集合voidselect(Stringstatement,Objectparameter,ResultHandlerhandler)查询方法,handler用于处理查询语句返回的复杂结果集,该方法常用于多表查询intinsert(Stringstatement)插入方法,参数statement是在配置文件中定义的<insert>元素的id表1.3.2SqlSession的常用方法方法名称描述intinsert(Stringstatement,Objectparameter)插入方法,parameter是插入语句所需的参数intupdate(Stringstatement)更新方法,参数statement是在配置文件中定义的<update>元素的idintupdate(Stringstatement,Objectparameter)更新方法,parameter是更新语句所需的参数intdelete(Stringstatement)删除方法,参数statement是在配置文件中定义的<delete>元素的idintdelete(Stringstatement,Objectparameter)删除方法,parameter是删除语句所需的参数voidcommit()提交事务的方法voidrollback()回滚事务的方法voidclose()关闭SqlSession<T>TgetMapper(Class<T>type)该方法会返回Mapper接口的代理对象,参数type是Mapper的接口类型ConnectiongetConnection()获取JDBC数据库连接对象的方法
SqlSession不是线程安全的,因此不能在多个线程之间共享同一个SqlSession实例。通常情况下,一个SqlSession实例对应一次数据库会话,在完成数据库操作后,应及时关闭SqlSession,以释放资源,关闭SqlSession的操作通常被放在finally代码块中。
2知识支撑
创建SqlSession的常用代码如下。1 SqlSessionsqlSession=SqlSessionFactory.openSession();2 try{3 …//此处执行持久化操作4 sqlSmit();//提交事务5 }catch(IOExceptione){6 …//此处为捕获异常后操作7 }finally{8 sqlSession.close();//关闭SqlSession,释放资源9 }
三大核心对象之间的关系
三者按固定顺序协作,流程不可逆,具体步骤如下:
用SqlSessionFactoryBuilder读取配置文件,调用build()方法生成SqlSessionFactory;
用SqlSessionFactory调用openSession()方法,创建SqlSession(可指定是否自动提交事务);
用SqlSession执行SQL(直接调用API或获取Mapper接口),完成数据CRUD;
操作结束后,调用SqlSession的commit()/rollback()处理事务,再调用close()关闭会话。2知识支撑
我们重点掌握了:三大核心对象的定位:SqlSessionFactoryBuilder是“临时构建器”,SqlSessionFactory是“线程安全的工厂”,SqlSession是“非线程安全的执行者”;实例化方法:SqlS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年小升初b点运动测试题及答案
- 2026年关于餐厅智力测试题及答案
- 2026年智力问答测试题及答案
- 2026年跨年孤独测试题及答案
- 2026年物理电路测试题及答案
- 2026年全脑老师测试题及答案
- (新)医院感染知识培训制度2篇
- 医院会议组织管理制度
- 二道镇宏明村广源豆制品项目水土保持方案报告表
- 金和煤矿1850边坡地质环境恢复治理工程水土保持方案报告表
- 2026年辽宁锦州海通实业有限公司计划招录28人笔试模拟试题及答案详解
- 2026年中国文联所属事业单位招聘(19人)考试参考试题及答案解析
- GB/T 35319-2025物联网系统接口要求
- 课件:《中华民族共同体概论》第十五讲:新时代与中华民族共同体建设
- 儿童康复护理小讲课课件
- 天然气科普知识讲座
- 老年患者围手术期管理北京协和医院专家共识
- 压力钢管的制造及安装方案
- 硫磺安全技术说明书MSDS
- GB/T 41906-2022超氧化物歧化酶活性检测方法
- CB/T 965-1995橡胶补偿接管
评论
0/150
提交评论