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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中的数组怎么转成结构体_传说中的“衡水体”应该怎么练?

传说中的“衡水体”应该怎么练&#xff1f;我也不知道&#xff0c;哈哈哈哈哈哈。因为我之前关于衡水体的回答最高赞评论说我这个不是衡水体……随便写的之前的回答所以&#xff0c;这篇文章纯属交流分享&#xff0c;同时枯燥无味&#xff0c;可能适合觉得自己书写不好看的高中…

windows 显示苹果分区_基准测试数据显示苹果M1运行Windows的表现比微软自家硬件好上近一倍...

根据最新的基准测试&#xff0c;苹果M1运行 "Windows 10 on ARM "的速度比微软自家的硬件快了近2倍。更新后的基准数据显示&#xff0c;苹果M1上的Windows 10比Surface Pro X快得多&#xff0c;这还是配备了基于骁龙8cx的处理器的Surface Pro X原生运行该操作系统的环…

centos7默认字体_CentOS7.5字体美化

背景知识有衬线 (Serif) 无衬线 (Sans Serif) 和等宽 (Monospace) 字型1 有衬线 (Serif) 字型是比较正式的字体&#xff0c;比划粗细不一&#xff0c;在笔划的边缘有装饰部分(我的理解是有笔锋)。英文当中比较有名的包括 Times New Roman, Georgia, 而中文当中则是包括大名鼎鼎…

翻译:通向T-SQL的阶梯:超越基础水平3:建立相关子查询

原文链接&#xff1a;http://www.sqlservercentral.com/articles/StairwaySeries/105972/ 原文作者&#xff1a;Gregory Larsen 该系列 本文是楼梯系列的一部分:通向T-SQL的阶梯:超越基础水平 从他的t - sql DML楼梯后,格雷戈里拉森涵盖了更高级的子查询等方面的t - sql语言。…

筛选中很容易粘贴到被隐藏部分_excel复制粘贴:如何将数据粘贴到筛选区域中?...

编按&#xff1a;哈喽&#xff0c;大家好&#xff01;看到标题相信大家都会纳闷吧。复制粘贴不是excel中最简单&#xff0c;最基础的操作吗&#xff1f;怎么可能90%的人都不会呢&#xff1f;今天咱们要说的可不是普通的复制粘贴&#xff0c;而是将数据复制粘贴到筛选后的区域中…

python 发邮件_Python发邮件告别smtplib,迎接zmail

之前介绍过smtplib发邮件代码&#xff0c;直到今天仍有人在这里遇到问题。而且代码复杂&#xff0c;解释起来很麻烦&#xff0c;今天给大家介绍一个新的发邮件方法——zmailzmail的优势自动填充头信息将一个字典映射为email&#xff0c;构造邮件相当于构造字典自动寻找邮件服务…

重复数据_MongoDB 自动过滤重复数据

摘要&#xff1a;使用 update_one() 方法而不是 insert_one() 插入数据。相信你一定有过这样的经历&#xff1a;大晚上好不容易写好一个爬虫&#xff0c;添加了种种可能出现的异常处理&#xff0c;测试了很多遍都没有问题&#xff0c;点击了 RUN 开始正式运行 &#xff0c;然后…

多个canvas画布合并_canvas的基础入门

nvas是定义在浏览器上的画布。它不仅仅是一个标签元素更是一个编程工具是一套编程的接口。利用它可以开发出很多东西&#xff0c;比如动画&#xff0c;游戏&#xff0c;动态的图表等富有变现力和感染力的应用。还可以开发出绚丽的3D动态效果。接下来我们一起学习&#xff01;一…

AngularJS 计时器

<div ng-controller"MyController"><!--显示$scope.clock的now属性--><h1>hello {{clock.now}}</h1><!--显示$scope.clock&#xff0c;里面有一个属性now--><h1>hello {{clock}}</h1> </div><script src"ht…

Rulo扫地机器人app_扫地机器人怎么选?扫地机器人怎么用

扫地机器人又称自动打扫机、智能吸尘、机器人吸尘器等&#xff0c;是智能家用电器的一种&#xff0c;能凭借一定的人工智能&#xff0c;自动在房间内完成地板清理工作。一般采用刷扫和真空方式&#xff0c;将地面杂物先吸纳进入自身的垃圾收纳盒&#xff0c;从而完成地面清理的…

