1.0 MyBatis 对象分析

(1) Resources 类
Resources 类,顾名思义就是资源,用于读取资源文件。其有很多方法通过加载并解析资源文件,返回不同类型的 IO 流对象。

(2) SqlSessionFactoryBuilder 类
SqlSessionFactory 的 创 建 , 需 要 使 用 SqlSessionFactoryBuilder 对 象 的 build() 方 法 。 由 于SqlSessionFactoryBuilder 对象在创建完工厂对象后,就完成了其历史使命,即可被销毁。所以,一般会将该 SqlSessionFactoryBuilder 对象创建为一个方法内的局部对象,方法结束,对象销毁。

(3) SqlSessionFactory 接口
SqlSessionFactory 接口对象是一个重量级对象(系统开销大的对象),是线程安全的,所以一个应用只需要一个该对象即可。创建 SqlSession 需要使用 SqlSessionFactory 接口的的 openSession()方法。
➢ openSession(true):创建一个有自动提交功能的 SqlSession
➢ openSession(false):创建一个非自动提交功能的 SqlSession,需手动提交
➢ openSession():同 openSession(false)

(4) SqlSession 接口
SqlSession 接口对象用于执行持久化操作。一个 SqlSession 对应着一次数据库会话,一次会话以SqlSession 对象的创建开始,以 SqlSession 对象的关闭结束。
SqlSession 接口定义了操作数据的方法 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback()
SqlSession 接口对象是线程不安全的,所以每次数据库会话结束前,需要马上调用其 close()方法,将其关闭。再次需要会话,再次创建。 SqlSession 在方法内部创建,使用完毕后关闭。

1.1创建工具类,简化代码

(1) 创建 MyBatisUtils 类
在zep文件夹下新建utils文件夹,并在utils文件夹下创建MyBatisUtils 工具类

package com.zep.utils;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class MybatisUtils {private static SqlSessionFactory factory = null;/*静态代码块:执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁*///使用 静态块 创建一次 SqlSessionFactorystatic {String config = "mybatis.xml"; //需要和你的项目中的文件名一样try {//读取配置文件InputStream in = Resources.getResourceAsStream(config);//创建SqlSessionFactory对象,使用SqlSessionFactoryBuilderfactory = new SqlSessionFactoryBuilder().build(in);} catch (IOException e) {e.printStackTrace();}}// 获取SqlSession对象的方法public static SqlSession getSqlSession() {SqlSession sqlSession = null;if (factory != null) {sqlSession = factory.openSession(); // 非自动提交事务}return sqlSession;}
}

(2) 使用 MyBatisUtil 类
通过MybatisUtils.getSqlSession()直接获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession()

package com.zep;import com.zep.domain.Student;
import com.zep.utils.MybatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class MyApp2 {public static void main(String[] args) throws IOException {// 5.【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSessionSqlSession sqlSession = MybatisUtils.getSqlSession();// 6.【重要】指定要执行的sql语句的标识。sql映射文件中的namespace + “.” + 标签的id值String sqlId = "com.zep.dao.StudentDao"+ "." +"selectStudents";// 7.执行sql语句,通过sqlId找到语句List<Student> studentList = sqlSession.selectList(sqlId);// 8.输出结果// studentList.forEach(student -> System.out.println(student));for (Student student : studentList) {System.out.println("查询到的学生=" + student);}// 9.关闭SqlSession对象sqlSession.close();}
}

运行结果如下:

二、MyBatis常用对象分析 封装工具类相关推荐

  1. MySQL JDBC常用知识,封装工具类,时区问题配置,SQL注入问题

    JDBC JDBC介绍 Sun公司为了简化开发人员的(对数据库的统一)操作,提供了(Java操作数据库的)规范,俗称JDBC,这些规范的由具体由具体的厂商去做 对于开发人员来说,我们只需要掌握JDBC ...

  2. 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作

    JDBC简介 1.JDBC定义Java数据库连接(Java Database Connectivity,简称JDBC):是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询 ...

  3. 前端常用的 59 个工具类【持续更新】

    #前端常用的 59 个工具类[持续更新] 前言 前端开发有时会处理一部分后台返回的数据,或者根据数据判断做一些处理; 这个时候就非常有必要将一些常用的工具类封装起来; 本文根据常用的一些工具类封装了 ...

  4. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块...

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  5. 常用的分析管理工具方法【整理】

    常用的分析管理工具方法 常用的分析管理工具方法 二八原则 SWOT分析法 鱼骨图分析法 5M因素分析法 5M1E分析法 头脑风暴法 名义群体法 德尔菲法 电子会议分析法 几种决策方法比较 PDCA循环 ...

  6. JDBC(本质,配置环境变量,JDBC编程六步,类加载注册,sql注入,事务问题,封装工具类,悲观锁,乐观锁)

    JDBC 2021.5.21 依然跟着动力节点杜老师学!!! 1.什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句,对mysql数据库中的数据进行 ...

  7. 仿京东APP分类页面(mvp模式+OkHttp封装工具类+拦截器+弱引用回收)

    仿京东APP分类页面: 添加依赖 compile 'com.android.support:recyclerview-v7:24.0.0' compile 'com.google.code.gson: ...

  8. JAVA——Okhttp封装工具类

    基本概念 OKhttp:一个处理网络请求的开源项目,是安卓端最火热的轻量级框架. Maven <!--OK HTTP Client--><dependency><grou ...

  9. 四、EasyExcel实现Excel读写,封装工具类

    在项目中,我们经常用到EasyExcel框架实现:对Excel文件的读写操作.为了方便后续其他项目中的使用,将对Excel文件的读写操作,封装成工具类. 一.EasyExcel实现Excel读写,封装 ...

最新文章

  1. codeforces round 421 div2 补题 CF 820 A-E
  2. 三极管的发射极与集电极之间的关系
  3. numpy的常规使用(数组合并、拼接、添加)
  4. 打破信息孤岛完成EAI
  5. python学习-综合练习(平方根、海伦公式、随机数、转换函数、数值交换)
  6. 微软:求你们别再用 IE 浏览器了
  7. 无痕模式后如何找到历史_离异后女人如何快速找到对象?成都百和情缘婚介告诉你...
  8. Stanford CS230深度学习(三)调参、正则化和优化算法
  9. docker rocketmq 安装及使用
  10. 思考的乐趣:Matrix67数学笔记
  11. URL传递参数长度限制
  12. 台式计算机液晶显示屏尺寸,台式电脑显示屏共有多少种尺寸?
  13. python表示倍数的英语句型_英语倍数表达法
  14. vCenter资源池
  15. svm神经网络葡萄酒matlab,SVM神经网络的数据分类预测--葡萄酒种类识别
  16. C语言中的取绝对值函数
  17. python怎么搜索文献_python论文参考文献有哪些
  18. 数据库 redis
  19. keras神经风格迁移_知识分享 | 神经风格迁移-把每一张图片都变成自己喜欢的样子...
  20. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之 Model Confidence v2

热门文章

  1. mvn 打包_Spark源码打包编译的过程
  2. android 代码写命令,monkey基本命令及脚本编写(示例代码)
  3. VS2017 安装 QT5.9
  4. 如何在VMWare的Ubuntu虚拟机中设置共享文件夹
  5. vs2010创建和使用动态链接库(dll)
  6. vux 混合式开发
  7. wowbl最优势的服务器,CWOW中BL为什么远远多于LM一个新手之见
  8. 汇编指令的学习1——ARM汇编的特点
  9. java公钥加密私钥解密过程_GPG加密解密过程
  10. 多个域名向主域名自动跳转的Nginx配置