
mybatis
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
通过源码分析Mybatis是如何返回数据库生成的自增主键值?
在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象。需要注意的是,KeyGenerator的作用,是返回数据库生成的自增主键值,而不是生成数据库的自增主键值。返回的主键值放到哪儿呢?放到parameter object的主键属性上。下面看看其接口定义。publicinterfaceKeyGenerator{voidprocessBefore(Executorexecutor,MappedStatem...转载 2020-08-20 09:20:10 · 559 阅读 · 0 评论 -
支付宝二面:Mybatis 接口 Mapper 内的方法为啥不能重载吗?我直接懵逼了。。。
动态代理的功能:通过拦截器方法回调,对目标target方法进行增强。言外之意就是为了增强目标target方法。上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标target都不要的科幻模式。注:本文默认认为,读者对动态代理的原理是理解的,如果不明白target的含义,难以看懂本篇文章,建议先理解动态代理。1. 自定义JDK动态代理之投鞭断流实现自动映射器Mapper首先定义一个pojo。publicclassUser{privateInte...转载 2020-08-14 21:25:58 · 278 阅读 · 0 评论 -
说实话,Hibernate 和 MyBatis 哪个更好用?
作者:SylvanasSun郑沐兴来源:https://zhuanlan.zhihu.com/p/21966051前言由于编程思想与数据库的设计模式不同,生出了一些ORM框架。核心都是将关系型数据库和数据转成对象型。当前流行的方案有Hibernate与myBatis。两者各有优劣。竞争激烈,其中一个比较重要的考虑的地方就是性能。因此笔者通过各种实验,测出两个在相同情景下的性能相关的指数,供大家参考。测试目标以下测试需要确定几点内容:性能差异的场景;性能不在同场景下差异比;找出各.转载 2020-07-16 20:17:39 · 629 阅读 · 0 评论 -
Mybatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
本文授权转载请注明来自FreeBuf.COM链接:https://www.freebuf.com/vuls/240578.html前言SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少。新手代码审计者往往对Java Web应用的多个框架组合而心生畏惧,不知如何下手,希望通过Mybatis框架使用不当导致的SQL注入问题为例,能够抛砖引玉给新手一些思路。一、Mybatis的SQL注入Mybatis的SQL语句可以基于注解的方转载 2020-07-08 21:38:03 · 857 阅读 · 0 评论 -
肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!
零、准备工作<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><dependenc...转载 2020-06-28 08:27:37 · 204 阅读 · 0 评论 -
MyBatis版本升级引发的线上告警回顾及原理分析
本文从一次MyBatis版本升级引发的线上告警开始讲起,然后针对告警定位过程、源码原理进行了深入的分析,并加入了不同版本的类比分析,最后结合实际工作做了一些经验总结,希望能对大家的工程实践有一定的帮助。背景某天晚上,美团到店事业群某项系统服务正在进行常规需求的上线。因为在发布时,提示inf-bom版本需要升级,于是我们就将inf-bom版本从1.3.9.6升级至1.4.2.1,如下图1所示:图1 版本升级不过,当服务上线后,开始陆续出现了一些更新系统交互日志方面的报警,这属于系统的辅助流程,.转载 2020-06-19 10:51:15 · 341 阅读 · 0 评论 -
如何让 Mybatis 自动生成代码
在使用mybatis过程中, 当手写JavaBean和XML写的越来越多的时候, 就越来越同意出错。这种重复性的工作, 我们当然不希望做那么多。还好,mybatis为我们提供了强大的代码生成--MybatisGenerator。通过简单的配置, 我们就可以生成各种类型的实体类, Mapper接口, MapperXML文件, Example对象等。通过这些生成的文件, 我们就...转载 2020-01-20 09:45:02 · 210 阅读 · 0 评论 -
程序员,Mybatis 你踩过坑吗?
大多数开发者应该都使用过Hibernate或者Mybatis的框架,或多或少都踩过一些坑!如在MyBatis/Ibatis中#和$的区别,#方式能够很大程度防止sql注入,$方式无法防止Sql注入。所以,老司机 对新手说,最好用#。简单的说#{}是经过预编译的,是安全的,而解决一些实际问题。如在执行sql语句时你有时并不希望让变量进行处理,而是直接赋值执行,这时就要用到(${a})了,...转载 2019-12-02 11:08:21 · 302 阅读 · 0 评论 -
Mybatis 的工作原理,写得太好了!
来源:cnblogs.com/scuury/p/10371246.html近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了。核心部件: SqlSession Executor StatementHandler ParameterHandler Resu...转载 2019-11-27 19:38:06 · 149 阅读 · 0 评论 -
Mybatis 的工作原理,你了解过吗?
第一步:创建一个sqlSessionFactory 第二步:创建sqlSession 第三步:执行具体的sql请求 总结 参考 近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了。核心部件: SqlSession Executor ...转载 2019-11-13 09:56:22 · 167 阅读 · 0 评论 -
在 MyBatis 里,如何将 JSON 型字段到 Java 类的映射
一、简介我们在用MyBatis里,很多时间有这样一个需求:POJO里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符串字段与Java类的相互类型转换。当然,你可以为每个类写一个MyClassTypeHandler,但问题是要为每个类都写一个TypeHandler,过于繁琐。有了泛型,一个通用的TypeHa...转载 2019-06-30 15:09:22 · 6313 阅读 · 1 评论 -
从 0 开始手写一个 Mybatis 框架,三步搞定!
最近研究了一下Mybatis,给大家磕叨磕叨,MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手完善。一、Mybatis框架流程简介在手写自己的Mybatis框架之前,我们先来了解一下Mybatis,它的源码中使...转载 2019-06-03 17:30:34 · 213 阅读 · 0 评论 -
SpringBoot + MyBatis + MySQL 读写分离实战
1. 引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP。然...转载 2019-06-06 15:45:49 · 932 阅读 · 2 评论 -
工作发狂:Mybatis 中$和#千万不要乱用!
作者:程序猿的内心独白开头这是一次代码优化过程中发现的问题,在功能优化后发现部分数据查不到出来了,问题就在于一条sql上的#和$。下图为两条sql:从图上可以看出 wwlr.LabelId in(${showLabels}) 和 wwlr.LabelId in(#{showLabels}),其中showLabels是传进来一个字符串类型的参数,参数的样子是这样的“4,44,...转载 2019-05-09 09:28:46 · 203 阅读 · 0 评论 -
MyBatis+Spring MVC开发指南(一)
前言MyBatis+Spring MVC这套组合,在实际互联网项目中非常流行,博主工作中也涉及过,打算由浅入深、系统的写出来!这个系列将会涵盖MyBatis开发详解、Spring MVC开发详解,以及2者的结合使用,并会分析它们的原理!(可以参考博主的另一篇文章了解Spring MVC原理:《写出我的第一个框架:迷你版Spring MVC》) 没有MyBatis之前在早期,我们都...转载 2018-11-21 08:43:39 · 331 阅读 · 0 评论 -
浅析 Mybatis 与 Hibernate 的区别与用途
有很长一段时间对mybatis是比较陌生的,只知道与Hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与Hibernate区别是非常大的,应当结合不同的情况分析选用。结合至今为止的经验,总结出以下几点:hibernate是全自动,而mybatis是半自动hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自...转载 2018-11-26 09:42:24 · 334 阅读 · 0 评论 -
MyBatis代码生成器(逆向工程)MBG使用
概述我们前面的博文中了解了MyBatis的基本用法,也写了很多单表的CRUD方法,基本上每个表都需要用到这些方法,这些方法都很规范而且比较类似。当数据库表的字段较少时,写起来还能接受,一旦字段过多或者需要在很多个表中写这些基本方法的时候,是不是很崩溃?MyBatis开发团队提供了一个很强大的代码生成器—MyBatis Generator (MBG).MBG通过丰富的配置可以生成不同...转载 2018-12-10 14:24:23 · 1311 阅读 · 0 评论 -
MyBatis代码生成器-Example讲解
概述在上篇博文 MyBatis代码生成器(逆向工程)MBG使用 中介绍了MBGZ的基本使用。我们知道在MBG的context中将targetRuntime配置为MyBatis3时,MBG会生成和Example相关的对象和方法。 本篇博文我们来介绍下与Example相关的用法。示例以country表相关的Example MBG 为例generatorConfig-country.xm...转载 2018-12-10 14:35:05 · 3440 阅读 · 0 评论 -
MyBatis 与 Hibernate 到底哪个更快?
前言由于编程思想与数据库的设计模式不同,生出了一些ORM框架。核心都是将关系型数据库和数据转成对象型。当前流行的方案有Hibernate与myBatis。两者各有优劣。竞争激烈,其中一个比较重要的考虑的地方就是性能。因此笔者通过各种实验,测出两个在相同情景下的性能相关的指数,供大家参考。友情提示:如果你嫌弃文章太长,可以拉到文末看结论即可。测试目标以下测试需要确...转载 2018-12-24 22:34:24 · 2923 阅读 · 0 评论 -
当面试官问我Mybatis初始化原理时,我笑了
对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 MyBatis的初始化做了什么 MyBatis基于XML配置文件创建Configuration对象的过程 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 涉及到的...转载 2019-01-01 13:52:25 · 703 阅读 · 0 评论 -
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
作者:阿进的写字台cnblogs.com/homejim/p/9909657.html温馨提示:文中代码看不全可左右滑动MyBatis 令人喜欢的一大特性就是动态 SQL。 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的。 MyBatis 动态 SQL 的出现, 解决了这个麻烦。MyBatis通过 OGNL 来进行动态 SQL 的使用的。目...转载 2019-03-22 09:10:18 · 187 阅读 · 0 评论 -
Mybatis 使用的 9 种设计模式,真是太有用了~
来源:crazyant.net/2022.html虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilde...转载 2019-04-15 21:52:33 · 698 阅读 · 0 评论 -
SpringBoot + Mybatis + Druid + PageHelper 实现多数据源并分页
前言本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper 并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelper 。http://www.cnblogs.com/xuwujing/p/8260935.html...转载 2019-04-22 09:49:29 · 436 阅读 · 0 评论 -
关于Mybatis,我总结了 10 种通用的写法
出处:https://blog.youkuaiyun.com/smile_lg/article/details/71215619用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用...转载 2019-04-17 11:30:43 · 293 阅读 · 0 评论 -
程序员,Mybatis 你踩过坑吗?
大多数开发者应该都使用过Hibernate或者Mybatis的框架,或多或少都踩过一些坑!如在MyBatis/Ibatis中#和$的区别,#方式能够很大程度防止sql注入,$方式无法防止Sql注入。所以,老司机对新手说,最好用#。简单的说#{}是经过预编译的,是安全的,而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在sql注入。有些特例是需要关注的,有的时候需要用${}解决一些实...转载 2019-04-18 21:34:07 · 1044 阅读 · 2 评论 -
【手写系列】透彻理解MyBatis设计思想之手写实现
前言MyBatis,曾经给我的感觉是一个很神奇的东西,我们只需要按照规范写好XXXMapper.xml以及XXXMapper.java接口。要知道我们并没有提供XXXMapper.java的实现类,MyBatis到底是怎么做到这一点的呢?有人会说是动态代理,现在我就来通过手写一个迷你版的MyBatis来彻底理解它的设计思想!如果你不了解JDK动态代理,请参考:《纯手写实现JDK动态代理》...转载 2018-11-21 08:46:14 · 746 阅读 · 0 评论