MyBatis
欧拉兔
vfrvwr
展开
-
MyBatis整体架构解析
1.MyBatis 功能架构1.1MyBatis 功能结构图MyBatis的整体分为三层,分别是基础支持层,核心处理层和接口层,如图所示1.2基础支持层基础支持层包含整个MyBatis的基础模块,这些模块为核心处理层的功能提供了良好的支撑,下面简单描述下各个模块。1.2.1 数据源模块数据源是实际开发中常用的组件之一,现在开源的数据源都提供了比较丰富的功能,...原创 2019-04-11 00:52:03 · 453 阅读 · 0 评论 -
Mybatis-缓存机制解析
Mybatis是一款常用的Java数据库访问层框架,他很好的封装了数据层的jdbc操作,也将Java的对象与数据库数据进行了转换,为数据调用提供了便捷。作为数据持久化框架,Mybatis也有着自己的缓存机制,缓存在提高重复查询效率的同时,也带来了读脏数据的风险,充分理解Mybatis的缓存机制才能让我们在开发中正确使用Mybatis缓存。1. Mybatis缓存总览在讨论缓存前,先看看...原创 2019-04-12 15:32:13 · 121 阅读 · 0 评论 -
Mybatis-懒加载
延迟加载MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,mybatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力。MyBatis的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。加载时机MyBa...原创 2019-04-12 01:18:57 · 125 阅读 · 0 评论 -
MyBatis-association和collection的column传入多个参数
使用 association和collection 进行关联查询的时候 column 参数可能会有多个,如下:注意:parameterType 一定要是 java.util.Map原创 2019-04-11 21:39:00 · 1494 阅读 · 0 评论 -
MyBatis-association的两种形式
1.嵌套的resultMap只是把相关实体映射从association元素中提取出来,用一个resultMap元素表示。然后 association元素再引用这个resultMap元素。<?xml version="1.0" encoding="utf8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0...原创 2019-04-11 21:16:05 · 305 阅读 · 0 评论 -
MyBatis-Mapper映射文件配置
Mapper映射文件主要是用来配置SQL映射语句的,在Mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。Mapper配置文件标签一览 标签名称 标签作用 select 用来映射查询语句 insert 用来映射插...原创 2019-04-11 20:07:09 · 9486 阅读 · 0 评论 -
MyBatis-Plugin介绍及配置使用
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括:1.Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) 拦截执行器的方法,其中包含了query、update、commit、rollb...原创 2019-04-11 16:15:56 · 1924 阅读 · 0 评论 -
MyBatis配置文件详解-ObjectFactory配置分析
MyBatis 每次创建结果对象实例时,它使用一个 ObjectFactory 实例来完成。默认的ObjectFactory仅会按照配置结果类型的默认构造方法或者指定构造方法来创建对象实例。如果想重写默认的 ObjectFactory,你可以创建你自己的。比如:// ExampleObjectFactory.java//自定义的ObjectFactorypublic class Exam...原创 2019-04-11 13:38:17 · 262 阅读 · 0 评论 -
Mybatis配置文件详解-TypeHandler配置分析
我们知道java有java的数据类型,数据库有数据库的数据类型,那么我们在往数据库中插入数据的时候是如何把java类型当做数据库类型插入数据库,在从数据库读取数据的时候又是如何把数据库类型当做java类型来处理呢?这中间必然要经过一个类型转换。在Mybatis中我们可以定义一个叫做TypeHandler类型处理器的东西,通过它可以实现Java类型跟数据库类型的相互转换。 ...原创 2019-04-11 01:41:11 · 1638 阅读 · 0 评论 -
Mybatis配置文件详解-TypeAliases配置分析
别名(typeAliases)是一个指代的名称。因为我们遇到的类全限定名过长,所以我们希望用一个简短的名称去指代它,而这个名称可以在MyBatis上下文中使用,在 MyBatis中别名是不分大小写的。一个 typeAliases的实例是在解析配置文件时生成的,然后长期保存在 Configuration对象中,这样就没有必要运行的时候再次生成它的实例了。系统定义别名通过org.apache....原创 2019-04-11 01:12:33 · 1190 阅读 · 0 评论 -
十道常见的mybatis面试题
1. #{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。2. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao...原创 2019-04-11 00:57:41 · 110 阅读 · 0 评论 -
MyBatis动态传入表名,字段名参数的解决办法---statementType用法
statementType="STATEMENT"要实现动态传入表名、列名,需要做如下修改添加属性statementType="STATEMENT" 同时sql里的属有变量取值都改成${xxxx},而不是#{xxx}<delete id="deleteTableData" parameterType="java.util.Map" statementType="STATEMEN...原创 2019-04-12 22:11:07 · 899 阅读 · 0 评论