zoukankan      html  css  js  c++  java
  • char类型在传参时接收不到数据的原因

    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);
        }
    }
    

      

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/xww115/p/11351567.html
Copyright © 2011-2022 走看看