使用DetachedCriteria模糊查询 如何查询包含模糊条件的记录数

使用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/天,具体规则查看活动详情Blog Img