前言

上一回我们完成了数据库配置文件的读取和解析工作,有了这些准备工作,我们就可以与数据库创建连接和会话了,所谓sqlSession就是数据库的会话,一切增删查改操作都是在与数据库的会话中完成,下面我们来讲一些这方面的知识。

生产sqlSession、与数据库进行会话

这里我们会使用工厂模式,我们会用到三个类:SqlSessionFactoryBuilder(用于创建工厂对象)、SqlSessionFactory(sqlSession的工厂接口)和DefaultSqlSessionFactory(sqlSession的实现类,负责生产sqlSession),这几个类都创建与“sqlSession”包下,相关的代码如下所示:

1 package com.hardy.sqlSession;
2
3 public interface SqlSessionFactory {
4
5 public SqlSession openSession();
6 }
 1 package com.hardy.sqlSession;
2
3 import com.hardy.pojo.Configuration;
4
5 public class DefaultSqlSessionFactory implements SqlSessionFactory {
6
7 private Configuration configuration;
8
9 public DefaultSqlSessionFactory(Configuration configuration) {
10 this.configuration = configuration;
11 }
12
13 @Override
14 public SqlSession openSession() {
15 return new DefaultSqlSession(configuration);
16 }
17
18 }
 1 package com.hardy.sqlSession;
2
3 import com.hardy.config.XMLConfigBuilder;
4 import com.hardy.pojo.Configuration;
5 import org.dom4j.DocumentException;
6
7 import java.beans.PropertyVetoException;
8 import java.io.InputStream;
9
10 public class SqlSessionFactoryBuilder {
11
12 private Configuration configuration;
13
14 public SqlSessionFactoryBuilder() {
15 this.configuration = new Configuration();
16 }
17
18 public SqlSessionFactory builder(InputStream in) throws ClassNotFoundException, PropertyVetoException, DocumentException {
19 // 1、使用dom4j解析配置文件,讲解析出来的内容封装到Configuration中
20 XMLConfigBuilder xmlConfigBuilder = new XMLConfigBuilder(configuration);
21 Configuration configuration = xmlConfigBuilder.parseConfiguration(in);
22
23 // 2、创建SqlSessionFactory对象:工厂类(生产sqlSession)
24 DefaultSqlSessionFactory defaultSqlSessionFactory = new DefaultSqlSessionFactory(configuration);
25
26 return defaultSqlSessionFactory;
27
28 }
29
30 }

总结

今天我们完成了生产sqlSession的工作,到这里,我们已经可以连接数据库并与数据库进行会话了,那么接下来就是要制定会话的内容了。与数据库的会话,无非是增删查改,下一篇文章,我们会对CRUD操作的增删查改等方法进行封装。

Mybatis学习之自定义持久层框架(四) 自定义持久层框架:生产sqlSession的更多相关文章

  1. 【MyBatis学习笔记】

    [MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...

  2. Mybatis学习之自定义持久层框架(七) 自定义持久层框架优化

    前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配 ...

  3. Mybatis学习之自定义持久层框架(二) 自定义持久层框架设计思路

    前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下 ...

  4. Mybatis学习之自定义持久层框架(五) 自定义持久层框架:封装CRUD操作

    前言 上一篇文章我们完成了生产sqlSession的工作,与数据库的连接和创建会话的工作都已完成,今天我们可以来决定会话的内容了. 封装CRUD操作 首先我们需要创建一个SqlSession接口类,在 ...

  5. Mybatis(一):手写一套持久层框架

    作者 : 潘潘 未来半年,有幸与导师们一起学习交流,趁这个机会,把所学所感记录下来. 「封面图」 自毕业以后,自己先创业后上班,浮沉了近8年,内心着实焦躁,虽一直是走科班路线,但在技术道路上却始终没静 ...

  6. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

  7. mybatis学习笔记之基础框架(2)

    mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...

  8. 【MyBatis学习01】宏观上把握MyBatis框架

    今天开始学习mybatis框架,博客主要记录学习过程中的一些总结,如有错误之处,欢迎留言指正~先用mybatis的鸟鸟来镇个楼,咳咳~~ mybatis框架是一个持久层框架,是Apache下的顶级项目 ...

  9. MyBatis学习 之 四、MyBatis配置文件

    目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...

  10. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    [转]MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...

随机推荐

  1. POJ_1797 Heavy Transportation 【最大生成树的最小边】

    一.题目 POJ1797 二.分析 题意就是让你找到从1到n的一条路,由于边的最大称重限制,你需要确定限制的最小值,也就是能运输的最大值. 可以结合最小生成树想,利用并查集,然后不断更新答案即可,需要 ...

  2. css实现京东顶部导航条

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  3. 【.NET 与树莓派】小风扇模块

    小风扇,其实就是一个电机(马达),然后轴子上套一个扇叶.扇叶有两叶的,也有三叶的.这种我们小时候没少玩,太阳能帽子上就有一个小风扇,骑着自行车上学,路上只要有太阳光照射到,小风扇就会转.当然还有装干电 ...

  4. python3 int() 各数据类型转int

    print(int('0b1010',0))#二进制数print(int('0xa',0))#十六进制数print(int('0xa',16))print(int('a',16))print(int( ...

  5. 四、MYSQL数据练习题

    我的MYSQL版本是mysql-5.7.24-winx64,每天练习5道习题. 如果有错误或者更优的解决方法,欢迎大家指出,谢谢!! 一.测试表格 --1.学生表Student(Sid,Sname,S ...

  6. 手机浏览器通过Scheme跳转APP,兼容各种手机浏览器

    一个比较完整的产品线,必定有APP和网站,另外还有微信公众号网页和小程序.那么有一个比较常见的需求就是在手机浏览器内打开APP,实现起来也比较简单,只要APP配置的有URLScheme即可. 但是因为 ...

  7. pwn题命令行解题脚本

    目录 脚本说明 脚本内容 使用 使用示例 参考与引用 脚本说明 这是专门为本地调试与远程答题准备的脚本,依靠命令行参数进行控制. 本脚本支持的功能有: 本地调试 开启tmux调试 设置gdb断点,支持 ...

  8. C++并发与多线程学习笔记--互斥量、用法、死锁概念

    互斥量(mutex)的基本概念 互斥量的用法 lock(), unlock() std::lock_guard类模板 死锁 死锁演示 死锁的一般解决方案 std::lock()函数模板 std::lo ...

  9. 000 - 准备工作ADB wifi连接多台鸿蒙设备进行调试

    首先将两台鸿蒙设备插入电脑的usb上 查看两台鸿蒙设备的deviceid C:\Users\Administrator>adb devices * daemon not running; sta ...

  10. Python 高级进阶知识(一)

    参考 Python学习手册 第四版 1 from vs import import 模块 : 导入的一整个模块(python中模块对应一个py文件) 因为import使用一个变量名引用整个模块对象,所 ...