mybatis的原因!!!!!

数据库这个样子

在postman中调用接口:SQL

select * from T_TRAIN_MARSHALLING where	TRAIN_NUM is null and PRE_TRAIN_NUMBER is null and RECEIVE_SEND=#{RECEIVE_SEND}
union all
select * from T_TRAIN_MARSHALLING where TRAIN_NUM = #{TRAIN_NUM} and PRE_TRAIN_NUMBER is null

  

查询结果:

在SQLserver中的测试如下:

然后就开始找原因,解决方案就是加trim,这个很恶心,或者mybaits下就不要用char了

select * from T_TRAIN_MARSHALLING where TRAIN_NUM is null and PRE_TRAIN_NUMBER is null and trim(RECEIVE_SEND)=#{RECEIVE_SEND}
union all
select * from T_TRAIN_MARSHALLING where TRAIN_NUM = #{TRAIN_NUM} and PRE_TRAIN_NUMBER is null

最终解决方案,
在mapper-config中,注册你实现的转换器类,其中jdbcType可以指定的类型在Mybatis的枚举类org.apache.mybatis.type.JdbcType中有明确的定义,不能为该枚举以外的值,不然会出错。这里因为枚举中没有我们需要的XMLType类型,所以指定为UNDEFINED。(也可以不指定具体的类型,在使用时用typeHandler指定具体的类即可):
 
mybatis-config.xml中增加
<typeHandlers>
<!--Oracle CHAR fix -->
<typeHandler handler="cn.com.git.cbs.mybatis.typehandler.OracleCharStringTypeHandler" javaType="String" jdbcType="CHAR" />
</typeHandlers>

  

 
然后写一个转换的类
/*
* @author XueWeiWei
* @date 2019/8/14 14:01
*/
public class OracleCharStringTypeHandler implements TypeHandler<String> {
@Override
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
OraclePreparedStatement ops = ps.unwrap(OraclePreparedStatement.class);
ops.setFixedCHAR(i, parameter);
}
}

  

char类型在传参时接收不到数据的原因的更多相关文章

  1. URL传参时中文参数乱码的解决方法

    URL传参时,中文参数乱码的解决: 今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码.我的代码是这样写的 ...

  2. C++ 传参时传内置类型时用传值(pass by value)方式效率较高

    来源:唐磊的个人博客<C++ 传参时传内置类型时用传值(pass by value)方式效率较高> 在<Effective C++>里提到对内置(C-like)类型在函数传参时 ...

  3. MyBatis中传参时为什么要用#{}

    MyBatis中传参时为什么要用#{},这个问题和MyBatis如何防止SQL注入类似.不过在解释这个问题之前,先解释一下什么是SQL注入,还有些称作注入攻击这个问题. SQL注入就是SQL 对传入参 ...

  4. asp.net Get和Post传参和接收参数

    asp.netGet和Post传参和接收参数 Get请求: 对于传参:test.aspx?name=%e5%bc%a0%e4%b8%89 接收参数的方法: Request.QueryString[&q ...

  5. .NET 内存基础(通过内存体验类型、传参、及装箱拆箱)

    该随笔受启发于<CLR Via C#(第三版)>第四章4.4运行时的相互联系 一.内存分配的几个区域 1.线程栈 局部变量的值类型 和 局部变量中引用类型的指针(或称引用)会被分配到该区域 ...

  6. Mybatis 中在传参时,${} 和#{} 的区别

    介绍 MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型. 在SQL中引用这些参数 ...

  7. vue 路由传参 、接收参数

    传参组件 一. <router-link :to='"/main/course?navName=" +item.columnName + "&id=&quo ...

  8. axios的post传参时,将参数转为form表单格式

    import axios from 'axios'; import alert from './alert.js'; import Qs from 'qs' //引入qs 时axios的自带模块 le ...

  9. RestTemplate post请求使用map传参 Controller 接收不到值的解决方案 postForObject方法源码解析.md

    结论 post方法中如果使用map传参,需要使用MultiValueMap来传递 RestTemplate 的 postForObject 方法有四个参数 String url => 顾名思义 ...

随机推荐

  1. jq-demo-在列表中添加新节点,点击删除

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. IDEA中@Autowired 注解报错~图文

  3. 解析Spring第三天(面向切面AOP)

    面向切面:AOP 在不修改源代码的基础上,对方法进行增强.AOP的底层原理就是代理技术(第一种:jdk的动态代理(编写程序必须要有接口).第二种:cglib代理技术(生成类的子类).如果编写的程序有借 ...

  4. 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic

    TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址). SOCKET:SOCKET只是面对编程人员的 ...

  5. css制作旋转风车(transform 篇)

    做这个案例之前首先要大概了解CSS的transform的属性 transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 看看效果图 打开的时候自动旋转 ...

  6. 排列+函数映射——hdu6038好题

    /* 引理:[0,n-1]的排列,i向a[i]连边,那么每个数必定在一个环中 所以数组a可以分割成一些环,数组b也可以分割成一些环 先讨论a的一个环 a[a1]=a2 a[a2]=a3 a[a3]=a ...

  7. BZOJ 4817: [Sdoi2017]树点涂色(lct+线段树)

    传送门 解题思路 跟重组病毒这道题很像.只是有了一个询问\(2\)的操作,然后询问\(2\)的答案其实就是\(val[x]+val[y]-2*val[lca(x,y)]+1\)(画图理解).剩下的操作 ...

  8. USACO 2007 “March Gold” Ranking the Cows

    题目链接:https://www.luogu.org/problemnew/show/P2881 题目链接:https://vjudge.net/problem/POJ-3275 题目大意 给定标号为 ...

  9. Android Telephony分析(三) ---- RILJ详解

    前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程.这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\andro ...

  10. 转:CSS盒模型

    W3C 组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主 要定义四个区域:内容(content).边框距 ...