MyBatis使用步骤及原理
主要讲解MyBatis-基本使用步骤
回顾:
MyBatis是一个数据持久层(ORM)框架。把实体 类和SQL语句之间建立了映射关系,是一种半自 动化的ORM实现。MyBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充。
MyBatis基本要素:
1. configuration.xml 全局配置文件【SqlMapConfig.xml文件】
2. xml映射文件(mapper)—实体类
3. SqlSession接口
MyBatis主要执行流程:
1. mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,
其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的 信息。
2. mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,即会话工厂。
3. 通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。
4. SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
5. Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。
该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。
实战讲解,干货来袭
1.导包
需要的jar包:mybatis-3.2.7.jar,mysql-connector-java-5.1.8.jar;[其他版本也可以]
2.日志文件log4j.properties
用于输出一些调试信息(包括SQL语句\输入参数\结果的数目)
可以根据需要配置参数,方便debug。
3.编写MyBatis的核心配置文件SqlMapConfig.xml 【全局配置文件:SqlMapConfig.xml】
这里给出db.properties配置文件的详细目录和内容。
4.编写实体类User --对应数据库中的user表
5.编写Mapper映射文件User.xml 【重点】
映射文件就是框架的核心啦,下面这个文件就配置了java对象与数据库表之间的映射。
我们看到,其中4个标签:select,insert ,delete ,update 分别对应着“查,增,删,改”操作。每个标签中还有一些属性,下面来解释下:
- id:给标签体内的sql操作起个名字,方便调用。
- parameterType:传入参数的类型。传入java类型,转化为sql类型,添加到sql语句上。
- resultType:返回结果类型。sql结果集转化为java类型并返回。
- 【Mapper.xml映射文件,这里推荐一篇文章讲解映射文件的,个人感觉还不错】
6.编写测试方法 【使用JUnit】
希望通过这篇文章 ,能让读者简单了解MyBatis开发的过程。当然这也是最简单使用MyBatis了,MyBatis代理开发、逆向工程等高级开发有时间我会写一写,希望对大家有帮助。
有需要完整学习MyBatis的可以点击下载【完整MyBatis学习笔记】
在写完Spring+MyBatis+Spring MVC等文章后、我整理了一套【完整实战文档】,有需要的点击下载
MyBatis使用步骤及原理的更多相关文章
- mybatis笔记3 一些原理的理解
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...
- MHA在线切换的步骤及原理
在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...
- MySQL高可用方案MHA在线切换的步骤及原理
在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...
- Mybatis拦截器实现原理深度分析
1.拦截器简介 拦截器可以说使我们平时开发经常用到的技术了,Spring AOP.Mybatis自定义插件原理都是基于拦截器实现的,而拦截器又是以动态代理为基础实现的,每个框架对拦截器的实现不完全相同 ...
- 深度分析:mybatis的底层实现原理,看完你学会了吗?
前言 最近在和粉丝聊天的时候被粉丝问到jdbc和mybatis底层实现这一块的问题,而且还不止一个小伙伴问到,于是我似乎认识到了问题的严重性,我花了两天时间整理了一下自己的认识和网上查阅的资料写了这篇 ...
- Mybatis解析动态sql原理分析
前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...
- Mybatis Interceptor 拦截器原理 源码分析
Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最 ...
- mybatis入门-mapper代理原理
原始dao层开发 在我们用mybatis开发了第一个小程序后,相信大家对于dao层的开发其实已经有了一个大概的思路了.其他的配置不用变,将原来的test方法,该为dao的方法,将原来的返回值,直接在d ...
- MyBatis:二级缓存原理分析
MyBatis从入门到放弃七:二级缓存原理分析 前言 说起mybatis的一级缓存和二级缓存我特意问了几个身边的朋友他们平时会不会用,结果没有一个人平时业务场景中用. 好吧,那我暂且用来学习源码吧.一 ...
随机推荐
- amr格式转mp3和直接播放amr格式的文件-sunziren
原创文章,转载请注明出处! 前言: amr作为一种高压缩比的音频格式,受到很多客户的青睐.本文主要涉及两部分的内容,一是amr如何转为mp3格式,二是如何直接播放amr格式的文件. 1. 如何使用Ja ...
- HTTP协议、时间戳、防盗链的一些概念
HTTP协议 什么是HTTP协议 (HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一 ...
- 【JavaScript】JS总结 – 乱
一. 重要:js中的function函数声明.函数表达式 // 函数声明 // Ex: 会在代码执行之前提前加载到作用域中,即js解析器会优先读取,确保在所有代码执行之前声明已经被解析:所以可以在定义 ...
- 杜教筛BM
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> # ...
- Cows Of The Round Table【DFS】
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAz0AAAKiCAIAAABzTSUAAAAgAElEQVR4Aey9C5RnWVXff4GBUR6j8u ...
- LeetCode 965. 单值二叉树 (遍历二叉树)
题目链接:https://leetcode-cn.com/problems/univalued-binary-tree/ 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树. 只有给定的树是 ...
- 题解 AT5632 【Sum of Two Integers】
在幼儿园的时候,我们就学习过把一个数分成\(a\)与\(b\),我们只需要用计算机来模拟这个过程就可以了. 我们先从奇数开始看起,以\(5\)为例: 我们可以发现,\(5\)可以分成\(1\)和\(4 ...
- python3练习100题——045
题目:统计 1 到 100 之和. sum(range(1,101)) 题目太容易了,我都不想用迭代浪费时间. 觉得这100道题难度设计越来越不合理.
- 为什么要使用Redis? —— Redis实战经验
(序言,从一张思维导图开始,慢慢介绍我自己关于Redis的实战经验) 现在很多互联网应用的服务端都使用到了Redis,到底大家为什么要用Redis呢?Redis有很多特性,比如高性能.高可用.数据类型 ...
- css 基础教程学习
css基础语法 css语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 选择器通常是您需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 如果要定义不止一个声明,则 ...