
mybatis
文章平均质量分 95
xushiyu1996818
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MyBatis SQL执行过程与其他理论总结
注意:本文参考 MyBatis 常见面试总结 | JavaGuide#{}和${}的区别是什么?${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc. Driver。#{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为? 号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的? 号占位符设置参数值...原创 2022-02-26 19:22:07 · 1015 阅读 · 0 评论 -
MyBatis 基础理论与执行理论总结
注意:本文参考 MyBatis 常见面试总结 | JavaGuide#{}和${}的区别是什么?${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc. Driver。#{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为? 号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的? 号占位符设置参数值,....原创 2022-02-26 19:22:39 · 1476 阅读 · 0 评论 -
Mybatis中使用的设计模式
目录前言Builder模式工厂模式单例模式代理模式组合模式模板方法模式适配器模式装饰者模式迭代器模式注意:本文转自 https://www.cnblogs.com/tanghaorong/p/14094565.html前言虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:B.原创 2021-09-03 12:33:57 · 217 阅读 · 0 评论 -
mybatis源码分析 各大组件简介
主体配置Configuration有各种配置项,而且有对应的默认值。有各种解析完后的MappedStatement,Cache,ResultMap,ParameterMap,KeyGenerator等。有一个Environment构造方法中注册了很多别名。 //环境 protected Environment environment; //---------以下都是<settings>节点------- protected boolean ...原创 2021-08-02 22:15:58 · 564 阅读 · 1 评论 -
mybatis源码分析 插件机制
目录简介插件机制原理源码分析植入插件逻辑执行插件逻辑实现一个分页插件注意:本文转自https://www.tianxiaobo.com/2018/08/26/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E6%8F%92%E4%BB%B6%E6%9C%BA%E5%88%B6/简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,..原创 2021-05-23 21:56:48 · 182 阅读 · 0 评论 -
mybatis源码分析 缓存原理
目录简介缓存类介绍PerpetualCacheLruCacheBlockingCacheCacheKey一级缓存二级缓存总结注意:本文转自https://www.tianxiaobo.com/2018/08/25/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E7%BC%93%E5%AD%98%E5%8E%9F%E7%90%86/简介在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 me..原创 2021-05-23 21:47:46 · 177 阅读 · 0 评论 -
mybatis源码分析 内置数据源
目录简介内置数据源初始化过程UnpooledDataSource初始化数据库驱动获取数据库连接PooledDataSource辅助类介绍获取连接回收连接小节总结注意:本文转自https://www.tianxiaobo.com/2018/08/19/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E5%86%85%E7%BD%AE%E6%95%B0%E6%8D%AE%E6%BA%90/简介本篇文章将向大家..原创 2021-05-23 21:37:40 · 290 阅读 · 0 评论 -
mybatis源码分析 SQL 的执行过程
注意:本文转自https://www.tianxiaobo.com/2018/08/17/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-SQL-%E7%9A%84%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B/简介在前面的文章中,我分析了配置文件和映射文件的解析过程。经过前面复杂的解析过程后,现在,MyBatis 已经进入了就绪状态,等待使用者发号施令。本篇文章我将分析MyBatis 执行 SQL 的过程,该过程比较复杂,涉及..原创 2021-05-23 21:30:16 · 315 阅读 · 0 评论 -
mybatis源码分析 映射文件解析过程
简介在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 <cache>,<cache-ref>,<resultMap>, <select | insert | update | delete> 等。除了分析常规的 XML 解...原创 2021-05-22 17:20:11 · 289 阅读 · 0 评论 -
mybatis源码分析 配置文件解析过程
目录简介配置文件解析入口解析 properties 配置解析 settings 配置settings 节点的解析过程元信息对象创建过程DefaultReflectorFactory 源码分析Reflector 源码分析PropertyTokenizer 源码分析设置 settings 配置到 Configuration 中解析 typeAliases 配置从 typeAlias 节点中解析并注册别名从指定的包中解析并注册别名注册 MyBatis 内部类原创 2021-05-22 16:34:41 · 205 阅读 · 0 评论 -
mybatis源码 环境准备
导入mybatis的parent项目git导入 https://github.com/mybatis/parent 生成一个项目 master分支导入mybatis的项目https://github.com/mybatis/mybatis-3或者https://github.com/tuguangquan/mybatis目前导入的是下面那个,中文注释版,master分支新建一个maven项目增加配置文件增加resources目录在...原创 2020-08-11 16:05:44 · 300 阅读 · 0 评论 -
Mybatis和hibernate的优缺点比较
目录维度对比两者最大的区别开发难度对比sql书写比较数据库扩展性比较缓存机制比较总结mybatishibernate举个形象的比喻参考 https://blog.youkuaiyun.com/qq_41378597/article/details/88070335维度对比两者最大的区别针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultM..原创 2020-06-22 14:39:51 · 512 阅读 · 0 评论 -
mybatis与redis二级缓存总结
目录一、在spring boot 环境整合二、Mybatis映射文件使用二级缓存mapper级标签语句级三、Redis缓存工具类mybatis二级缓存接口redis-string缓存工具类putObjectgetObjectClearredis-HashMap缓存工具类putObjectgetObjectclear四、使用Mybatis二...原创 2019-04-12 09:37:27 · 6174 阅读 · 0 评论 -
mybatis 常用注解
基础增删改查package cn.xm.exam.mapper.common.custom;import java.sql.SQLException;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.ann...原创 2019-04-08 21:12:13 · 916 阅读 · 0 评论 -
mybatis jdbcType的使用
MyBatis 插入空值时,需要指定JdbcTypemybatis insert空值报空值异常你只要在insert语句中insert的对象加上jdbcType就可以了,修改如下:#{menuTitle,jdbcType=VARCHAR}<insert id="save" parameterType="com.tarena.entity.Cost"> inse...原创 2019-04-08 09:41:13 · 723 阅读 · 0 评论 -
spring boot 与mybatis整合(xml与注解)
目录零、版本一、目录树与所需jar包二、配置文件三、实体类四、dao接口与注解五、dao接口与xml文件六、service七、controller零、版本使用java1.8 mysql5.7 spring boot 1.5.20一、目录树与所需jar包创建spring boot时,选择web,mybatis,jdbc,mysql...原创 2019-04-04 22:20:04 · 373 阅读 · 0 评论 -
spring boot与mybatis与二级缓存redis整合
目录零、spring boot与mybatis整合一、版本二、目录树与jar包三、配置文件四、实体类五、缓存类六、xml文件使用二级缓存七、使用二级缓存结果零、spring boot与mybatis整合https://blog.youkuaiyun.com/xushiyu1996818/article/details/89036186一、版本使用java1...原创 2019-04-04 23:03:39 · 1517 阅读 · 0 评论 -
mybatis 语句的常用属性
目录映射文件级查询-select添加-insert删除-delete修改-updateuseGeneratedKeys 和 keyProperty 含义映射文件级<typeAlias type="com.test.model.User" alias="User"/> //类型别名,之后就不用写包名了// resultMap 可以封装很多个属...原创 2019-04-07 16:30:30 · 280 阅读 · 0 评论 -
mybatis ![CDATA[ ]] 使用,小于大于号转义 和小于号大于号使用
CDATA在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不希望它被转义,可以使用<![CDATA[ sql ]]>. 这是XML语法,在CDATA内部的所有内容都会被解析器忽略. 但是因此会导致<if test=""></if> <...原创 2019-04-07 16:53:22 · 15200 阅读 · 0 评论 -
mybatis常用的sql语句
目录基础查询分页查询多条件查询查询单条数据查询like插入普通插入批量插入删除批量删除更新更新语句批量更新基础<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//E...原创 2019-04-07 17:00:45 · 584 阅读 · 0 评论 -
mybatis 动态语句
目录基础if 语句if语句判断数字类型字符串if+where语句if+set 语句choose(when,otherwise) 语句trim 语句SQL 片段foreach 语句基础MyBatis的动态SQL语句是基于OGNL表达式的。可以方便的在SQL语句中实现某些逻辑,总体说来MyBatis动态SQL语句主要有以下几类:1、if语句(简...原创 2019-04-07 17:16:52 · 2170 阅读 · 0 评论 -
ResultType和ResultMap的用法和区别
目录综述ResultType返回常见类型:(类似于int或者Integer)返回Map返回一个对象ResultMap基本使用id和result高级使用Constructor元素AssociationCollectiondiscriminator综述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,...原创 2019-04-07 22:06:39 · 32170 阅读 · 1 评论 -
查询的字段与resultType名称不一致解决方法
1 .为列名指定别名 别名和java实体类的属性名一致select id,name,pwd as password from User where id = #{id}2 .设置结果映射类型,就是resultmap<select id="selectUser" resultMap="UserMap"> select id,name,pwd from ...原创 2019-04-07 22:08:57 · 1443 阅读 · 0 评论 -
插入后的主键获取
目录方法1方法2方法3注意:插入后获得主键的误区方法1蠢方法,插入后,按照特征获取刚刚那条数据的id方法2在实体类的映射文件 "*Mapper.xml" 这样写:<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="co...原创 2019-04-07 22:22:58 · 1624 阅读 · 0 评论 -
查询结果为HashMap类型
基本<select id="getById" parameterType="string" resultType="hashmap"> select name, age from test where id = #{id}</select>Mapper文件定义如下:public List<HashMap<String, String&g...原创 2019-04-07 22:33:20 · 1061 阅读 · 0 评论 -
mybatis #和$的区别
#{}使用#{}意味着使用的预编译的语句,即在使用jdbc时的preparedStatement,sql语句中如果存在参数则会使用?作占位符,我们知道这种方式可以防止sql注入,并且在使用#{}时形成的sql语句,已经带有引号,例,select * from table1 where id=#{id} 在调用这个语句时我们可以通过后台看到打印出的sql为:select * from ta...原创 2019-04-07 22:38:59 · 229 阅读 · 0 评论 -
mybatis总结
目录一、MyBatis入门(映射文件与注解)1.springboot与mybatis整合的示例二、MyBatis语句(映射文件)1.总体语句语句的常用属性常用的sql语句动态sqlcdata(<>转义)和小于号大于号直接使用2.查询的结果ResultType和ResultMap查询的字段与resultType名称不一致插入后的主键获取...原创 2019-04-04 14:07:49 · 488 阅读 · 0 评论