在使用hibernate和数据库交互时,可以是使用hibernate的session的各种操作数据库方法,在实际使用中也常常结合hbm.xml文件里写好的query执行块,再通过setParameter方式设置参数后执行查询获取结果。
其中经常使用的一个场景----hibernate实现查询某实体的某个字段的多个值的HQL---- ,总是忘记怎么写:
解决办法:
hibernate实现查询某个字段的多个值的HQL写法:
<!--查询符合创建时间的多个用户id的用户列表-->
<query name="FetchListInUserTable">
SELECT *
FROM UserTable user
where user.id in :ids
and user.createdate >= TIMESTAMP(:bd)
and user.createdate <= TIMESTAMP(:ed)
</query>
对应的Dao层类似这样:
Query query = session.getNamedQuery("FetchListInUserTable");
query.setParameterList("ids", userIds.toArray()) ;//对象数组 存放用户id的数组 注意是用setParameterList
List<User> modelStatisticsInfoList = query.setParameter("bd", dateSpan.getBegin())
.setParameter("ed", dateSpan.getEnd()).list();
Ok, 就这样,下次就会用了,不用再查阅了。