mybatis 设置jdbcType与JavaType和JdbcType对应表

mybatis 设置jdbcType与JavaType和JdbcType对应表使用mybatis对mysql数据库进行增删改查时,如果传递的参数存在空值,那么会报空值异常: select*fromuserwhere1=1and <iftest="params.userCode!=nullandparams.userCode.trim()!=”">anduserCode=#{params.userCode}…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

使用mybatis对mysql数据库进行增删改查时,如果传递的参数存在空值,那么会报空值异常:

	select * from user where 1= 1 and 
	<if test="params.userCode!= null and params.userCode.trim()!='' ">
        and  userCode= #{params.userCode}
    </if>
    <if test="params.name!= null and params.name.trim()!='' ">
        and name like "%"#{params.name}"%"
    </if>
 
 	Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #2 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property

但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换。所以mybatis在插入空值时,需要指定JdbcType :

	select * from user where 1= 1 and 
	<if test="params.userCode!= null and params.userCode.trim()!='' ">
        and  userCode= #{params.userCode,jdbcType = VARCHAR}
    </if>
    <if test="params.name!= null and params.name.trim()!='' ">
        and name like "%"#{params.name,jdbcType = VARCHAR}"%"
    </if>

javaType和jdbcType的对应关系如下:
JDBCType JavaType
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179888.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 亿能bms上位机_上位机软件 上位机PC软件 bms电池管理系统测试系统软件「建议收藏」

    亿能bms上位机_上位机软件 上位机PC软件 bms电池管理系统测试系统软件「建议收藏」上位机软件上位机PC软件bms电池管理系统测试系统软件上海鸣野软件开发公司从创立伊始就立足于差异化竞争,只做自己有竞争优势的事,13391389262,,在上位机软件,上位机开发,bms电池管理系统测试系统软件,上位机软件外包积累了丰富的开发经验,通过学习和创新,不断地扩大和加强公司在行业中的优势,是企业发展之道。关注别人所不关注的,看到别人所看不到的,做到别人所做不到的,是鸣野软件开发公司*…

    2022年5月31日
    58
  • Android源码在线查看网站

    Android源码在线查看网站安卓社区https://www.androidos.net.cn/sourcecode(推荐)AndroidXRefhttp://androidxref.com/安卓特性(包括历史版本):https://developer.android.google.cn/

    2022年7月20日
    17
  • Android studio进阶之多语言/图片–国际化

    Android studio进阶之多语言/图片–国际化

    2021年9月30日
    38
  • java 多态[通俗易懂]

    java 多态[通俗易懂]多态的情况下,子父类存在同名的成员变量或成员方法优先调用问题1.多态的情况下,子父类存在同名的成员变量时,默认访问的是父类的成员变量数据.2.多态的情况下,子父类存在同名的非静态函数的时候,默认是调用子类的成员函数.3.多态的情况下,子父类存在同名的静态函数时,默认是调用父类的成员函数.原因:java多态的实现,首先说成员变量,因为在java中,一个对象实例是存储在堆中的,而这个对象包含的内容有对象头,对象体以及对其字节,首先对象头存放的是对象运行时的数据,像是hashcode,锁标识,类型指针,

    2022年7月7日
    22
  • js常用跳转代码[通俗易懂]

    js常用跳转代码[通俗易懂]今天整理下我们常用的js跳转代码,常用的js跳转代码比如:js倒计时跳转代码、pc站跳转手机站代码、在原来的窗体中直接js跳转用、在新窗体中打开页面用、js直接跳转代码、js返回代码、head标签内加如下代码实现页面定时自动跳转代码、self.location方式实现页面跳转、top.loca…

    2022年8月13日
    4
  • ioctl() FIONREAD

    ioctl() FIONREAD函数名:ioctl  头文件:#include  功能:控制I/O设备,提供了一种获得设备信息和向设备发送控制参数的手段。用于向设备发控制和配置命令,有些命令需要控制参数,这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体,而ioctl命

    2022年7月23日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号