mybatis类型转换bug

三号小玩家      2022-04-29     398

关键词:

案例:mybatis框架的使用中是否遇到过前台传入数据后mybatis后台并不执行sql的情况呢?

比如:前台传入一个状态var flag //空字符,0,1

然后你用int接收,到mybatis框架后做了这样的判断

select id,name,flag from user where 1=1
<if test="param1!=null and param1!=‘‘">
            and flag=#{param1}
        </if>

传入的int,数据库也是int类型,可debug出的sql数据就是不进if内部执行and操作,估计是test之后将数据作为string进行判断了,索性改成string后,问题解决。

我用的是mybatis3.2.5版本的,

有时间要多看看mybatis源码了,

你是否也遇到过这样的问题呢?

 

mybatis整体架构

...器,确定类加载器使用顺序解析器模块Xpath,初始化解析mybatis-confg.xml,mapper.xml,动态SQL占位符XPathParserTokenHandlerEntityResolver数据源模块事务管理模块抽象处理缓存模 查看详情

mybatis使用自定义typehandler转换类型

MyBatis虽然有很好的SQL执行性能,但毕竟不是完整的ORM框架,不同的数据库之间SQL执行还是有差异。笔者最近在升级Oracle驱动至ojdbc7,就发现了处理DATE类型存在问题。还好MyBatis提供了使用自定义TypeHandler转换类型的功能。本文介... 查看详情

mybatis时间戳类型转换

参考技术A直接用数据的时间函数就好了吧DATE_FORMAT(datetime,'%Y-%m-%d%H:%i:%s') 查看详情

mybatis源码阅读:mybatis基础模块-类型转换模块(代码片段)

一、概述MyBatis是一个持久层框架ORM框架,实现数据库中数据和Java对象中的属性的双向映射,那么不可避免的就会碰到类型转换的问题,在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换为JDBC类型,而... 查看详情

mybatis源码学习-类型转换(typehandlerregistry)(代码片段)

历史文章:Mybatis源码学习(8)-类型转换(TypeHandler)定义TypeHandler后,Mybatis还需要对这些TypeHandler进行管理,Mybatis是通过TypeHandlerRegistry来实现TypeHandler的管理的。TypeHandlerRegistry的初始化是在Configurati 查看详情

mybatis入门系列三之类型转换器

mybatis入门系列三之类型转换器 类型转换器介绍mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应因此java类名-数据库表名,java类属性名-数据库表字段名,java类属性类型-数据库字段类型前面两个都容易设... 查看详情

mybatis使用自定义typehandler转换类型(代码片段)

MyBatis虽然有很好的SQL执行性能,但毕竟不是完整的ORM框架,不同的数据库之间SQL执行还是有差异。笔者最近在升级Oracle驱动至ojdbc7,就发现了处理DATE类型存在问题。还好MyBatis提供了使用自定义TypeHandler转换类型的功... 查看详情

mybatis源码学习(10)-类型转换(typealiasregistry)(代码片段)

历史文章:Mybatis源码学习(9)-类型转换(TypeHandlerRegistry)TypeAliasRegistry的逻辑比较简单,它负责为某个数据类型创建别名,之后在使用时可以使用别名引用该类。在Mybatis的mapper.xml文件中,一般会有返回值... 查看详情

mybatis源码学习-类型转换(typehandler)(代码片段)

历史文章:Mybatis源码学习(7)-反射工具(ObjectWrapper&MetaObject)JDBC规范中定义的数据类型和Java语言中的数据类型并非完全对应,因此需要在操作Statement时需要将Java类型转为JDBC类型,而处理Result时,需要... 查看详情

一文帮你搞定mybatis的类型转换模块,深度好文,欢迎一键三连!!!(代码片段)

  本文来给大家详细的分析下MyBatis的基础支持层中的类型转换模块。类型转换模块  MyBatis是一个持久层框架ORM框架,实现数据库中数据和Java对象中的属性的双向映射,那么不可避免的就会碰到类型转换的问题,... 查看详情

一文帮你搞定mybatis的类型转换模块,深度好文,欢迎一键三连!!!(代码片段)

  本文来给大家详细的分析下MyBatis的基础支持层中的类型转换模块。类型转换模块  MyBatis是一个持久层框架ORM框架,实现数据库中数据和Java对象中的属性的双向映射,那么不可避免的就会碰到类型转换的问题,... 查看详情

mybatis类型转换器-自定义全局转换enum(代码片段)

在数据模型、接口参数等场景部分属性参数为一些常量值,比如性别:男、女。若是定义成int或String类型,于是类型本身的范围太宽,要求使用者需要了解底层的业务方可知如何传值,那整体来看增加沟通成本,对接效率也低。... 查看详情

mybatis--mybatis核心配置文件深入:typehandlers标签(自定义类型转换器)plugins标签(插件标签:扩展mybatis功能分页助手)(代码片段)

1.typeHandlers标签(自定义类型转换器)你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现org.apache.ibatis.type.TypeHandler接口,或继承一个很便利的类org.apache.ibatis.type.BaseTy... 查看详情

mybatis源码学习-类型转换(typehandler)(代码片段)

历史文章:Mybatis源码学习(7)-反射工具(ObjectWrapper&MetaObject)JDBC规范中定义的数据类型和Java语言中的数据类型并非完全对应,因此需要在操作Statement时需要将Java类型转为JDBC类型,而处理Result时,需要... 查看详情

数据库时间慢了14个小时,mybatis说,这个锅我不背~(代码片段)

同事反馈一个问题:Mybatis插入数据库的时间是昨天的,是不是因为生成Mybatis逆向工程生成的代码有问题?大家都知道,对于这类Bug本人是很感兴趣的。直觉告诉我,应该不是Mybatis的Bug,很可能是时区的问... 查看详情

springboot+mybatis遇到bug

今天用springboot+mybatis写一个小demo遇到如下错误ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2019-04-0814:11:11.359ERROR7300---[main]o.s.b.d.LoggingFa 查看详情

mybatis源码学习-类型转换(typehandlerregistry)(代码片段)

历史文章:Mybatis源码学习(8)-类型转换(TypeHandler)定义TypeHandler后,Mybatis还需要对这些TypeHandler进行管理,Mybatis是通过TypeHandlerRegistry来实现TypeHandler的管理的。TypeHandlerRegistry的初始化是在Configuration中,Con... 查看详情

mybatis配置文件的bug

看看图片里的配置有什么问题么?url=jdbc……我擦,我怎么这么不小心,换来一整天的不得安宁,上网各种搜bug,把mysql驱动配置到classpath中,jar包放进jdkjre里面还是不行妈的,真是逼得我跳脚骂娘啊,可是这不是我这一天唯一傻... 查看详情