1.当传入参数有多个的时候,使用Hibernate的named parameter方式是一种较好的选择,利于后期的维护;
2.实现方式:使用:name 来进行传入参数,使用sqlQuery对象的setParameter方法传入参数,同时兼顾list类型以及普通数据类型;
3.注意使用时的空格标识符的添加,否则IDE可能会提示,如果不提示,那就只能在运行时抛出异常了;
4.厉害了我的Hibernate,现在已经更新到5啦~
@Override
public List<Object[]> getCountByInfoType(String areaCodeStr, String yesterdayNoonStr, List<String> params) throws Exception {
if(!StringUtils.checkStr(areaCodeStr) || !StringUtils.checkStr(yesterdayNoonStr)){
return null;
}
String countSql = "SELECT * FROM table_test " +
"WHERE area_code IN(:areaCodeStr) " +
"AND info_type IN (:infoType)" +
"AND creation_date>:yesterdayNoonStr ";
SQLQuery sqlQuery = this.getSession().createSQLQuery(countSql);
sqlQuery.setParameterList("infoType", params).setParameter("areaCodeStr", areaCodeStr).setParameter("yesterdayNoonStr", yesterdayNoonStr);
return sqlQuery.list();
}