![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
文章平均质量分 57
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
Springboot Mybatis多数据源配置MybatisProperties坑
一、场景复现配置了两个数据源,查询Dao却报错表不存在。(1)maven<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId></dependency>(2)配置文件spring: application: name: multi-.原创 2021-02-02 00:38:11 · 2275 阅读 · 2 评论 -
Mybatis生成器插件扩展,生成OR操作
Mybatis生成器插件扩展,生成OR操作 ManExample example = new ManExample(); ManExample.Criteria and = example.createCriteria(); and.andNameIsEmpty().andNameFindInSet("a").andNameFindInSetIn(Arrays.asList("1", "2", "3")); ManExample.OrCr原创 2020-12-27 21:27:07 · 660 阅读 · 0 评论 -
Mybatis生成器插件扩展,定制方法生成,list参数生成
Mybatis生成器插件扩展,定制方法生成一、生成模式(1)Example.Criterion添加pattern字段 public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boole原创 2020-12-19 13:57:17 · 694 阅读 · 1 评论 -
Mybatis生成器插件扩展,生成findInSet方法
Mybatis生成器插件扩展,生成findInSet方法package com.mk.mybatisgenerator.plugins;import org.mybatis.generator.api.IntrospectedColumn;import org.mybatis.generator.api.IntrospectedTable;import org.mybatis.generator.api.PluginAdapter;import org.mybatis.generator..原创 2020-12-06 00:22:51 · 1312 阅读 · 0 评论 -
SpringBoot2.1.9 Mybatis由于@Mapper注解多数据源配置不生效问题
一、场景复现二、原由@Mapper先扫描到,@MapperScan后扫描,Dao Bean已经生成了,无法再指定数据源进行注入了。三、解决方案原创 2020-05-04 21:35:37 · 6235 阅读 · 1 评论 -
SpringBoot2.1.9 Mybatis多数据源配置
一、配置文件spring: application: name: multi-datasource profiles: active: dev datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver u...原创 2020-05-04 21:43:07 · 302 阅读 · 0 评论 -
Spring Boot 多数据源(读写分离)入门
转载自芋道 Spring Boot 多数据源(读写分离)入门1. 概述在项目中,我们可能会碰到需要多数据源的场景。例如说: 读写分离:数据库主节点压力比较大,需要增加从节点提供读操作,以减少压力。 多数据源:一个复杂的单体项目,因为没有拆分成不同的服务,需要连接多个业务的数据源。 本质上,读写分离,仅仅是多数据源的一个场景,从节点是只提供读操作的数据源。所以只要实现...转载 2020-04-12 10:10:37 · 497 阅读 · 0 评论 -
Spring Boot之基于Redis实现MyBatis查询缓存解决方案
转载自Spring Boot之基于Redis实现MyBatis查询缓存解决方案1. 前言MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis。本文主要介绍了MyBatis的缓存策略、以及基于SpringBoot和Redis实现MyBatis的二级缓存的过程。实现本文的demo,主要依赖以下软件版本信息,但是由于数据层面的实现,并不依赖具体的版本...转载 2020-04-06 12:13:05 · 898 阅读 · 0 评论 -
MyBatis Generator分页插件RowBoundsPlugin坑
一、Mybatis Generator设置分页Mybatis Generator没有设置分页,但自带了个RowBoundsPlugin分页插件,故而配置<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>在mysql数据库进行查询的表分页10条,查很久花费了9s,表的数据也只是十几万行。百思不得其解,...原创 2020-03-01 17:37:27 · 2930 阅读 · 0 评论 -
mybatis源码阅读(八) ---Interceptor了解一下
转载自mybatis源码阅读(八) ---Interceptor了解一下1 IntercetorMyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, clos...转载 2020-01-27 12:57:03 · 376 阅读 · 0 评论 -
mybatis源码阅读(七) ---ResultSetHandler了解一下
转载自mybatis源码阅读(七) ---ResultSetHandler了解一下1、MetaObjectMetaObject用于反射创建对象、反射从对象中获取属性值、反射给对象设置属性值,参数设置和结果封装,用的都是这个MetaObject提供的功能。public static MetaObject forObject(Object object, ObjectFactory ...转载 2020-01-27 12:53:48 · 344 阅读 · 0 评论 -
mybatis源码阅读(六) ---StatementHandler了解一下
转载自mybatis源码阅读(六) ---StatementHandler了解一下StatementHandler类结构图与接口设计BaseStatementHandler:一个抽象类,只是实现了一些不涉及具体操作的方法RoutingStatementHandler:类似路由器,根据配置文件来路由选择具体实现类SimpleStatementHandler、CallableSta...转载 2020-01-27 12:50:23 · 428 阅读 · 0 评论 -
mybatis源码阅读(五) ---执行器Executor
转载自mybatis源码阅读(五) ---执行器Executor1.Executor接口设计与类结构图public interface Executor { ResultHandler NO_RESULT_HANDLER = null; // 执行update,delete,insert三种类型的sql语句 int update(MappedStatement ms...转载 2020-01-27 12:46:40 · 315 阅读 · 0 评论 -
mybatis多个参数(不使用@param注解情况下),sql参数占位符正确写法
转载自mybatis多个参数(不使用@param注解情况下),sql参数占位符正确写法useActualParamName配置useActualParamName 允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的工程必须采用Java 8编译,并且加上-parameters选项。(从3.4.1开始) true | false true mybatis...转载 2020-01-27 12:38:08 · 1367 阅读 · 0 评论 -
mybatis源码阅读(四):mapper(dao)实例化
转载自 mybatis源码阅读(四):mapper(dao)实例化在开始分析之前,先来了解一下这个模块中的核心组件之间的关系,如图:1.MapperRegistry&MapperProxyFactoryMapperRegistry是Mapper接口及其对应的代理对象工程的注册中心,Configuration是Mybatis全局性的配置对象,在初始化的过程中,所有配置信息...转载 2020-01-27 12:33:28 · 412 阅读 · 0 评论 -
mybatis源码阅读(三):mybatis初始化(下)mapper解析
转载自mybatis源码阅读(三):mybatis初始化(下)mapper解析MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。SQL 映射文件有很少的几个顶级元素...转载 2020-01-27 12:29:06 · 694 阅读 · 0 评论 -
mybatis源码阅读(二):mybatis初始化上
转载自mybatis源码阅读(二):mybatis初始化上1.初始化入口//Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与数据库进行交互private static SqlSessionFactory getSessionFactory() { SqlSessionFactory sessionFacto...转载 2020-01-27 12:24:14 · 299 阅读 · 0 评论 -
mybatis源码阅读(一):SqlSession和SqlSessionFactory
转载自mybatis源码阅读(一):SqlSession和SqlSessionFactory一、接口定义听名字就知道这里使用了工厂方法模式,SqlSessionFactory负责创建SqlSession对象。其中开发人员最常用的就是DefaultSqlSession(1)SqlSession接口定义public interface SqlSession extend...转载 2020-01-27 12:18:06 · 419 阅读 · 0 评论 -
mybatis3中@SelectProvider的使用技巧
转载自mybatis3中@SelectProvider的使用技巧mybatis3中增加了使用注解来配置Mapper的新特性,本篇文章主要介绍其中几个@Provider的使用方式,他们是:@SelectProvider、@UpdateProvider、@InsertProvider和@DeleteProvider。MyBatis 3 User Guide中的最后一章描述了注解的简单用法,但是对...转载 2020-01-25 12:09:33 · 475 阅读 · 0 评论 -
解决mybatis generator无法覆盖XML
转载自解决mybatis generator无法覆盖XML今天发现mybatis generator maven plugin在重复生成的时候xml文件只会merge,不会覆盖。明明在pom.xml中配置了如下:<configuration> <configurationFile>src/main/resources/mybatis/generat...转载 2020-01-23 15:23:10 · 1366 阅读 · 0 评论 -
Spring整合mybatis中的sqlSession是如何做到线程隔离的?
转载自Spring整合mybatis中的sqlSession是如何做到线程隔离的?项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按照原来的jdbc的使用方式,每次操作完成之后都要将连接关闭,但是实际使用中我们并没有这么干。更让人疑惑的点是,spring中默认使用单例形式来加载bean,而往往我们也不会改变这种默认,所以,是...转载 2019-05-12 19:06:48 · 1031 阅读 · 1 评论 -
MyBatis-generator使用,Example缺少分页问题解决
一、分页问题MyBatis自动生成代码没有分页功能。如:public class User { private Integer userId; private String name; public Integer getUserId() { return userId; } public void setUserId(I...原创 2019-05-18 12:00:35 · 2024 阅读 · 0 评论 -
Mybatis中强大的功能元素:resultMap
转载自Mybatis中强大的功能元素:resultMap前言在Mybatis中,有一个强大的功能元素resultMap。当我们希望将JDBC ResultSets中的数据,转化为合理的Java对象时,你就能感受到它的非凡之处。正如其官方所述的那样:resultMap元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码...转载 2019-08-31 20:30:24 · 749 阅读 · 0 评论 -
Mybatis自动生成代码
项目路径E:\testdaopom.xml<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId...原创 2019-10-09 19:42:49 · 179 阅读 · 0 评论 -
这也许是你不曾留意过的 Mybatis 细节
转载自 这也许是你不曾留意过的 Mybatis 细节Mybatis 可以说是 Java 后端的必备技能,可能你和我一样经常使用到它。但有时 cv 多了,会忘记了一些细节处理,比如为什么要加上这个注解?它的作用是什么等等。这篇文章是我以前写的一些关于 Mybatis 细节,希望对各位有起到查漏补缺的作用。1. 配置文件SqlMapConfig.xml 文件各参数介绍:<...转载 2018-11-17 14:03:49 · 172 阅读 · 0 评论 -
Mybatis传入参数类型为Map
转载自 Mybatis传入参数类型为Map mybatis更新sql语句:<update id="publishT00_notice" parameterType="Map">update test set createdate = #{createdate},creator = #{creator}where id in <foreach coll...转载 2018-09-16 10:43:57 · 3670 阅读 · 4 评论 -
Mybatis 使用的 9 种设计模式,真是太有用了
转载自Mybatis 使用的 9 种设计模式,真是太有用了虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBu...转载 2019-04-27 13:45:47 · 1067 阅读 · 0 评论 -
mybatis example处理and、or关系的方法
转载自 mybatis example处理and、or关系的方法1.( xx and xx) or ( xx and xx) 实例代码:BaUserExample baUserExample = new BaUserExample(); Criteria criteria1 = baUserExample.createCriteria();criteria1.andOrgId...转载 2019-02-07 15:20:44 · 2496 阅读 · 0 评论 -
mybatis入门(二)之XML 映射配置文件
转载自 mybatis XML 映射配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。文档的顶层结构如下:configuration 配置 properties 属性 settings 设置 typeAliases 类型别名 typeHandlers 类型处理器 objectFacto...转载 2018-09-15 13:31:21 · 173 阅读 · 0 评论 -
mybatis入门(一)之基础安装
转载自 mybatis入门安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:<dependency> <groupId>org.mybatis</groupId> <...转载 2018-09-15 13:20:35 · 2316 阅读 · 0 评论 -
Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
转载自 Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志。有些时候就不能。无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用。有些时候,我们没做什么配置就能输出日志....这是一个让无数人烦躁的问题。其实解决问题很容易(我过了这么久才解决,...转载 2018-09-16 13:01:16 · 301 阅读 · 0 评论 -
使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
转载自 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。1、相关文件关于Mybatis-Generator的下载可以到这个地址:https://github....转载 2018-09-16 11:00:43 · 156 阅读 · 0 评论 -
Mybatis传多个参数(三种解决方案)
转载自 Mybatis传多个参数(三种解决方案)据我目前接触到的传多个参数的方案有三种。第一种方案 DAO层的函数方法 public User selectUser(String name,String area);对应的Mapper.xml <select id="selectUser" resultMap="BaseResultMap"> ...转载 2018-09-16 10:53:48 · 281 阅读 · 0 评论 -
MyBatis传入多个参数的问题
转载自 MyBatis传入多个参数的问题一、单个参数:public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean"> select t.* from ...转载 2018-09-16 10:40:06 · 139 阅读 · 0 评论 -
Mybatis传递多个参数的4种方式
转载自 Mybatis传递多个参数的4种方式(干货)现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。下面给大家总结了以下几种多参数传递的方法。方法1:顺序传参法public User selectUser(String name, int dept...转载 2018-04-24 11:17:19 · 29078 阅读 · 2 评论 -
聊聊MyBatis缓存机制
转载自 聊聊MyBatis缓存机制前言MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。本次分析中涉及到的代码...转载 2018-04-18 20:32:46 · 195 阅读 · 0 评论 -
mybatis思维导图,让mybatis不再难懂(二)
转载自 mybatis思维导图,让mybatis不再难懂(二)写在前面上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成、动态sql、还有mapper的xml文件一下复杂配置等。值得注意的是,导图17和18中讲解resultMap子元素的时候可能讲得不是很清楚,应该需要大量的代码来讲解使用方法,思维导图转载 2018-04-15 22:05:50 · 202 阅读 · 0 评论 -
MyBatis 思维导图,让 MyBatis 不再难懂(一)
转载自 MyBatis 思维导图,让 MyBatis 不再难懂(一)写在前面与hibernate相比,我无疑更喜欢mybatis,就因为我觉得它真的好用,哈哈。它简单上手和掌握;sql语句和代码分开,方便统一管理和优化;当然缺点也有:sql工作量很大,尤其是字段多、关联表多时,更是如此。而且sql依赖于数据库,导致数据库移植性差。选用一个框架之前最好先了解它的优缺点,对项目最好用,效率最高的才是一...转载 2018-04-15 21:59:23 · 478 阅读 · 0 评论 -
mybatis入门(三)之Mapper XML 文件
转载自 mybatis Mapper XML 文件Mapper XML 文件MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。SQL 映射文件有很少的几个顶级...转载 2018-09-15 13:49:53 · 425 阅读 · 0 评论 -
mybatis入门(四)之动态SQL
转载自 mybatis 动态SQL动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提...转载 2018-09-15 13:56:47 · 131 阅读 · 0 评论