开发者社区> 问答> 正文

JFinal+druid使用过程的一点问题。。?报错

问题1:开了wallfilter以后。。。语句经常被检测成sql注入。。

CASE 
         WHEN s.field IS NOT NULL THEN REPLACE(s.field ,'%value%',s.`STATUS`) 

问题2:同样是sql 注入,order by a.field =1, a.field2

问题3:譬如select sum(t.i) as i from table t ......

然后使用getInt("i")来获取就报错
Caused by :lang.ClassCAstException: Bigdecimal cannot be cast to Integer

我确认过这个i字段是Int(11),然后取值的时候是没过两位数。结果还是报错了。。请问是什么原因。?为什么sum了以后获取会是Bigdecimal这种类型。。?什么情况下才会转?

对于问题1,2的话是不是由于我的sql用法不对?因为我觉得druid这么大个项目没可能出现这么多种过滤的问题吧?如果这种写法不对的话有没什么好的替代方法?~@wenshao ,@JFinal。。

展开
收起
爱吃鱼的程序员 2020-06-22 17:15:07 654 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    告诉我druid版本和具体被拦截的sql。<divclass="ref">

    引用来自“wenshao”的答案

    <divclass=ref_body>告诉我druid版本和具体被拦截的sql。升级到druid-0.2.25版本升级了的确解决了这个问题。谢谢。。在看更新的日志。。

    对于问题三。

    问题3:譬如selectsum(t.i)asifromtablet......

    然后使用getInt("i")来获取就报错
    Causedby:lang.ClassCAstException:BigdecimalcannotbecasttoInteger

    这可能是数据的某种策略,为了防止上溢出而做的一种妥协办法。
    解决办法是用getBigDecimal来取值。

    的确只能这样了。。想问下有没什么地方可以查到这个sum,count等聚合函数结果对应Java类型?因为这个类型好像还会变的。。我想知道有没什么规律。

    2020-06-22 17:15:22
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题) 立即下载