mybatis和mongoTemplate中的动态查询
mybatis中的动态查询
在mybatis中,要多条件动态查询,用where+if语句块,例如:
<where>
<if test="subjectIds != null and subjectIds.size() > 0">
SUBJECT_ID in
<foreach collection="subjectIds" index="index" item="subjectIds" open="(" separator="," close=")">
#{subjectIds}
</foreach>
</if>
<if test="name !=null and name !=''">
and (NAME like #{name,jdbcType=VARCHAR} or PAPER_CODED like #{name,jdbcType=VARCHAR})
</if>
</where>
通过判断传入的的参数是否为空,来决定是否经过这个筛选条件。
mongoTemplate中的的动态查询
在mongoTemplate中,要多条件动态查询,可以用Criteria对象进行拼接,例如:
(itemBank是json对象)
Criteria criteria = new Criteria();
if (itemBank.getSubjectId()!=null&&!itemBank.getSubjectId().equals("")){
criteria = criteria.and("subjectId").is(itemBank.getSubjectId());
}
if (itemBank.getTypeCode()!=null&&!itemBank.getTypeCode().equals("")){
criteria = criteria.and("typeCode").is(itemBank.getTypeCode());
}
Query query = new Query(criteria);
List<ItemBank> itemBanks=mongoTemplate.find(query,ItemBank.class);
return itemBanks.size();
通过判断传入的的参数是否为空,来决定是否经过这个筛选条件。