Category: Tips

mybatis 动态参数及其 foreach collection使用 0

mybatis 动态参数及其 foreach collection使用

Mybatis里传参数入Mapper一般基于基本类型,Integer、String、List、Hashtable,然后以此构架foreach迭代动态sql。

但是这种方法只针对一级引用,如果参数是Object,比如将下面的Page作为参数传入,其中的PageData已经put了一个名为listName的List。

但是下面例子调用失败,mybatis无法辨认二级参数pd.listName是个List。

没找到直接解决办法,只能绕过foreach而采用String基本类型,尝试如下:

结果测试结果始终返回id为1的一个数据,而不是1,2,3,4,5,6六个数据。原因是带 #{} 的参数使用的是PreparedStatement,会有类型转换,最终注入sql的不是

而是加一层包装作为String注入:

解决办法,使用 $ {} 参数,这样mybatis不会做任何预处理,直接作为String使用。

注意 但是在mybatis中,”${xxx}”这样格式的参数会直接参与sql编译,从而不能避免注入攻击。在涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式,所以,这样的参数需要我们在代码中手工进行处理来防止注入。     参考 mybatis 传入参数及其 foreach collection的三种用法 https://stackoverflow.com/questions/11760074/mybatis-string-as-parameter Mybatis 中$和#千万不要乱用 Please follow and...

Spring Batch in Spring MVC 0

Spring Batch in Spring MVC

Today I have implemented Spring Batch in my Spring MVC project for importing data from CSV file to database. There are plenty of tutorials on the internet but I met a lot of problems during...

[转]Spring AOP以及代理JDK和CGLIB 0

[转]Spring AOP以及代理JDK和CGLIB

我们知道,Spring 中 AOP 是一大核心技术,也是面试中经常会被问到的问题,最近我在网上也看到很多面试题,其中和 Spring AOP 相关的就有不少,这篇文章主要来总结下相关的技术点,希望对大家有用。 Please follow and like us:0

[转]怎么优雅的处理Java异常? 0

[转]怎么优雅的处理Java异常?

0 本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅 《Java核心技术 卷I》 和 《java编程思想》 可以得到更多的基础信息. Please follow and like us:0