
MyBatis
MyBatis
HernSong
HernSong
展开
-
MyBatis工作原理
核心部件: SqlSession Executor StatementHandler ParameterHandler ResultSetHandler TypeHandler MappedStatement Configuration 在分析工作原理之前,首先看一下我的mybatis全局配置文件<?xml...转载 2019-11-06 11:04:28 · 269 阅读 · 1 评论 -
Mybatis设计模式
Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; ...转载 2019-06-08 10:33:43 · 1253 阅读 · 0 评论 -
MyBatis —— 半自动化解耦原理
通过研究mybatis源码,可将mybatis的大致架构总结为下图: 根据Mybatis源码,将其抽象为三层:基础支持层,核心处理层和接口层 基础支持层包括:数据源、事务管理、日志、类型转换、缓存、Bind、解析器等 核心处理层包括:配置解析、配置映射、SQL解析、SQL执行、结果集映射、插件等 接口层主要提供JAVA API 在本篇文章中,将基于该框架...转载 2019-05-26 20:26:27 · 1096 阅读 · 0 评论 -
MyBatis逆向工程(MBG)
MyBatis Generator简介简称MBG,是一个专门为MyBatis框架使用者定 制的代码生成器,可以快速的根据表生成对应的 映射文件,接口,以及bean类。支持基本的增删 改查,以及QBC风格的条件查询。但是表连接、 存储过程等这些复杂sql的定义需要我们手工编写官方文档地址 http://www.mybatis.org/generator/官方工程地址 https://...原创 2019-04-19 16:59:41 · 631 阅读 · 0 评论 -
SSM整合设置
web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation...原创 2019-04-19 13:58:32 · 340 阅读 · 0 评论 -
Spring 配置 MyBatis
步骤:1、设置包扫描、引入外部属性文件(数据源配置)(若不引入可以直接在Spring的数据源配置中直接指定)2、设置数据源3、设置Spring事务管理器4、配置基于注解的事务5、配置SqlSessionFactory对象,设置MyBatis配置文件的位置、Mapper.XML文件的位置、数据源、别名……5、配置Mapper接口扫描例如:<?xml versi...原创 2019-04-15 08:36:32 · 265 阅读 · 0 评论 -
MyBatis逆向工程(MBG)jar包下载
点击直接进入官网下载MyBatis generator点击进入GitHub MyBatis,然后选择【generator】然后选择【releases】然后下载相应版本即可。原创 2019-03-23 15:58:03 · 2040 阅读 · 0 评论 -
MyBatis ehcache配置
需要的jar包ehcache-core.jar、mybatis-ehcache.jar、slf4j-log4j.jarehcache.xml配置属性说明:l diskStore:指定数据在磁盘中的存储位置。l defaultCache:当借助CacheManager.add("demoCache")创建Cache时,EhCache便会采用<defalutCache/>指...原创 2019-03-23 10:51:55 · 790 阅读 · 0 评论 -
MyBatis sql元素标签
sql元素标签用来定义可重复使用的SQL代码片段,使用时只需要用include元素标签引用即可,最终达到SQL语句重用的目的;同时它可以被静态地(在加载参数) 参数化,不同的属性值通过包含的实例变化,比如:方式一://建立sql片段<sql id="query_user_where"> <if test="id!=null and id!=''"> and...原创 2019-03-20 20:09:29 · 16722 阅读 · 0 评论 -
MyBatis 一级缓存和二级缓存
简介mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解: ①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。 ②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个...原创 2019-03-19 20:47:24 · 595 阅读 · 0 评论 -
MyBatis OGNL的使用
OGNL(Object Graph Navigation Language):对象图导航语音,这是一种强大的表达式语言,通过它可以非常方便的来操作对象属性,类似于EL、SpELl等表达式。访问对象属性:person.name 调用方法:@java.lang.Math@PI 或@java.util.UUID@randomUUID() 调用静态方法:new com.atguigu.bean....原创 2019-03-19 19:40:55 · 932 阅读 · 0 评论 -
MyBatis bind元素标签
bind 元素标签可以从 OGNL 表达式中创建一个变量井将其绑定到上下文中,MyBatis中使用mysql的模糊查询字符串拼接(like) 中也涉及到bind的使用。创建一个 bind 元素标签的变量后 ,就可以在下面直接使用,使用 bind 拼接字符串不仅可以避免因更换数据库而修改 SQL,也能预防 SQL 注入。<!-- List<Employee> getEmpsT...原创 2019-03-19 19:33:29 · 4352 阅读 · 0 评论 -
MyBatis _databaseId和 _parameter参数变量(动态SQL)
_databaseId参数变量若在MyBatis配置文件中设置了databaseIdProvider,则可以使用_databaseId 参数,这样就可以根据不同的数据库厂商构建特定的语句。_databaseId 就是代表当前数据库的别名Oracle。databaseIdProvider配置:<databaseIdProvider type="DB_VENDOR"> ...原创 2019-03-19 19:22:43 · 3468 阅读 · 0 评论 -
MyBatis 动态SQL以及批量插入
动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中...原创 2019-03-18 20:39:24 · 2865 阅读 · 0 评论 -
MyBatis 鉴别器、自动映射、缓存、参照缓存
鉴别器<discriminator javaType="int" column="draft"> <case value="1" resultType="DraftPost"/></discriminator>有时一个单独的数据库查询也许返回很多不同 (但是希望有些关联) 数据类型的结果集。 鉴别器元素就是被设计来处理这个情况的, 还有包括类的继...原创 2019-03-18 15:48:07 · 554 阅读 · 0 评论 -
MyBatis 分步查询传递多列值以及fetchType(加载形式)
分步查询<resultMap id="maop" type="com.yunqing.mybatis.bean.Department"> <id column="did" property="id"/> <result column="department" property="departm原创 2019-03-18 14:57:14 · 3248 阅读 · 0 评论 -
MyBatis javaType和jdbcType对应关系
原创 2019-03-18 13:39:56 · 349 阅读 · 0 评论 -
MyBatis 集合、集合嵌套查询
集合<collection property="posts" ofType="domain.blog.Post"> <id property="id" column="post_id"/> <result property="subject" column="post_subject"/>原创 2019-03-18 08:54:33 · 2553 阅读 · 0 评论 -
MyBatis 关联、关联嵌套查询
关联<association property="author" column="blog_author_id" javaType="Author"> <id property="id" column="author_id"/> <result property="username" column=&quo原创 2019-03-18 08:47:01 · 731 阅读 · 0 评论 -
MyBatis 按需加载SQL语句字段属性(延迟加载)
可以通过mybatis.xml配置文件全局设置settings能否进行按需加载(延迟加载),从MyBatis 3.4.1之后,做出了如下调整(建议自己每次都进行设置,因为不知道版本更新改变的一些设置)1、lazyLoadingEnabled : 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 默认是fal...原创 2019-03-12 17:17:34 · 1049 阅读 · 0 评论 -
MyBatis MapperXML文件Result Maps元素标签详解
简介resultMap元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBCResultSets数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情。 实际上,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行...原创 2019-03-11 19:15:12 · 1079 阅读 · 0 评论 -
MyBatis 支持的 JDBC 类型
支持的 JDBC 类型为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 JDBC 类型。BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED TINYINT REAL VARCHAR BINARY BLOB NVARCHAR SMALLINT DOUBLE...原创 2019-03-11 19:12:11 · 1085 阅读 · 0 评论 -
MyBatis MapperXML文件insert、update、delete元素标签、多参数传入
注意:在实现增删改查时,必须手动提交数据,即session.commit(),否则增删改查的语句回滚连接数据库了,导致插入增删改查失败。InsertInter接口package com.mybatis.dao;import com.mybatis.employee.Employee;public interface InsertInter { public void in...原创 2019-03-11 10:21:19 · 8162 阅读 · 1 评论 -
MyBatis mappers元素标签及其属性、配置
mappers:映射器,以最佳的方式是告诉 MyBatis 到哪里去找映射文件。可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括file:///的 URL),或类名和包名等。例如:<!-- 使用相对于类路径的资源引用 --><mappers> <mapper resource="org/mybatis/builder/AuthorMap...原创 2019-03-10 15:34:47 · 2849 阅读 · 1 评论 -
MyBatis databaseIdProvider元素标签
MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的databaseId属性。MyBatis 会加载不带databaseId属性和带有匹配当前数据库databaseId属性的所有语句。 如果同时找到带有databaseId和不带databaseId的相同语句,则后者会被舍弃。 为支持多厂商特性只要像下面这样在 mybatis-confi...原创 2019-03-10 15:09:41 · 920 阅读 · 1 评论 -
MyBatis plugins元素标签及其属性、设置
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed):执行器 ParameterHandler (getParameterObject...原创 2019-03-10 10:57:12 · 2050 阅读 · 1 评论 -
MyBatis typeHandlers元素标签及其属性、设置
typeHandlers:类型处理器,将获取的值以合适的方式转换成 Java 类型,即架起数据库类型和Java类型一一映射的桥梁,可以将Java类型转换成数据库兼容的类型,也可以将数据库类型转换成Java兼容的类型。无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类...原创 2019-03-10 10:53:30 · 2936 阅读 · 0 评论 -
MyBatis typeAliases元素标签(含注解方式)及其属性、设置
个人建议还是采用全类名的方式,这样可以很轻松的看到该类的所有方法等,比较方便直观;这样不过也有缺点,不利于维护等。简介typeAliases:别名处理器,可以为java类型(resultType)起别名。类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。注意:在不指定别名情况下,别名默认就是类名小写。某些情况下别名不区分...原创 2019-03-10 10:24:35 · 4974 阅读 · 1 评论 -
MyBatis settings元素标签及其属性、设置
下表描述了settings设置中各项的意图、默认值等。设置参数 描述 有效值 默认值 cacheEnabled 全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。 true | false true lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType...原创 2019-03-10 10:04:53 · 1503 阅读 · 0 评论 -
Mybatis XML配置文件报错:元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?.....
错误在配置Mybatis的时候明明配置项没有错,就会莫名其妙的报错:元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,d...原创 2019-03-10 10:00:28 · 1236 阅读 · 0 评论 -
Mybatis初始化原理
一、 MyBatis的初始化做了什么任何框架的初始化,无非是加载自己运行时所需要的配置信息。MyBatis的配置信息,大概包含以下信息,其高层级结构如下:× configuration 配置× properties 属性 × settings 设置 ×typeAliases 类型命名 ×typeHandlers 类型处...转载 2019-03-10 08:48:09 · 299 阅读 · 0 评论 -
MyBatis引入外部属性文件
可以通过properties 标签实现对外部属性文件的引用。如果属性在不只一个地方进行了配置,那么 MyBatis 将按 照下面的顺序来加载:1、在 properties 元素体内指定的属性首先被读取。2、然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根 据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。3、最后读取作为方法参...原创 2019-03-09 20:59:28 · 1379 阅读 · 1 评论 -
MyBatis 基础入门知识
安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:<dependency> <groupId>org.mybatis</groupId> <artifactId>m...翻译 2019-02-19 21:54:21 · 312 阅读 · 0 评论 -
Mybatis中#和$的区别
注意:当使用$传参数时,如果参数是单值属性,并且只有一个参数,那么参数必须使用value占位。例如:select * from users where names like '%${value}%'介绍#{}:占位符号,可以防止sql注入(替换结果会增加单引号‘’) ${}:sql拼接符号(替换结果不会增加单引号‘’,like和order by后使用,存在sql注入问题,需手动代码...转载 2019-02-17 19:22:01 · 409 阅读 · 0 评论 -
Mybatis 日志输出 Reader entry: ���� 7 > % & ' ( ,
错误信息Reader entry: ���� 7 > % & ' ( ,原因mybatis-3.4.6.jar包中的org.apache.ibatis.io.DefaultVFS 中的InputStreamReader没有传第二个参数导致。...原创 2019-02-17 17:47:40 · 5053 阅读 · 2 评论 -
MyBatis environments(配置环境)元素标签及其属性、设置
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射。许多类似的用例。注意:尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。所以,如果你想连接两个数据库,就需要创建两个 ...原创 2019-02-15 21:41:36 · 2980 阅读 · 0 评论