MyBatis(二):自定义持久层框架思路分析
使用端
- 引入架构端Maven依赖
 - SqlMapConfig.xml—数据库配置信息(数据库连接jar名称、连接URL、用户名、密码),引入Mapper.xml的路径
 - XxMapper.xml—SQL配置信息(SQL语句、参数类型、返回值类型)
 
架构端(本质对JDBC封装)
加载使用端配置信息(数据库配置信息、SQL配置信息)为输入流,读入内存
解析配置文件输入流(使用Dom4j解析)
 创建SqlSessionFactoryBuilder类,编写build()方法,用户创建SqlSessionFactory对象,传入已加载的配置文件输入流,使用Dom4j解析XML,封装至Configuration、MappedStatement中
Configuration—封装SqlMapConfig.xml信息
MappedStatement—封装XxMapper.xml信息
创建SqlSessionFactory接口及实现类 DefaultSqlSessionFactory
定义openSession()方法,用于生产SqlSession会话对象
创建SqlSession接口及实现类DefaultSqlSession
定义CRUD操作:selectOne()、selectList()、update()、delete()、insert(),调用Executor的实现方法
创建Executor接口及实现类SimpleExecutor
编写query()、insert()、update()、delete()执行JDBC代码,参数需要传入Configuration、MappedStatement对象以及可变参数列表Object...params
MyBatis(二):自定义持久层框架思路分析的更多相关文章
- MyBatis(四):自定义持久层框架优化
		
本文所有代码已上传至码云:https://gitee.com/rangers-sun/mybatis 修改IUserDao.UserMapper.xml package com.rangers; im ...
 - MyBatis(三):自定义持久层框架实现
		
代码已上传至码云:https://gitee.com/rangers-sun/mybatis 新建Maven工程 架构端MyPersistent.使用端MyPersistentTest,使用端引入架构 ...
 - Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架
		
目录 任务一:自定义持久层框架 1.1 JDBC回顾及问题分析 1.2 自定义持久层框架思路分析 1.3 IPersistence_Test编写 1.3.1 XXXMapper.xml详解 1.3.2 ...
 - 【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架
		
以下笔记是我看完视频之后总结整理的,部分较为基础的知识点也做了补充,如有问题欢迎沟通. 目录 任务一:自定义持久层框架 1.1 JDBC回顾及问题分析 1.2 自定义持久层框架思路分析 1.3 IPe ...
 - Mybatis学习之自定义持久层框架(二) 自定义持久层框架设计思路
		
前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下 ...
 - Mybatis学习之自定义持久层框架(三) 自定义持久层框架:读取并解析配置文件
		
前言 前两篇文章分别讲解了JDBC和Mybatis的基本知识,以及自定义持久层框架的设计思路,从这篇文章开始,我们正式来实现一个持久层框架. 新建一个项目 首先我们新建一个maven项目,将其命名为I ...
 - Mybatis学习之自定义持久层框架(七) 自定义持久层框架优化
		
前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配 ...
 - Mybatis学习之自定义持久层框架(六) 自定义持久层框架:完善CRUD方法并进行测试
		
前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善Defaul ...
 - Mybatis学习之自定义持久层框架(一) 为什么要用框架而不直接用JDBC?
		
前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访 ...
 
随机推荐
- Centos 7 安装nginx指定版本
			
官方版本列表:http://nginx.org/download/ 1.安装 wget http://nginx.org/download/nginx-1.10.3.tar.gz tar -zxvf ...
 - Leetcode(871)-最低加油次数
			
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处. 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 s ...
 - hdu 4497 GCD and LCM (非原创)
			
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
 - Java | 在 Java 中执行动态表达式语句: 前中后缀、Ognl、SpEL、Groovy、Jexl3
			
在一些规则集或者工作流项目中,经常会遇到动态解析表达式并执行得出结果的功能. 规则引擎是一种嵌入在应用程序中的组件,它可以将业务规则从业务代码中剥离出来,使用预先定义好的语义规范来实现这些剥离出来的业 ...
 - SVG background watermark
			
SVG background watermark SVG 背景水印 <svg xmlns="http://www.w3.org/2000/svg" width="2 ...
 - HHVM的全称是"HipHop for PHP",开放源代码。采用PHP许可证授权!
			
http://hhvm.com/ https://github.com/xgqfrms/hhvm 什么是HHVM高性能服务器? HHVM是由Facebook公司出品的高性能开源服务器,用来执行hack ...
 - how to make one you own free online tutorials in minutes
			
how to make one you own free online tutorials in minutes educative.io https://www.educative.io/colle ...
 - TypeScript 面试题汇总(2020 版)
			
TypeScript 面试题汇总(2020 版) TypeScript 3.9 https://www.typescriptlang.org/zh/ TypeScript 4.0 RC https:/ ...
 - node.js delete directory & file system
			
node.js delete directory & file system delete a not empty directory https://nodejs.org/api/fs.ht ...
 - auto open Chrome DevTools in the command line
			
auto open Chrome DevTools in the command line --auto-open-devtools-for-tabs # macOS $ /Applications/ ...