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();
}