MyBatis核心接口和类
三大对象:
1、SqlSessionFactoryBuilder:负责构建SqlSessionFactory,并且提供了多个build()方法的重载
2、SqlSessionFactory:创建SqlSession实例的工厂
3、SqlSession:用于执行持久化操作的对象
三大对象获取的步骤:
(1)每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。
(2)首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件的实例构建该对象。
(3)然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获得。
(4)有了SqlSessionFactory对象之后,通过SqlSessionFactory对象的openSession()方法就可以获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法。
三大对象的声明周期和作用域:
《1》SqlSessionFactoryBuilder的最大特点是:用过即丢。一旦创建了SqlSessionFactoryBuilder对象之后,这个类就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范围是存在方法体内,也就是局部变量而已。
《2》SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在,因此SqlSessionFactory的最佳作用域是Application(单例模式)。
《3》SqlSession对应着一次数据库回话。在每次访问数据库时都需要创建它,每个线程都有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。
package com.ssm.utils;import java.io.IOException; import java.io.InputStream;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /*** MyBatis的核心接口和类* @author Administrator**/ public class MyBatisUtil {private static SqlSessionFactory factory;/** 在静态代码块下,factory只会被创建一次*/static{try {String resource="mybatis-config.xml";InputStream is=Resources.getResourceAsStream(resource);factory=new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}/*** 创建SqlSession对象* @return*/public static SqlSession createSession(){return factory.openSession(false);//true为自动提交事务,true为默认值 }/*** 关闭SqlSession对象* @param session*/public static void closeSession(SqlSession session){if (session!=null) {session.close();}} }
package com.ssm.test;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.ssm.entity.Address; import com.ssm.entity.User; import com.ssm.mapper.UserMapper; import com.ssm.utils.MyBatisUtil;public class TestUser {public static void main(String[] args) {SqlSession session=null;List<User> userList;/*** 查询所有user的集合*/try {session=MyBatisUtil.createSession();userList = session.getMapper(UserMapper.class).getUserList();for (User user : userList) {System.out.println("userid:"+user.getId()+"\tuserName:"+user.getUserName());}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}finally{MyBatisUtil.closeSession(session);}} }
转载于:https://www.cnblogs.com/chopper-zx/p/7866907.html
MyBatis核心接口和类相关推荐
- 【大话Hibernate】Hibernate的核心接口和类
Hibernate的核心类和接口一共有6个,分别为:Session.SessionFactory. Transaction.Query.Criteria和Configuration.这6个核心和类接口 ...
- 第二篇:mybatis核心接口
基本上mybatis的官网已经提供了很完善的入门文档,参考这个基本就可以明白了 https://mybatis.org/mybatis-3/zh/getting-started.htmlz 主要的入门 ...
- Mybatis源码阅读(四):核心接口4.1——StatementHandler
*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...
- Hibernate学习(二):heibernate核心接口
Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate API访问数据库,还可 ...
- Mybatis源码阅读(四):核心接口4.2——Executor(上)
*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...
- java 用面向接口编程的方式开发打印机_Java“打印机”模型理解面向接口编程。实现接口定义类,接口实现类,核心“业务”类分离...
接口定义类 IinkBox.java package printerDemo.iface; public interface IInkBox { public String getColor(); } ...
- Java 核心五个类(File、Outputstream、Inputstream、Reader、Writer)一个接口(Serializable)...
java BIO(阻塞式IO) java.io 核心五个类(File.Outputstream.Inputstream.Reader.Writer)一个接口(Serializable) 1.Fi ...
- Mybatis DAO接口为什么不需要实现类
2019独角兽企业重金招聘Python工程师标准>>> Java动态代理 代理模式在GoF设计模式尤为突出,Spring AOP 就是代理模式的一个例子,而且它使用的也是JDK的动态 ...
- java元婴期(23)----java进阶(mybatis(2)---mapper代理mybatis核心配置文件输入输出映射)
1.mapper代理 1.mybatis开发dao的方法----引入(为啥要使用mapper代理) 1.SqlSession使用范围 1.SqlSessionFactoryBuilder 通过SqlS ...
最新文章
- java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...
- hdu1556 线段树段更新(简单题)
- Quartz2D简单图形
- 矩阵置零—leetcode73
- 小师妹学JVM之:逃逸分析和TLAB
- 模型的搜索和优化方法综述:
- mysql 使用jdbctemplate_SpringBoot学习笔记-使用jdbcTemplate访问mysql
- 网络相关的常用协议总结
- SCOM 常识概念—与其他SC产品集成
- Leetcode796.Rotate String旋转字符串
- loadrunner—web_url
- LICEcap 录制Gif动画
- testmarkdown
- GitHub的page构建自己的博客以及添加自己的域名
- 【转载】UMTS和GSM的架构
- 实例详解ISA防火墙策略元素
- Linux内核启动去掉企鹅,linux更换启动时的小企鹅图片
- nn.Linear()函数详解及代码使用
- 大多数的愤怒源于自己的无知——《Excel受保护视图》
- 专访 | Draven:像写代码一样,用树形的结构写文章
热门文章
- 创建物化视图commit_oracle慎用基于on commit刷新物化视图的方式(一)
- linux下如何为redis配置path,linux环境下如何启动redis
- 奥鹏17计算机应用基础离线,奥鹏《计算机应用基础》离线
- git 修改commit_Git从8到13 深入了解Git特性
- 高通cpu排行_安卓手机芯片排行:麒麟990 5G仅排第三,980还输给了765G?
- 对于计算机网络技术的课程,计算机网络技术课程剖析.doc
- 方正计算机软件保护进超级用户,超级用户权限补丁(SuperSU Pro)含刷机包
- centos7 修改为任意网卡名_VirtualBox虚拟机双网卡配置实现与本机互通并上网
- ENSP配置 实例二 单臂路由配置
- mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)