mybatis动态查询,模糊查询
第一种:直接动态sql注解的形式
@Select("<script>"+"select * from problem where pro_res=0 and pro_state=#{state} "+" <if test='name != null' > "+" and app_id in (select app_id from application where app_name like '%${name}%' )"+" </if>"+" <if test='title != null' > "+" and pro_title like '%${title}%' "+" </if>"+" <if test='level != null' >"+" and pro_level=#{level} "+" </if>"+" <if test='industry != null' >"+" and pro_industry like '%${industry}%' "+" </if>"+" <if test='company != null' >"+" and pro_company like '%${company}%' "+" </if>"+" <if test='keyword != null' >"+" and pro_keyword like '%${keyword}%' "+" </if>"+"</script>")
@ResultMap("problemMap")
List<Problem> searchByConditions(String name, @Param("title") String title, String level, String industry, String company, String keyword,@Param("state") String state);
第二种,基于Example的,适合于单个表的条件查询,模糊查询
@Override
public List<Subject> searchByConditions(String name, String degree, String title, String field, String institute) {SubjectExample subjectExample=new SubjectExample();SubjectExample.Criteria or = subjectExample.or();if (StringUtils.isNotBlank(name)){or.andSubNameLike("%"+name+"%");}if (StringUtils.isNotBlank(degree)){or.andSubEducationLike(degree);}if (StringUtils.isNotBlank(title)){or.andSubHeadLike("%"+title+"%");}if (StringUtils.isNotBlank(field)){or.andSubFieldLike("%"+field+"%");}if (StringUtils.isNotBlank(institute)){or.andSubWorkplaceLike("%"+institute+"%");}return subjectMapper.selectByExample(subjectExample);
}