Mybatis
文章平均质量分 81
isea533
《MyBatis从入门到精通》作者,MyBatis分页插件PageHelper作者,通用Mapper作者,个人网站:https://mybatis.io
展开
-
MyBatis 通用 Mapper5 来了
通用 Mapper 是一个发布于 2014 年的开源项目,是第一个在 MyBatis 中实现了通用 DAO 的开源框架,发布距今接近 10 年,仍然有一部分开发者在使用,项目仍然在维护,主要通过开发者提交 PR 来进行维护。原创 2024-08-27 06:45:00 · 567 阅读 · 0 评论 -
通用Mapper 4.3.0 发布
通用Mapper 4.3.0 发布。原创 2024-04-06 12:00:03 · 678 阅读 · 0 评论 -
MyBatis游标Cursor在Oracle数据库上的测试
除了上面的列出的几种情况下,还试过多种不同的配置,耗时没有比2.5更好。除了MySQL中需要通过作为标记开启流式传输外,其他数据库都是正常的用法,通过控制fetchSize大小来减少内存占用和数据库交互次数。原创 2023-03-27 23:59:08 · 1130 阅读 · 0 评论 -
MyBatis游标Cursor的正确用法和百万数据传输的内存测试
很早以前为了处理大量数据想过使用Cursor,当时发现没有效果,就没有继续深入。这次为了搞清楚Cursor是否真的有用,找些资料和源码发现是有效果的,只是缺了必要的配置。原创 2023-03-25 23:23:48 · 8929 阅读 · 7 评论 -
通用 Mapper 进阶实例:为什么好久都没更新了?
写篇博客关于通用 Mapper,通用 Service 方法。可以简单实现同级列表数据的上下拖拽改变顺序。为什么很久没更新?核心已经很完善了,扩展也很容易。实际上我还想精简方法,不想增加过多的方法,有需要的自己扩展。...原创 2020-03-16 22:40:58 · 11103 阅读 · 17 评论 -
MyBatis XML 标签类型说明
MyBatis XML 标签类型说明resultMap 标签的类型属性为 type(必填)。id, result 标签的类型属性为javaType(可选)。idArg, arg 标签和上面两个类似,也都是 javaType(可选)。association 标签的类型属性为 javaType(可选)。discriminator 标签的类型属性为 javaType(可选)。collectio原创 2017-07-28 10:36:33 · 7308 阅读 · 0 评论 -
MyBatis中的OGNL教程
MyBatis中的OGNL教程原创 2015-12-05 18:47:31 · 60775 阅读 · 11 评论 -
Executor 拦截器高级教程 - QueryInterceptor 规范
Executor 拦截器高级教程 - QueryInterceptor 规范这篇文档涉及下面几个方面 1. Executor query 方法介绍 2. 拦截器配置和调用顺序 3. 拦截 query 方法的技巧 4. 拦截 query 方法的规范 5. 如何配置不同的 Executor 插件1. Executor query 方法介绍在 MyBatis 的拦截器的文档部分,我们知道 Exe原创 2016-12-31 17:45:33 · 6931 阅读 · 7 评论 -
Mybatis工具类:JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性
JdbcTypeInterceptor运行时自动添加 jdbcType 属性拦截器签名@Intercepts({ @Signature( type = ParameterHandler.class, method = "setParameters", args = {PreparedStatement.cla原创 2017-02-27 22:36:13 · 3742 阅读 · 0 评论 -
MyBatis 使用 MyCat 实现多租户的一种简单思路
本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进行隔离。MyCat 基本配置首先针对多租户配置了多个数据库,在 MyCat 的 schema.xml 中配置了多个 schema。 在 server.xml 中配置了一个用户: 后面会使用 MyCat 注解(就是注释)方式根据不同的标识,将操作指向不同的数据库。过滤器识别请求匹配对应的数据库标识有很多种方式可以加以区分,下面使用最简单的原创 2017-02-21 15:20:10 · 18924 阅读 · 11 评论 -
Mybatis 示例之 SelectKey
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦。selectKey Attributes属性描述keyPropertyselectKey 语句结果应该被设置的目标属性。resultTyp原创 2014-03-13 09:21:33 · 144227 阅读 · 25 评论 -
Spring Boot 集成MyBatis
Spring Boot 集成MyBatis在配置MyBatis前,我们先配置一个druid数据源。Spring Boot 集成druiddruid有很多个配置选项,使用Spring Boot 的ConfigurationProperties我们可以很方便的配置druid。创建DataSourceConfig如下:/** * 数据源 * * @author liuzh * @since 201原创 2015-12-27 15:29:01 · 355667 阅读 · 69 评论 -
从命令行运行 MyBatis Generator
最近发现好多人在使用 MyBatis Generator (简称 MBG)时遇到各种各样的问题,常见的如编码问题,还有如何引入其他 jar 包等问题。MBG 的基本用法可以看我博客的《Mybatis Geneator详解》。为了方便大家可以直接运行 MBG,并且解决编码的问题,给大家提供了一个配置好的 MBG 插件,还包含了使用其他插件时如何在命令行中设置的用法。下载地址: 链接:http://p原创 2016-12-26 20:16:22 · 5549 阅读 · 2 评论 -
通用 Mapper UUID 简单示例
通用 Mapper UUID 简单示例不可回写的 UUID通用 Mapper 中对 UUID 的用法主要提到了一种专有的写法,如下写法:@GeneratedValue(generator = "UUID")这种方式实现很容易理解,就是在你 insert 之前,调用 UUID 的公共方法在 <bind> 标签中生成了一个值,插入到了数据库,由于这个值是临时的,并没有 set 到对象,因此这种方式是不支原创 2016-11-02 20:28:59 · 23100 阅读 · 13 评论 -
MyBatis 返回动态结果类型插件
MyBatis 返回动态结果类型插件说明虽然写了这么一个插件,但是个人建议尽可能不去这么用,如果这个插件真正能方便你,使用起来也没任何问题。关于插件的一些个人修改建议,在插件的注释中有说明。插件用途:可以在 MyBatis 参数中带上要返回的类型Class,插件就会改变返回值类型为你指定的类型。用法说的可能不清楚,看个简单的用法。MyBatis 中定义如下方法:Object selectById(@原创 2016-10-16 18:41:29 · 13507 阅读 · 2 评论 -
MyBatis 执行动态 SQL
应老婆要求写的这篇博客。大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中:<select id="executeSql" resultType="map"> ${_parameter}</select>你可以如下调用:sqlSession.selectList("executeSql", "select * from sy原创 2016-08-30 15:20:43 · 17685 阅读 · 4 评论 -
MyBatis Excutor 拦截器的巧妙用法
这里要讲的巧妙用法是用来实现在拦截器中执行额外 MyBatis 现有方法的用法。并且会提供一个解决拦截Excutor时想要修改MappedStatement时解决并发的问题。这里假设一个场景: 实现一个拦截器,记录 MyBatis 所有的 insert,update,delete 操作,将记录的信息存入数据库。这个用法在这里就是将记录的信息存入数据库。实现过程的关键步骤和代码:1.首先在某个原创 2016-10-05 16:04:27 · 12298 阅读 · 6 评论 -
MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀
MyBatis Generator 1.3.4 扩展可以设置 Mapper(Dao)后缀MyBatis Generator 简称 MBG,MBG 1.3.4 版本在<table>元素上提供了一个 mapperNam 的属性,可以设置生成的 Mapper 名字,使用方法如下:<table tableName="sys_store" mapperName="StoreDao"> <generat原创 2016-09-04 10:51:25 · 33437 阅读 · 6 评论 -
MyBatis 3.4.0 版本功能介绍
这里只列举部分重要的内容,详细内容看官方说明新增功能1. Cursor 新增返回值类型为游标的方法当查询大量(上百万)数据的时候,使用游标可以有效的减少内存使用,不需要一次性将所有数据得到,可以通过游标逐个或者分批(逐个获取一批后)处理。SqlSession 中新增的 3 个游标方法:/** * A Cursor offers the same results as a List, except原创 2016-05-29 20:36:35 · 18702 阅读 · 2 评论 -
MyBatis 最常见错误,启动时控制台无限输出日志
你是否遇到过下面的情况,控制台无限的输出下面的日志: Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl’ adapter. Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl’ adapter.原创 2016-04-28 21:46:49 · 39593 阅读 · 9 评论 -
MyBatis 3.3.1 版本新功能示例
MyBatis 3.3.1版本新功能示例MyBatis3.3.1更新日志: https://github.com/mybatis/mybatis-3/issues?q=milestone%3A3.3.1这里不对更新做翻译或者其他详细介绍。 这个更新除了一些bug修复,还有两个新增的功能:增加了对批量插入回写自增主键的功能增加了注解引用@Results的功能下面通过简单例子来介绍这两个功能,原创 2016-03-06 18:51:03 · 8655 阅读 · 5 评论 -
MyBatis Map结果的Key转为驼峰式2
在我新书《MyBatis 从入门到精通》(6月底上市)中为了介绍 MyBatis 拦截器,提供了一个下画线键值转小写驼峰形式插件,这篇博客使用另一种思路来解决相同的问题。MyBatis 配置文件中,支持下面这几种配置: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFac原创 2017-06-18 17:47:55 · 11155 阅读 · 19 评论 -
《MyBatis 从入门到精通》
我在CSDN博客写了不少和MyBatis相关的博客,2015年时觉得自己写的太零散,不够系统全面,所以在GitBook创建了一本名为MyBatis最佳实践的开源电子书,当时写好了目录大纲,由于维护好几个开源项目,业余时间几乎都被占用,最终也只写了MyBatis Generator部分,也就是博客中的MyBatis Generator 详解。2016年3月份时,博文视点的孙奇俏编辑和我联系,然后就开始原创 2017-06-21 20:46:33 · 101195 阅读 · 43 评论 -
GitChat:MyBatis 枚举全面使用指南
连续好几天都在写这篇 GitChat,加起来的时间可能已经超过20多小时了,至今还差1/10左右才算真正写完。本来想和之前的 Chat 一样发布后在 1 个月后免费,现在发现制度变了,付费文章需要等待 1 年后才能免费,想要参与的可以点击底部阅读原文查看。为了能让更多人尽可能了解枚举的用法,本场 GitChat 文章对应的示例源码会同步放到 github 上,看不到文章的朋友也可以看示例源码进...原创 2019-01-27 11:32:03 · 1554 阅读 · 2 评论 -
MyBatis 为什么需要通用 Mapper ?
在早期项目文档中有过类似主题的内容,但是最近我自己看文档的时候发现一个问题,文档虽然很详细,但是并不适合初次接触的人。为了方便第一次听说,第一次尝试的开发人员了解通用 Mapper,补充此文档。原创 2018-10-14 14:56:57 · 70959 阅读 · 25 评论 -
guozilanTK 企业级项目架构设计思路和用法分享
guozilanTK 企业级项目架构设计实例和用法。 由于涉及内容比较多,因此在 8月18号时通过 QQ 讨论组分享本文的内容。缘由如果你使用了类似 Maven 的依赖管理工具,本分享...原创 2018-08-19 15:50:42 · 1208 阅读 · 0 评论 -
MyBatis 批量提交 - BATCH
很多人在用 MyBatis 或者 通用 Mapper 时,经常会问有没有批量插入和批量更新的方法。实际上许多时候没必要用 &amp;lt;foreach&amp;gt; 去实现特别复杂的批量操作。直接通过 MyBatis 的 BATCH 方式执行增删改方法即可。下面是一个批量用法的例子:@Autowiredprivate SqlSessionFactory sqlSessionFactory...原创 2018-07-05 10:12:48 · 25837 阅读 · 21 评论 -
通用 Mapper @KeySql 注解 genId 方法详解
为了方便使用全局主键(例如:Vesta 是一款通用的ID产生器,互联网俗称统一发号器),通用 Mapper 4.0.2 版本增加了新的控制主键生成的策略。@KeySql 注解增加了下面的方法:/** * Java 方式生成主键,可以和发号器一类的服务配合使用 * * @return */Class<? extends GenId> genId() default Ge...原创 2018-04-22 17:26:29 · 22088 阅读 · 3 评论 -
通用 Mapper 4.0.0 版本发布
通用 Mapper4 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example 相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间。 项目地址: https://gitee.com/free/Mapper https://github.com...原创 2018-03-19 09:40:10 · 7451 阅读 · 4 评论 -
MyBatis Generator 详解
MyBatis Generator中文文档MyBatis Generator中文文档地址:http://mbg.cndocs.ml/该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。本文中所有节点的链接都是对应的中文文档地址,可以点击查看详细信息。注:本文后面提到...原创 2014-12-23 14:27:11 · 329453 阅读 · 103 评论 -
MyBatis 通用 Mapper 实现原理
MyBatis 通用 Mapper 实现原理 文章出自 GitChat http://gitbook.cn/books/59ed3c942f5a1d7161bad162/index.html本文会先介绍通用 Mapper 的简单原理,然后使用最简单的代码来实现这个过程。基本原理通用 Mapper 提供了一些通用的方法,这些通用方法是以接口的形式提供的,例如。public interfac原创 2017-11-09 20:42:55 · 64351 阅读 · 14 评论 -
MyBatis直接执行SQL的工具SqlMapper
可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决。能否通过MyBatis实现这样的功能呢?为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2.0版本增加了一个可以直接执行SQL的新类SqlMapper。通过这篇博客,我们来了解一下SqlMapper。SqlMapper提供的方法SqlMapper提供了以下这些公共方法:Map<String,O原创 2015-03-11 09:47:02 · 51047 阅读 · 16 评论 -
GitChat活动:MyBatis 通用 Mapper 实现原理及相关内容
MyBatis 通用 Mapper 是一个可以让开发人员更方便使用 MyBatis 的扩展,通过简单的配置,可以方便的直接获取单表的常见操作,提供如 select, selectAll, selectCount, delete, update 以及 Example 相关的方法。本场 Chat 会使用更精简的代码来演示通用 Mapper 的整个处理过程,通过这种方式可以让大家清晰的看到整个插件真正在做原创 2017-10-23 08:39:10 · 1899 阅读 · 0 评论 -
Mybatis极其(最)简(好)单(用)的一个分页插件
以前为Mybatis分页查询发愁过,而且在网上搜过很多相关的文章,最后一个都没采用。在分页的地方完全都是手写分页SQL和count的sql,总之很麻烦。后来有一段时间想从Mybatis内部写一个分页的实现,我对LanguageDriver写过一个实现,自动分页是没问题了,但是查询总数(count)仍然没法一次性解决,最后不了了之。原创 2014-04-16 12:32:24 · 200239 阅读 · 63 评论 -
MyBatis 示例之存储过程(三)
在开始阅读本篇前,建议先看前两篇: MyBatis 示例之存储过程(一) http://blog.csdn.net/isea533/article/details/76358365 MyBatis 示例之存储过程(二) http://blog.csdn.net/isea533/article/details/77148552本示例是《MyBatis 从入门到精通》 书中第三原创 2017-08-26 09:05:31 · 3129 阅读 · 0 评论 -
MyBatis 示例之存储过程(二)
在开始阅读本篇前,建议先看前一篇: MyBatis 示例之存储过程(一) http://blog.csdn.net/isea533/article/details/76358365本示例是《MyBatis 从入门到精通》书中第二个存储过程的例子,有关本示例的基础环境,可以从 http://mybatis.tk 或者 https://github.com/mybatis-book/book原创 2017-08-13 18:09:01 · 2268 阅读 · 3 评论 -
MyBatis 示例之存储过程(一)
本示例是《MyBatis 从入门到精通》书中第一个存储过程的例子,有关本示例的基础环境,可以从 http://mybatis.tk 或者 https://github.com/mybatis-book/book 获取,示例源码在 simple-all 中。存储过程在数据库中比较常见,虽然大多数存储过程比较复杂,但是使用 MyBatis 调用时,用法都一样,因此我们这一节使用一个简单的存储过程来了解原创 2017-07-29 21:04:46 · 20327 阅读 · 6 评论 -
《MyBatis 从入门到精通》转发送书~~~
《MyBatis 从入门到精通》转发送书~~~京东已经可以直接购买:https://item.jd.com/12103309.html 活动地址https://github.com/mybatis-book/book/issues/4活动说明根据参与人数进行送书,随机从所有参与人员中抽取几位朋友送书。活动页面有效参与人数每超过100人,就增加一个送书名额。活动时间:2017年6月30日 至 201原创 2017-06-30 21:44:55 · 3784 阅读 · 3 评论 -
我与MyBatis
今天看到CSDN博客提示有博客之星评选看到需要至少写140字我就犯难了。打开Notepad++写了我与MyBatis之间的一些事,没想到最后粘贴回去的时候已经超过了最大限制。本文是完整版,内容如下: 从我主导公司的第一个项目时,我就选择了从没用过的MyBatis,从新手阶段摸索学习,到后来为了方便自己不得不去实现一个自己想要的分页插件。从此开始深入了解MyBatis,同时我博客中开始大量出现和M原创 2015-12-07 21:15:36 · 3404 阅读 · 6 评论 -
MyBatis底层基础和拦截器 - 第一部分
MyBatis底层基础和拦截器 - 第一部分第一部分包含了下面代码的基本讲解和下面代码与XML配置关系和作用的讲解。这一部分是了解后续拦截器和SqlSource的重要基础。本视频不仅对深入学习MyBatis有用,对于一般的MyBatis使用也能加深理解。第一部分完整视频+源文件+PPT下载地址:http://pan.baidu.com/s/1mgzZnx2在第一部分视频后,还有一些和MyBatis相原创 2015-11-30 21:59:31 · 5503 阅读 · 2 评论