MyBatis

mybatis源码分析

一世执手 提交于 2020-03-12 16:30:23
Mybatis源码分析 @Author :zxw @School :吉首大学 1.源码启动剖析 先来看看基础的代码 // 获取SqlsessionFactory工厂 SqlSessionFactory build = new SqlSessionFactoryBuilder (). build ( Resources . getResourceAsStream ( "mybatis-config.xml" )); // 获取sqlsession SqlSession sqlSession = build . openSession (); // 获取我们的Mapper对象 NewMapper mapper = sqlSession . getMapper ( NewMapper . class ); New byId = mapper . findById (); New byId2 = mapper . findById (); System . out . println ( byId == byId2 ); 1.1 SqlSessionFactory构建 我们先来看看SqlSessionFactory对象里有什么,其实只有一个Configuration对象,Configuration对象就是我们的核心了,里面有我们配置文件的信息以及缓存相关等等。 // build(

Spring+Mybatis+Spring MVC

匆匆过客 提交于 2020-03-12 11:15:50
1、ssm 1.1、认识 ssm是spring mvc,spring,mybatis的集合,是标准的mvc模式,将整个系统划分成为表现层,controller层,service层,dao层共四层。 spring mvc负责请求的转发与视图管理 spring负责业务对象管理 mybatis作为数据对象的持久化引擎 1.2、优点 1.2.1、Spring的优势: 通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,方便解耦,简化了开发 通过Spring的AOP特性,对重复模块进行集中,实现事务,日志,权限的控制 提供了对其他优秀开源框架的集成支持 1.2.2、Spring MVC的优势: SpringMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,使我们开发更简洁 与Spring无缝衔接 灵活的数据验证,格式化,数据绑定机制 1.2.3、Mybatis的优势: 数据库的操作(sql)采用xml文件配置,解除了sql和代码的耦合 提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建 提供了xml标签,支持动态的sql 2、整合案例 2.1、之前 在进行ssm整合时,需要建立maven web项目 建立之后,首先将spring与mybatis整合在一起,在将spring mvc整合进去。添加一些文件。

Mybatis-配置解析

白昼怎懂夜的黑 提交于 2020-03-12 10:11:51
1.配置解析 1.核心配置文件 mybatis-config.xml MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下: configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments (环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器) 2.environments-环境配置 MyBatis 可以配置成适应多种环境, 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。 注意一些关键点: 默认使用的环境 ID(比如:default=“development”)。 每个 environment 元素定义的环境 ID(比如:id=“development”)。 事务管理器的配置(比如:type=“JDBC”)。 数据源的配置(比如:type=“POOLED”) 可以设置多套运行环境,但只能同时使用一套

mybatis与hibernate对比

拥有回忆 提交于 2020-03-12 04:54:53
第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求去考虑究竟哪一个更适合项目开发,比如:一个项目中用到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就节省了大量的时间,但是对于一个大型项目,复杂语句较多,这样再去选择hibernate就不是一个太好的选择,选择 mybatis 就会加快许多,而且语句的管理也比较方便。 第二方面:开发工作量的对比 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。 第三方面:sql优化方面 Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的

MyBatis框架动态sql语句

瘦欲@ 提交于 2020-03-12 04:03:32
动态 SQL的作用:可以很方便地根据不同条件拼接 SQL 语句 准备: 在里面定义所需要用到的方法 一、if以及where 我们要调用select方法,通过name、mobile字段查询表中数据,但是这两个参数都有可能传入null,这时我们需要在xml文件中判断传入的参数是否为null,如果不为null则将其拼接成SQL语句,在test属性中设置判断条件,where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“where”子句;而且,若语句的开头为“and”或“or”,where 元素也会将它们去除,: for ( UserInfo ui : userInfoDao . select ( "1" , "" ) ) { System . out . println ( ui ) ; } 二、for each foreach元素用于对一个集合进行遍历,构建 IN 条件语句时常用该元素;foreach 元素允许指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量,也允许指定开头与结尾的字符串以及在迭代结果之间放置分隔符。注意:可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象传递给 foreach 作为集合参数;当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素;当使用

MyBatis环境配置

