![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
文章平均质量分 73
偷偷学习被我发现
记录个人点滴
展开
-
解决MyBatis查询结果Map中值为null不存储键值的四种方法
在Mybatis中,查询数据返回类型为map,数据库中有些自动值为空,则返回的结果中没有值为空的字段,解决方法:方法一:使用查询sql时使用IFNULL(xxx,'') as xxx方法二:ResultType利用实体返回,不用map;方法三:在Mybatis_config.xml文件中添加配置信息,添加配置callSettersOnNulls:注意:xml文件的头部引入的是my...原创 2020-04-25 12:20:20 · 2547 阅读 · 0 评论 -
Mybatis__一级缓存 && 二级缓存
##缓存分类###一级缓存事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期当事务结束时,缓存也就结束生命周期。在此范围下,缓存的介质是内存。###二级缓存进程范围:缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期,进程结束时,缓存也就结束了生命周期。进程范围的缓存可能会存放大量的...原创 2019-07-13 21:40:53 · 379 阅读 · 0 评论 -
Mybatis___SqlSession&&SqlSessionFactory
SqlSession和SqlSessionFactory的类结构图SqlSession实现类:DefaultSqlSession和SqlSessionManagerSqlSessionFactory实现类:DefaultSqlSessionFactory和SqlSessionManagerSqlSessionManager似乎是废弃不使用的了,但是,它并不妨碍我们探究其源码SqlSe...原创 2019-07-28 22:42:56 · 230 阅读 · 0 评论 -
PageHelper___加载流程&&Executor执行器增强____源码跟踪分析
1.添加plugin要使用PageHelper首先在mybatis的全局配置文件中配置:<plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> ...原创 2019-07-20 20:56:12 · 226 阅读 · 0 评论 -
PageHelper___分页过程____源码跟踪分析
分页过程源码跟踪startPage/** * 开始分页 * * @param params */public static <E> Page<E> startPage(Object params) { Page<E> page = SqlUtil.getPageFromObject(params); //当已经执行过orde...原创 2019-07-20 22:39:05 · 275 阅读 · 0 评论 -
Mybatis__Executor源码跟踪解析
讲到Mybaits就不得不提它的执行器Executor,我们知道Mybaits是ORM框架(关系映射),那么它的mapper语句就是通过Executor执行的。Executor是一个顶层接口,它又分为两大实现类:BaseExecutor、CachingExecutor;BaseExecutor又分为三大子类SimpleExecutor、BatchExecutor、ReuseExecutor;...原创 2019-07-27 17:54:28 · 259 阅读 · 0 评论 -
Mybits__Executor源码解析__创建策略__JDBC中Statement&&PrepareStatement批处理原理__BatchExecutor的批处理原理
建议结合我的Mybaits__Executor源码跟踪解析一起看Mybatis对数据库的操作,都将委托给执行器Executor来完成,所以执行器Executor是相当重要的,在Mybatis中,SqlSession对数据库的操作,将委托给执行器Executor来完成,Executor由五个不同功能的Executor完成,分别为:1.基类执行器BaseExecutor2.简单执行器Simple...原创 2019-07-27 22:49:43 · 391 阅读 · 0 评论 -
Mybatis__doFlushStatements
相信看过Mybatis的执行器Executor以及5个子类源码的朋友应该对FlushStatements和doFlushSatements知道吧,这里我们说说它的作用,顾名思义的话了就是刷新Statement,我们知道在执行器就是执行Statement的,在进行提交,回滚等事务操作以及DML操作时,需要刷新Statement,在不同的Executor执行器中因为缓存执行器需要缓存,SimpleSt...原创 2019-07-28 17:36:31 · 2105 阅读 · 0 评论 -
mybatis中#跟$有什么区别
动态 SQL 是 mybatis 的强大特性之一,mybatis 在对 sql 语句预编译前,会对 sql 进行动态解析,解析为一个 BoundSql 对象,在动态 SQL 解析阶段,#和$的不同:#可以防止sql注入.先把sql中使用#的地方变成?占位符,再设置参数值insert into students id = #{id};//id=2#{}在动态解析后insert into s...原创 2019-08-16 11:47:44 · 139 阅读 · 0 评论 -
Mybatis执行流程
详细的流程为:1.加载全局配置文件(MybatisConfig.xml),这个配置文件中通常是别名设置,拦截器的设置,(当ssm整合后,环境配置与mapper映射文件的注册会转移到spring配置文件中)2.xml全局配置文件会产生一个构建者类,叫做xmlconfigBuilder,这个类是用来通过xml配置文件来构建Configuration对象实例的,构建的过程就是解析(MybatisC...原创 2019-09-07 14:06:38 · 101 阅读 · 0 评论 -
Mybatis__延迟加载
延迟查询是一对一和一对多查询的延续。 在默认的一对一和一对多中,一条SQL就能够查询到所有数据,但是,有的数据有时候一时半会用不上,例如查询员工,捎带获取员工的部门数据,但是部门数据使用的频率很低,这种时候可以使用延迟查询,首先获取到所有的员工数据,然后在需要的时候再去获取部门数据。当需要使用数据的时候才去加载既是延迟加载##开启延迟配置Settings配置###全局配置文件中配置M...原创 2019-07-13 21:39:48 · 339 阅读 · 0 评论 -
mybatis__关联关系__1对1,1对多
这里有两张Emp数据表、Dept数据表雇员表:Emp(empno,ename,job,deptno)部门表:Dept(deptno,dname,loc)一个雇员对应着一个部门,是1对1的关系;而反过来看,一个部门对应着多个雇员,是1对多的关系;association: 一对一关联(has one)collection:一对多关联(has many)##1对1的关系一个雇员对应着...原创 2019-07-13 21:36:09 · 332 阅读 · 0 评论 -
逆向工程__Generate插件安装 && xml配置文件解析 &&使用反向生成代码 && 接口说明
###逆向工程通过数据库中的单表,自动生成java代码。Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\pojo类),实现了ORM,对象关系映射。###Generate插件在eclipse中安装Generate插件[外链图片转存失败(img-FctldUWg-1563022802576)(https://img2018...原创 2019-07-13 21:00:54 · 365 阅读 · 0 评论 -
Mybatis___简单小案例
简单的mybatis的使用,后面会一步步的说明以及进一步的使用一、依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0...原创 2019-07-13 21:28:27 · 162 阅读 · 0 评论 -
Mybatis___配置文件相关配置讲解
主配置文件<?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> ...原创 2019-07-13 21:29:07 · 285 阅读 · 0 评论 -
DTD && Schema
##XML约束简介XML文档都是自定义标签,所以编写起来比较随意自由。所以我们要给XML文档创建一个规则,我们需要在遵守相应的规则的前提下来编写XML文档。XML约束共有两种形式:1.DTD2.Schema###DTD > 文档类型定义> DTD可以定义文档中可以出现哪些元素、哪些属性、哪些内容、哪些实体。> 如何使用: - 在XML文档内部使用...原创 2019-07-13 21:29:45 · 241 阅读 · 1 评论 -
ORM简介 && MyBatis和Hibernate的不同 && 动态代理简单实现Mybatis基本使用
##ORM简介对象关系映射。ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有五种:Hibernate(Nhibernate),iBATIS,mybatis,Ecl...原创 2019-07-13 21:30:21 · 281 阅读 · 0 评论 -
Mybatis接口与映射文件
在传统的MVC模式中,持久层有DAO接口和DAO实现类,DAO实现类在mybatis中就显得很鸡肋了;这些都是模板化代码,都可以通过配置自动生成然后通过AOP思想动态的切入。实际开发中就是接口和映射文件,没有实现类。###导入依赖<dependencies> <dependency> <groupId>org.mybatis</gr...原创 2019-07-13 21:32:57 · 458 阅读 · 0 评论 -
log4j的使用 && slf4j简单介绍
###log4j相关依赖<dependencies><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </d...原创 2019-07-13 21:34:02 · 325 阅读 · 0 评论 -
mybatis__使用#,$传入多个参数 && 返回数据 && 主键回写
Mybatis的底层是JDBC,关于JDBC的操作,我们都知道有PreparedStatement (预处理)和Statement这两个,PreparedStatement可以防止SQL注入的危险,而在Mybatis中,传入参数的两种方式#{参数}、KaTeX parse error: Expected 'EOF', got '#' at position 6: {参数}。#̲对应的是采用Prep...原创 2019-07-13 21:34:48 · 851 阅读 · 0 评论 -
动态SQL基本语句用法
##1.if语句如果empno不为空,则在WHERE参数后加上AND empno = #{empno},这里有1=1所以即使empno为null,WHERE后面也不会报错。映射文件<select id="getEmpById2" resultType="emp"> SELECT * FROM emp WHERE 1=1 <if test="empno != nul...原创 2019-07-13 21:35:34 · 306 阅读 · 0 评论 -
Spring__SpringMVC__Mybatis整合
Springmvc是controller层的,mybatis是dao和mapper层的,而spring类似粘合剂,springmvc与mybatis之间是不能直接整合的,而是通过springmvc和spring之间,mybatis与spring之间整合的。##Spring容器和SpringMVC容器的关系Spring容器是一个父容器,SpringMVC容器是一个子容器,它继承自Spring容器...原创 2019-07-13 20:55:07 · 351 阅读 · 0 评论