当前位置:   article > 正文

mybatis foreach循环遍历map中的key和value_mybatis foreach key value

mybatis foreach key value
需求:按学生的姓名name、性别sex(单选框)及可选课程名称courses(复选框)进行高级查询
思路:将这些查询信息存放在map中
方法:
  1. Map<String,List<String>> condition=new HashMap<String,List<String>>();
  2. //姓名
  3. if(name.trim()!=null&&name.trim().length()>0){
  4. List<String> stuName=new ArrayList<String>();
  5. stuName.add(name.trim());
  6. condition.put("s_name",stuName);
  7. }
  8. //性别
  9. if(sex!=null&&sex.length()>0){
  10. List<String> stuSex=new ArrayList<String>();
  11. stuSex.add(name.trim());
  12. condition.put("s_sex",stuSex);
  13. }
  14. //课程
  15. if(courses!=null&&courses.length()>0){
  16. List<String> stuCourses=new ArrayList<String>();
  17. String[] courseArr=stuCourses.split(",");
  18. for(int i=0;i<courseArr.length;i++){
  19. stuCourses.add(courseArr[i]);
  20. }
  21. condition.put("s_course",stuCourses);
  22. }
mybatis:
  1. <select id="getStudentsByCondition" parameterType="java.util.Map" resultMap="BaseResultMap">
  2. select .....where
  3. <if test="condition != null">
  4. <foreach collection="condition.keys" index="index" item="item">
  5. <if test="condition[item]!=null and condition[item]!=''">
  6. <choose>
  7. <when test="item=='s_course'">
  8. and ${item} in
  9. <foreach collection="condition[item]" item="course" open="(" separator="," close=")">
  10. #{course}
  11. </foreach>
  12. </when>
  13. <otherwise>
  14. and ${item}
  15. like '%'+
  16. <foreach collection="condition[item]" item="others">#{others}</foreach>
  17. +'%'
  18. </otherwise>
  19. </choose>
  20. </if>
  21. </foreach>
  22. </if>
  23. </select>
总结:其实这种mybatis的配置看起来还是挺复杂的,具体情况还要具体分析。
上面这种写法是比较灵活的。其实像这个需求,也可以写的简单一些。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/749000
推荐阅读
相关标签
  

闽ICP备14008679号