时光毁灭记忆、已成空白 提交于 2020-03-12 03:54:14
1、导入MyBatis的jar包 3、在src下面创建全局配置文件 没有名称和地址要求 在全局配置文件中导入dtd或schema 如果导入没有提示 Window–> preference --> XML --> XMl catalog --> add 按钮 全局配置文件 < ? xml version = "1.0" encoding = "UTF-8" ? > < ! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > < configuration > < ! -- 设置日志 -- > < settings > < setting name = "logImpl" value = "LOG4J" / > < / settings > < ! -- 别名 -- > < ! -- < typeAliases > < typeAlias type = "com.yzq.pojo.User" alias = "User" / > < / typeAliases > -- > < typeAliases > < package name = "com.yzq.pojo" / > < / typeAliases >

Spring MVC相关jar包

旧时模样 提交于 2020-03-12 02:56:17
<properties> <spring.version>5.2.4.RELEASE</spring.version> </properties> <dependencies> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency> <!-- spring相关 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework<

MyBatis源码解析-搭建调试环境

前提是你 提交于 2020-03-12 02:43:52
MyBatis源码解析-搭建调试环境 1. 相关工具 Maven Git JDK1.8 IntelliJ IDEA 2. 源码拉取 一般来说,我们直接从https://github.com/mybatis/mybatis-3 Fork到自己的仓库中,为什么要Fork呢?我们在之后的源码分析中,我们可能会加一些注释,英文翻译一波,方便自己理解,也方便自己自由提交。 版本:3.5.4-SNAPSHOT 3. 调试 啥也不多说,咱们直接看单元测试结构,除了 autoconstructor 这个包下是整体调试以外,其他的都是各个模块的单元测试。那咱们直接就从 org.apache.ibatis.autoconstructor 这个包下开始调试。 从这个包下主要包含下面几部分,如图所示: MyBatis的配置文件:mybatis-config.xml SQL文件: CreateDB.sql 映射及配置:AutoConstructorMapper.java AutoConstructorMapper.xml 实体类:AnnotatedSubject.java BadSubject.java ExtensiveSubject.java PrimitiveSubject.java 测试类:AutoConstructorTest.java 3.1 MyBatis的配置文件 见 mybatis

MyBatis 源码分析-项目总览

筅森魡賤 提交于 2020-03-12 02:43:33
MyBatis 源码分析-项目总览 1.概述 本文主要大致介绍一下MyBatis的项目结构。 引用参考资料《MyBatis技术内幕》 此外, https://mybatis.org/mybatis-3/zh/index.html MyBatis官方也提供了很不错的中文文档。对于使用中有碰到一些问题,可以参考一下。 2.模块划分 MyBatis在项目模块划分还是很清晰的。各个模块层次以及具体作用,如下: 模块 层次 定义 session 接口层 提供给外部使用的接口API scripting 核心处理层 解析映射文件中的动态SQL节点。并形成数据库可执行的SQL语句。 mapping 核心处理层 映射 builder 核心处理层 配置解析 executor 核心处理层 执行器模块,串联整个执行流程。 plugin 核心处理层 插件模块:提供插件接口,通过自定义插件方式对MyBatis进行拓展 cursor 核心处理层 游标模块 reflection 基础支持层 反射模块:mybatis专门对反射模块进行封装。提供更加简单易用的API type 基础支持层 类型转换模块:Mybatis为简化配置提供了别名机制。提供java类型与JDBC类型转换 logging 基础支持层 日志模块:主要是集成第三方日志 io 基础支持层 资源加载模块:对类加载器进行了封装。确定类加载器顺序

MyBatis源码解析 - 解析器模块

依然范特西╮ 提交于 2020-03-12 02:43:12
MyBatis源码解析 - 解析器模块 1. 前言 在MyBatis中涉及多个xml文件,解析这些xml文件自然离不开解析器。本文就来分析一下解析器模块。 2. 准备工作 xml常见的解析方式分为以下三种: DOM ( Document Object Model)解析方式 SAX (Simple APIfor XML)解析方式 StAX( Streaming API for XML)解析方式 - JDK 6.0版本开始,JDK开始支持 详细的解析xml学习可以参考 Java解析XML 在这里我们需要重点看下DOM解析,DOM解析主要的好处就是易于编程,可以跟根据需求在树形结构的各个节点之间导航。 3. XPathParser MyBatis 在初始化过程中处理 mybatis-config.xml 以及映射文件时使用的是DOM解析方式,并结合使用XPath解析XML配置文件。DOM会将整个XML文档加载到内存中形成数据结构。 XPathParser类封装了XPath 、Document和EntityResolver 依赖关系如图所示 XPathParser中字段含义和功能如下 private final Document document; //Document 对象 private boolean validation; //是否开启校验 private