记一次mybatis中sql动态查询遇到的坑

1.今天遇到了一个导出excle数据不一致的问题,在我本地测试导出excle数据为4497条   然后部署到阿里云服务器上去之后导出数据才4493条,令我非常不解,因为是同一个jar包   同一个数据库   但却产生两种不同的结果,结果两张excle表格进行对比发现确实是少了四条数据    这四条数据有一个共同点    前面四列都是空数据    即姓名  性别  地址  微信名四个全部为空     经过在数据库里查询发现是如下这样数据:

2.然后我立马打印本地运行的jar包和阿里云服务器上控制台的log日志发现数据少了四条     log日志打印如下(图一本地  图二阿里云服务器):

3.然后上面根本就没发现问题出在哪里      也许是因为一个很小的细节问题 没注意到    想到同样的jar包  同一个数据库环境,怎么会出现不同的结果    然后我仔细发现了sql打印日志上的确是有问题的    而却问题相当明显    sql日志如下(图一本地  图二阿里云)

 

4.看到问题很明显了   然后去xml里面看sql咋写的    写的sql如下:

 

5.如上图所示   按照我的习惯这两个字段都是字符串类型的    我一般都会加上判断!=null  and  !""的   因为在java代码里面都是习惯用lang3包中的StringUtils.IsNotBank     而这个StringUtils.IsNotBank是包含!=null 和 !""两种判断的    所以我立马加上了!""的判断   如下:

6.加上如上的判断数据就好了  但令我奇怪的是为啥在本地环境只写!null的判断是没问题的    因为这个sql不是我写的    我怀疑有可能是环境不同导致的字符编码出现了问题     具体啥原因还续做深入了解    如有知道的   欢迎留言评论   共同学习成长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值