Mybatis
Mybatis技术,源码分析专栏
程序员小岑成长记
公众号:程序员小岑成长记
展开
-
4千字带你看懂Mybatis $和#占位符的作用
前言在JDBC中,主要使用的是两种语句,一种是支持参数化和预编译的PrepareStatement,能够支持原生的Sql,也支持设置占位符的方式,参数化输入的参数,防止Sql注入,一种是支持原生Sql的Statement,有Sql注入的风险。在使用Mybatis进行开发过程中,隐藏了底层具体使用哪一种语句的细节,我们通过使用#和$告诉Mybatis,我们实际上进行的是怎么样的操作,需要对语句进行参数化还是说直接保持原生状态就好。今天我们主要看一下使用两种符号使用时系统应对Sql注入的表现和Mybati原创 2020-05-23 17:52:39 · 700 阅读 · 0 评论 -
2千字带你看懂Mybatis TypeHandler的应用及源码
TypeHandlers无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下面是常见的一些对应类型:以BigDecimalTypeHandler看一下,它主要完成了哪些工作。这个类的第一个方法是对预处理语句(PreparedStatement)设置参数,之后的三个函数都是从ResultSet或者用于执行存储过程的CallableStatement语句中..原创 2020-05-23 17:50:02 · 220 阅读 · 0 评论 -
6千字带你看懂Mybatis字段映射-AS&ResultMap
前言考虑到在Select时使用AS和方案一其实没什么差别,在介绍ResultMap之前,顺便带过一下。方案二-Select … AS当我们的数据库列名和对象字段之间不是驼峰式命名的关系,我们可以在Select时使用AS,使得列名和对象名匹配上。映射文件中是本次会执行的sql,我们会查出id,city_id,city_name,city_en_name。 按照开启的驼峰式命名开关,我们会对应到对象的id,cityId,cityName,cityEnName字段。<select id="sele原创 2020-05-23 17:40:04 · 2079 阅读 · 0 评论 -
5千字带你看弄Mybatis字段映射 - 驼峰式命名
Mybatis在转换Result到需要的Java业务对象时做的三件事,如下:解决了数据库列名到Java列名的映射。解决了数据库类型到Java类型的转换工作。在转换过程中具备一定的容错能力。其实核心就是:数据库中的列名怎么和对象中的字段对应起来。数据库中的列的类型怎么转换到合适的Java类型,不引起转换失败。今天我们先来看第一点,数据库中的列名怎么和对象中的字段对应起来。首先是日常PO(Persistant Object) CityPO,里面有五个字段。public cla原创 2020-05-23 17:38:28 · 697 阅读 · 0 评论 -
万字长文带你看懂Mybatis缓存机制
前言基于个人的兴趣,开了这场chat,主题是Mybatis一级和二级缓存的应用及源码分析。希望在本场chat结束后,能够帮助读者朋友明白以下三点。Mybatis是什么。Mybatis一级和二级缓存如何配置使用。Mybatis一级和二级缓存的工作流程及源码分析。本次分析中涉及到的代码和数据库表均放在Github上,地址: mybatis-cache-demo。目录为达到以上三个目的,本文按照以下顺序展开。Mybatis的基础概念。一级缓存介绍及相关配置。一级缓存原创 2020-05-20 19:50:55 · 307 阅读 · 0 评论 -
Mybatis版本升级踩坑及背后原理分析
1、背景某一天的晚上,系统服务正在进行常规需求的上线,因为发布时,提示统一的pom版本需要升级,于是从 1.3.9.6 升级至 1.4.2.1。当服务开始上线后,开始陆续出现了一些更新系统交互日志方面的报警,属于系统辅助流程,报警下图所示, 具体系统数据已脱敏,内容是Mybatis相关的报警,在进行类型转换的时候,产生了强转错误。更新开票请求返回日志, id:{#######}, response:{{"code":XXX,"data":{"callT原创 2020-05-16 20:41:53 · 2247 阅读 · 2 评论