如何使用mybatis按参数分组

时间:2015-01-08 02:51:49

标签: java mybatis

帮助... 我想使用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;
}

1 个答案:

答案 0 :(得分:2)

尝试使用 $ {item}替换 {item}。

从官方文档(http://mybatis.github.io/mybatis-3/sqlmap-xml.html):

  

字符串替换

     

默认情况下,使用#{}语法将导致MyBatis生成   PreparedStatement属性并安全地设置值   PreparedStatement参数(例如?)。虽然这更安全,更快速   几乎总是首选,有时你只想直接注入一个   字符串未修改为SQL语句。例如,对于ORDER BY,   你可以使用这样的东西:

     

ORDER BY $ {columnName}这里MyBatis不会修改或转义字符串。

     

注意接受用户输入并将其提供给用户是不安全的   这种说法没有修改。这导致了潜在的SQL   注入攻击,因此您应该禁止用户输入   在这些领域,或者总是执行自己的逃脱和检查。