python七巧板三角形_用七巧板拼出14种三角形,这才是图形认知的神器!

原标题&#xff1a;用七巧板拼出14种三角形&#xff0c;这才是图形认知的神器&#xff01;随着幼升小越来越注重孩子的图形认知能力&#xff0c;很多名校幼升小都选择了七巧板作为考验孩子的题目&#xff01;比如北京实验二小09年的幼升小考题中&#xff0c;就有一道“用七巧板…

Docker 容器的常用命令

容器常用的管理命令1. 创建并启动容器 docker rundocker run 创建并启动一个容器&#xff0c;在run后面加上-d参数&#xff0c;则会创建一个守护式容器在后台运行。注&#xff1a; docker run将在下一章节中具体描述2. 查看docker ps -a 查看已经创建的容器3. 停止 docke…

如何在graphpad表示出正负误差_Graphpad Prism:SCI科研论文中误差连线图怎么做

这是一篇高分SCI论文中的图&#xff0c;图中间为均值、均值上下方的浅色为数据误差&#xff0c;即误差连线图。今天跟大家分享如何使用GraphpadPrism作这么好看的图!打开软件&#xff0c;选择XY&#xff0c;按照下图新建折线图&#xff1a;输入数据&#xff1a;得到下图所示折线…

python3123_使用sox和python,基于时间戳列表对音频区域进行静音处理

我有一个音频文件。我有一堆[开始&#xff0c;结束]时间戳段。在我想要实现的目标&#xff1a;假设音频长度为6:00分钟。我有段是&#xff1a;[[0.0,4.0]&#xff0c;[8.0,12.0]&#xff0c;[16.0,20.0]&#xff0c;[24.0,28.0]]在我把这两个传递给soxpython之后&#xff0c;输…

ajax post 传参数加引号和不加引号的区别

1.前言 用ajax技术&#xff0c;type&#xff1a;post&#xff0c;data&#xff1a;参数列表。参数列表就是一个JSON数据&#xff0c;但key可以加引号&#xff0c;也可以不加引号&#xff0c;那总有区别的。 2.区别 var d2 "two"; var d4 "four"; var idAr…

工业机器人专业展板图片_南充职业技术学院工业机器人专业线下课程开展情况...

2020年5月18日&#xff0c;南充职业技术学院线下课程已全面展开&#xff0c;下面是工业机器人技术专业的开课情况。历时4个多月的假期&#xff0c;即将开课。在开课前两天&#xff0c;我司专业教师到学院检查维护机器人设备&#xff0c;以保障学生们能够正常使用工业机器人相关…

vmware挂载san存储_细述企业级存储NAS和SAN差异

常见服务器磁盘类型SAS&#xff1a;容量小&#xff0c;300G&#xff0c;600G&#xff0c;价格贵SATA&#xff1a;容量大&#xff0c;4T&#xff0c;不支持热插拔&#xff0c;价格低假SAS&#xff1a;容量大&#xff0c;支持热插拔&#xff0c;价格低&#xff0c;(就是SAS接口的…

蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

声明&#xff1a;这篇文章转载beautifulzzzz笔记&#xff0c;网址&#xff1a;http://www.cnblogs.com/zjutlitao/&#xff0c;其中比较多的受益于xubin341719的蓝牙系列文章&#xff0c;同时还有其他网上作者的资料。由于有些文章只做参考或统计不足&#xff0c;如涉及版权请在…

初中英语多词性单词怎么办_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...

英语阅读理解生僻单词太多怎么办&#xff1f;今天&#xff0c;胡老师告诉你猜词十大招数&#xff0c;帮助同学们英语考试拿高分。01 构词法阅读中常常会遇到一些由熟悉的单词派生或合成的新词。掌握构词法对猜测词义很有帮助。如&#xff1a;unforeseeable.这个词&#xff0c;可…

springboot jwt token前后端分离_基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目...

一、前言最近整合Spring BootSpring SecurityJWTVue 完成了一套前后端分离的基础项目&#xff0c;这里把它开源出来分享给有需要的小伙伴们功能很简单&#xff0c;单点登录&#xff0c;前后端动态权限配置&#xff0c;前端权限精确到 按钮 级别&#xff0c;后端权限精确到 url …