mybatis + DB2数据库常见报错:jdbc type 0 not yet supported



mybatis + DB2数据库常见报错:jdbc type 0 not yet supported。

        最近做项目,我也遇到了这个问题,并且多次遇到了,有时候改改这里,动动那里,问题也解决了,
但是不搞清楚这个问题的根本原因,还是不放心。我的情况是这样的:进行一个数据库查询操作,会向后台
传递一个参数,SQL大致是这样的:
SELECT
    PRODUCT_NAME, PRODUCT_COLOR
FROM
    PRODUCT
WHERE
    PRODUCT_NAME = #PRODUCT_NAME#

在前台,我们需要把PRODUCT_NAME的值传递给数据库,但是也可能会出现不传值的情况。

思考一个问题:下面的2个查询语句,执行时,会报错吗?为什么?
SELECT * FROM TABLENAME WHERE NAME = '';
SELECT * FROM TABLENAME WHERE NAME = NULL;

互联网上,关于这个问题,最多的文章,下面这个帖子,内容大致如下:

Hey all,y/nnnnnnnnnyy
I would like to share you guys this problem im getting constantly by using
Ibatis via jdbc to do queries on DB2...

Let's say we have written a simple query like this

SELECT
    PCT_SCO_MAX,
FROM
    FLES_PERC_SCO
WHERE
    COD_COMPANY = #codCompany# AND
    COD_SELLER  = #codSeller#

the JDBC drivers via Ibatis framework CANNOT map a EMPTY STRING value into
"codSeller". infact it maps "null"  as you can see in the log:

DEBUG [java.sql.PreparedStatement]--<{pstm-105524} Parameters: [112, null]>

but this way makes your query NOT fetch any results...

So i've rounded the problem witha /dynamic TAG but this solution is not
stylish ;

<isNotEmpty prepend="AND" property="codSeller">
    COD_SELLER = #codTipoUnita#
</isNotEmpty>
<isEmpty prepend="AND" property="codSeller">
    COD_SELLER = ''
</isEmpty>

someone got a better idea???

        通过上面的方式,是可以解决这个报错问题的。笔者在实际项目中进行过测试。这里整理一下,mark一下,
下次再遇到这种报错,就能快速定位问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值