
mybatis
Dongguabai
这个作者很懒,什么都没留下…
展开
-
记一次隐私数据加解密失效的问题排查
不要依赖HashMap的顺序:这是老生常谈,但实际开发中还是容易被忽略而踩坑。很多工具用起来简单,但想用好必须了解其底层机制。原创 2025-05-21 07:43:45 · 295 阅读 · 0 评论 -
禁用 MyBatis 一级缓存
MyBatis 一级缓存默认开启,是 session 级别。如果要禁用一级缓存,就要设置为 statement 级别,即:<setting name="localCacheScope" value="SESSION"/>//STATEMENTmybatis: configuration: local-cache-scope: session //statement 一级缓存 cache-enabled: false //这里是二级缓存 原理其实原创 2022-04-08 22:11:41 · 4718 阅读 · 3 评论 -
Mybatis设置sql超时时间
开始搭建项目框架的时候,忽略了sql执行超时时间的问题. 原本使用.net开发是,默认的超时时间是30s,这个时间一般一般sql是用不到的,但也不排除一些比较复杂或数据量较大的sql.而java中,如果不指定,默认超时时间是不做限制的,默认值为0.由于我们的项目采用Mybatis进行数据库操作,经过查看Mybaits相关文档,配置sql超时时间有两种方法1 全局配置在mybatis配置文件的settings节点中,增加如下配置...转载 2021-06-02 12:49:04 · 5111 阅读 · 0 评论 -
springboot sessionFactory 方式 配置 mybaits 扫描多个 mapper xml
static final String MAPPER_LOCATION1 = "classpath:mybatis/dsno1/*/*.xml"; //扫描 目录1static final String MAPPER_LOCATION2 = "classpath:mybatis/dsno2/*/*.xml"; //扫描 目录2 @Bean(name = "masterSqlSessionFactory") @Primary //www.1b23.com public SqlSess.转载 2021-05-31 14:37:44 · 1008 阅读 · 0 评论 -
一种可能不太常见的 MyBatis 引发的 SQL 执行成功却返回失败的场景(可能引发事务失效)
今天突然想到了一个特例,在此记录一下。就是可能出现 SQL 执行成功,但是 MyBatis 函数返回失败的场景,即SQL执行的结果与函数返回的结果不一致,如果在一个事务中,从而导致其他操作回滚的情况。其实过程很容易理解。比如这个例子:这个 SQL 执行是没问题的,但是程序肯定会抛出异常:从数据库中查询,可以发现数据的确是被删除了。但是程序确抛出了异常,这样就会导致其他同一个事务中的操作被回滚。...原创 2021-04-12 11:28:00 · 978 阅读 · 0 评论 -
再议 MyBatis 中的动态代理
再议 MyBatis 中的动态代理相关文章:MyBatis源码分析(Mapper动态代理的实现及执行流程)(https://dongguabai.blog.youkuaiyun.com/article/details/82084958)静态代理先看一个静态代理的例子:抽象接口:package com.example.myBatisDemo.proxy;/** * @author Dongguabai * @Description 抽象接口 * @Date 创建于 2021-01-26 12:4原创 2021-01-27 16:22:51 · 235 阅读 · 0 评论 -
MyBatis SQL.xml 使用 Map & 批量更新多条记录
记录一下:<update id="updateA"> <foreach collection="map.entrySet()" item="value" index="key"> update a_table set value = #{value}, update_time = NOW() where id = #{key}; </forea原创 2020-11-27 09:44:54 · 618 阅读 · 0 评论 -
MyBatis 和 MySQL 按 in 的参数顺序排序
前言:笔者在elasticsearch中查询出来的文章id,需要在mysql中连表查询,但是输出默认是按照主键id排序的,我是想按照es输出的id排序,毕竟es全文检索的内容是越像权值越大越在前面。所以笔者需要按in的参数顺序排序。1.按in的参数顺序排序,mysql中用field()函数,mybatis用foreach在mysql中按in的参数顺序排序其实很简单,只要用到field()函数就可以了SELECT a.article_id, a.title,转载 2020-10-23 13:55:02 · 1594 阅读 · 0 评论 -
TypeException: JDBC requires that the JdbcType must be specified for all nullable parameters.
使用 MyBatis 的时候出现了这个异常:nested exception is org.apache.ibatis.type.TypeException: JDBC requires that the JdbcType must be specified for all nullable parameters. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeExce原创 2020-09-29 19:14:27 · 3343 阅读 · 0 评论 -
mybatis if标签判断字符串相等
mybatis 映射文件中,if标签判断字符串相等,两种方式:因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候,1.<if test="sex=='Y'.toString()">2.<if test = 'sex== "Y"'>注意:不能使用<if test="sex=='Y'">and 1=1</if>因为mybatis会把'Y'解析为字符,java是强类型语言,所转载 2020-08-18 18:54:48 · 374 阅读 · 0 评论 -
Spring整合Mybatis SQL语句的输出
【1.修改Spring-Mybatis】<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <-- 添加此行代码 ,并创建一个mybatis-config.xml--> <property name="conf转载 2020-07-07 15:00:05 · 406 阅读 · 0 评论 -
小议 MySQL InnoDB 事务隔离 和 MyBatis 一级缓存
相关文章:一次群聊“事件”引发的对 @Transactional 和 MyBatis 的思考昨天跟一个同学探讨了一个问题,虽然是个小问题,但是牵扯的内容还是很多的,这里做一下总结。他的代码简化如下: @Autowired private UserMapper userMapper; @Transactional public void test(){ //此时数据库是没有 name 为 "test..." 的 User Strin原创 2020-06-17 18:16:12 · 599 阅读 · 3 评论 -
关于(历史)系统多租户设计的后续
相关文章:ThreadLocal 系列之 TransmittableThreadLocal基于 MyBatis 实现多租户数据隔离的实践因为某些原因,临近上线前我们调整了方案,即使用多数据源的方案去对系统进行多租户改造,这也是《基于 MyBatis 实现多租户数据隔离的实践》中与各位伙伴讨论的相对好的方案。这样改造过程平滑,两种方案(数据合并方案和多数据源方案)的风险、操作难度不在一个数量级。虽然多数据源方案相对简单很多,但还是要注意一些问题。这里将一些问题记录一下。(历史)系统多数据源配置原创 2020-05-14 16:38:40 · 442 阅读 · 0 评论 -
基于 MyBatis 实现多租户数据隔离的实践
欢迎大家共同探讨解决方案,欢迎私信。目前面临的问题多租户技术现在是一种很常见的软件技术。网上会有很多“优雅”的设计方案,但是在实际项目开发中,尤其是老项目,需要综合考虑“历史设计问题”、“对用户的影响程度”、“异常能否回滚”等各种因素。目前项目现状:系统已经通过 region 字段区分多租户,大部分表都有这个字段,只有部分中间表(基于 id 关联)无此字段;所有的 SQL 中都带有 re...原创 2020-03-27 20:00:30 · 2195 阅读 · 0 评论 -
排查读写分离失效原因
今天组内一哥们反应说项目中读写分离出现了 BUG:明明加了读库的注解,而且日志也是显示应该要读从库,但是居然还是从主库中读取的数据。于是排查了一下原因,原因就是因为在数据源切换之前使用了声明式事务。首先介绍一下这个项目中读写分离的实现方式:基于注解(AOP) + AbstractRoutingDataSource;这是个很常见的使用方式,但是我个人不太推荐这个方式,因为基于注解可设置范围过大,如...原创 2020-02-28 15:19:13 · 722 阅读 · 0 评论 -
Mapped Statements collection already contains value for
项目启动出现这个异常:Mapped Statements collection already contains value for我这边的原因是在 Mapper 中出现了重载方法。后来想了一下,也很好理解,MyBatis 将方法名当作 id 进行映射,所以就会出现这个异常。...原创 2019-12-24 21:03:02 · 694 阅读 · 0 评论 -
mybatis-databaseIdProvider多数据库支持
<select id="selectPerson" parameterType="int" parameterMap="deprecated" resultType="hashmap" resultMap="personResultMap" flushCache="false" useCache="true" timeout="10000" fetchS...转载 2019-10-17 12:59:25 · 396 阅读 · 0 评论 -
表情存储异常--mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'na
背景iOS端测试时发现,在备注一栏输出emoji表情,保存时出现系统异常java项目架构 spring-boot+mybatis+德鲁伊连接池现象抛出java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1定位1、数据库字段、表、数据库、mys...转载 2019-09-09 21:16:49 · 619 阅读 · 0 评论 -
MyBatis 返回 Map,查询字段两列分别作为 key 和 value
之前写过一篇博客,MyBatis 返回 Map 类型的结果(https://blog.youkuaiyun.com/Dongguabai/article/details/79580200),这种直接返回 Map 的结果,返回的结果是这样:结果是返回一个 Map,Map 的 Entry 为“字段名-字段值,字段名-字段值”。但是有时候我们需要的是返回的是 key-value,key 和 value ...原创 2019-05-17 23:47:08 · 42279 阅读 · 16 评论 -
通用 Mapper 源码分析
通用 Mapper是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example相关的单表操作。文章地址:https://mp.weixin.qq.com/s?__biz=MzU1OTgyMDc3Mg==&mid=2247483774&idx=1&sn=aebbcef0f3b26ae2441fbe061b485b3e&ch...原创 2019-03-16 11:24:03 · 788 阅读 · 0 评论 -
分析 @Trannsactional 和 SqlSession 的关系
在这样一段代码中:加了 @Transactional 和不加@Transactional Mapper 与数据库交互产生的连接是不一样的。文章地址:https://mp.weixin.qq.com/s?__biz=MzU1OTgyMDc3Mg==&mid=2247483776&idx=1&sn=4b280542a47d8a232e446662356a918a&...原创 2019-03-13 09:47:31 · 882 阅读 · 0 评论 -
MyBatis 的一级缓存实现详解及使用注意事项
转自:https://blog.youkuaiyun.com/chenyao1994/article/details/792337250.写在前面MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源...转载 2018-12-12 14:57:26 · 319 阅读 · 0 评论 -
MyBatis一对多中嵌套一对多查询(使用resultMap的补充)
在MyBatis一对多查询(使用resultMap)中已经很详细的介绍了resutMap的用法。我现在遇到了这样一个需求,需要在一对多中的多中再一对多(实际需求远比这个复杂)。处理结果与普通的一对多差不多,不过有个坑就是标签中的<collection>一定要有property关联上那个“一”,在pojo中:在mapper.xml中:一定要注意关联,如果不注意关联直接使用...原创 2018-11-09 20:57:58 · 4238 阅读 · 1 评论 -
MyBatis一对多查询(使用resultMap)
转自:https://www.cnblogs.com/HigginCui/p/5850059.html【需求】查询订单以及订单明细的信息。确定主查询表:订单表orders确定关联查询表:订单明细表 orderdetail在一对一查询的基础上添加订单明细表关联即可。【分析】使用resultMap将上面的查询结果映射到pojo中,订单信息有重复。要求:对orde...转载 2018-11-09 20:20:23 · 1496 阅读 · 0 评论 -
使用PageHelper查询后查询结果多了一个row_id
这个问题也提Issue了。先简单描述下问题:tk.Mybatis版本3.3.8;PageHelper版本4.1.6。 XML中SQL:<select id="getTagQuery" resultType="com.xx.TagQuery"> SELECT TAG_ID tagId,TAG_NAME tagName from BDATAG_TAG ...原创 2018-11-09 10:17:04 · 6155 阅读 · 7 评论 -
Mybatis if test无效的原因(字符串比较)
转自:https://blog.youkuaiyun.com/qq_36014192/article/details/78213877?locationNum=4&fps=1我在xml中写了如下sql: <if test="date!=null and date =='2'"> //要执行的sql </if>当传值date...转载 2018-10-10 13:42:22 · 2250 阅读 · 0 评论 -
Mybatis的if标签判断空字符串 == 0
主要内容转自:https://www.jianshu.com/p/732839a2f532从我们的认知上来说,一个 空字符串 和 一个数字0 是不可能相等的.所以我第一反应是,他是不是用法不对?或者是他的业务代码其他地方干扰到了? 于是我决定写了个最简单的demo来进行测试.如下然后输出结果如下:惊奇的发现,这个if标签果然把空字符串和数字0判断成了相等.这里我并不...转载 2018-10-09 14:01:46 · 40881 阅读 · 7 评论 -
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException
转自:https://mp.weixin.qq.com/s/ldHCArT2BdjhUFZWK1hTBA最近在开发博客的详细页面内容,突然发现 tk 的selectByPrimaryKey 不能用,报错了,错误信息如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.typ...转载 2018-10-03 00:14:53 · 2778 阅读 · 0 评论 -
MyBatis用JavaBean作为返回接口集的一个问题
今天出现了这样一个异常:说是没有构造,但是我的Query是有有参构造的,有参构造第一个参数类型是BigDecimal,第二个参数类型是String:异常显示的是没有构造,其中第一个参数类型是String,第二个参数类型是BigDecimal。而SQL查询结果是第一个参数是String,第二个参数是BigDecimal:也就是说SQL查询结果集的顺序要与Query对象的构造顺...原创 2018-09-28 19:00:33 · 830 阅读 · 0 评论 -
Mybatis XML文件中的大于、小于转义
& &amp; < &lt; > &gt; " &quot; ' &apos; <= &lt;= ...原创 2018-09-27 15:57:06 · 355 阅读 · 0 评论 -
MyBatis源码分析(Mapper动态代理的实现及执行流程)
首先简单回顾下代理模式静态代理概念:是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。简单代码演示:抽象接口:真实角色:代理角色:测试使用:动态代理概念:是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。在jdk的api中提供了java.l...原创 2018-08-27 01:33:48 · 4577 阅读 · 0 评论 -
MyBatis在日志中输出JDBC Connecting信息
有时候会需要在日志中输出相应的SQL信息(具体可以参照:在SpringBoot中输出mybatis中的SQL),但是今天在日志中想分析Connction信息的时候发现居然无法查看到Connection的信息:日志配置如下:明明已经配置了Connection的级别为DEBUG怎么还是没有输出相应的日志呢?后来突然想到,因为是MyBatis与Spring整合,事务也全部交给Spring...原创 2018-08-26 01:34:18 · 3102 阅读 · 0 评论 -
SpringBoot整合Mybatis-通用mapper使用二级缓存
关于Mybatis的二级缓存可以看我转载的这篇博客:https://blog.youkuaiyun.com/Dongguabai/article/details/81106876未使用二级缓存前测试执行了三条sql:开启二级缓存在yml文件中:在Mapper接口上使用@CacheNamespace注解:数据库entity需要序列化:测试:执行结果:...原创 2018-07-18 23:40:28 · 3737 阅读 · 0 评论 -
MyBatis缓存策略之二级缓存
转自:https://blog.youkuaiyun.com/zmx729618/article/details/77991916 1. 二级缓存的原理前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper通常情况下有不同的namespace,就都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的。为了更加清楚的描述二级缓存,先来看一个...转载 2018-07-18 23:12:06 · 728 阅读 · 0 评论 -
Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this
今天测试通用Mapper的insert()方法的时候出现了这样一个异常:再往上看看:Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='tagId', mode=IN, javaType=class java....原创 2018-07-18 01:06:06 · 21614 阅读 · 1 评论 -
mybatis与mybatis-spring版本不一致出现的问题
今天无意中看到的一个异常,记录一下。框架是SSM:版本为:运行出现异常:修改mybatis版本为:1.3.0:原创 2018-06-25 13:01:08 · 3972 阅读 · 0 评论 -
在SpringBoot中输出 MyBatis 中的SQL
第一种方式:在配置文件中增加这么一行配置:效果:第二种方式:或者在日志文件中添加:效果:第三种方式:在app.yml文件中添加:效果:可以看出第三种方式就是将我们的mapper接口所在的包进行日志配置,所以如果项目使用的是Spring的话,也可以直接在日志文件中配置mapper所在的包:...原创 2018-06-20 10:03:05 · 5454 阅读 · 0 评论 -
MyBatis Mapper 只返回某些字段
MyBatis的通用接口提供了很多单表查询的好方法,但是这些方法会将整个表对应实体(未加@Transient)的所有属性全部返回,而有时候我们并不需要返回所有的字段,解决方法:可以使用Example的这个方法:...原创 2018-06-04 18:05:35 · 12252 阅读 · 5 评论 -
Mybatis如何插入返回自增主键值
具体做法:在insert语句中添加如下两个参数:这个id是指你参数对象的那个属性值。插入成功后,自增主键会返回到 assign 对象的 id 字段中。如果是使用注解的话:插入成功后,自增主键会返回到 type 对象的 id 字段中。...原创 2018-06-02 16:21:11 · 566 阅读 · 0 评论 -
MyBatis返回hashmap
Mapper.xml文件 Mapper 方法 返回值(Oracle全部是大写!!)原创 2018-03-16 12:54:18 · 7165 阅读 · 1 评论