帮助... 我想使用mybatis3.2.3按许多参数分组,但它不起作用...请帮助我。我可以得到我的答案。谢谢。
这是地图制作者。
<select id="selectByGroup" resultMap="chartMap">
select * from chart group by
<foreach collection="list" item="item" index="index" separator=",">
#{item}
</foreach>
</select>
控制器:
String dims[] = dimension.split(",");
List<String> paraList = new ArrayList<String>();
for(String s : dims){
if(!s.equals(""))
paraList.add(s);
}
List<Chart> charts = chartDao.selectByMap(paraList);
相关dao方法:
public List<Chart> selectByMap(Object obj) {
List<Chart> chartList = null;
System.out.println(obj);
chartList = sqlSession.selectList("draw.selectByGroup",obj);
return chartList;
}
答案 0 :(得分:2)
尝试使用 $ {item}替换# {item}。
从官方文档(http://mybatis.github.io/mybatis-3/sqlmap-xml.html):
字符串替换
默认情况下,使用#{}语法将导致MyBatis生成 PreparedStatement属性并安全地设置值 PreparedStatement参数(例如?)。虽然这更安全,更快速 几乎总是首选,有时你只想直接注入一个 字符串未修改为SQL语句。例如,对于ORDER BY, 你可以使用这样的东西:
ORDER BY $ {columnName}这里MyBatis不会修改或转义字符串。
注意接受用户输入并将其提供给用户是不安全的 这种说法没有修改。这导致了潜在的SQL 注入攻击,因此您应该禁止用户输入 在这些领域,或者总是执行自己的逃脱和检查。