使用DetachedCriteria模糊查询 如何查询包含模糊条件的记录数
有时候使用一些复杂的条件查询记录数,使用HQL会比较麻烦
比如,如下hql语句,看起来是可以运行的,但实际上得到的结果却是0
String hql = "select count(*) from posts where postatus=:postatus and post_type=:post_type and (potitle=:s or pocontent=:s)";
或者
String hql = "select count(*) from posts where postatus=:postatus and post_type=:post_type and (potitle like:s or pocontent like:s)";
因此,我就想到了使用DetachedCriteria来实现
请看如下代码片段
DetachedCriteria criteria = DetachedCriteria.forClass(Posts.class); criteria.add(Restrictions.eq("postatus", "publish")); criteria.add(Restrictions.eq("post_type", "post")); criteria.add(Restrictions.or(Restrictions.like("potitle", s,MatchMode.ANYWHERE),Restrictions.like("pocontent", s,MatchMode.ANYWHERE))); criteria.setProjection(Projections.rowCount()); List<?> findByCriteria = hibernateTemplate.findByCriteria(criteria);
以上代码最终就获得了一个List数组,当然这个数组值包含一条数据,这个数据是Number类型
将这个Number类型转换为int即可
使用 intValue()方法即可
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情