1. 程式人生 > 其它 >MyBatis傳入引數為list、陣列、map寫法

MyBatis傳入引數為list、陣列、map寫法

1.foreach簡單介紹:

foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。

foreach元素的屬性主要有item,index,collection,open,separator,close。

item表示集合中每一個元素進行迭代時的別名,

index指定一個名字,用於表示在迭代過程中,每次迭代到的位置,

open表示該語句以什麼開始,

separator表示在每次進行迭代之間以什麼符號作為分隔符,

close表示以什麼結束,

collection屬性是在使用foreach的時候最關鍵的也是最容易出錯的,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:

(1)如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list .

(2)如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array .

(3)如果傳入的引數是多個的時候,我們就需要把它們封裝成一個Map了,當然單引數也可以封裝成map,實際上如果你在傳入引數的時候,在MyBatis裡面也是會把它封裝成一個Map的,map的key就是引數名,所以這個時候collection屬性值就是傳入的List或array物件在自己封裝的map裡面的key.

2.實踐-實體類

  1. public class Employees {
  2. private Integer employeeId;
  3. private String firstName;
  4. private String lastName;
  5. private String email;
  6. private String phoneNumber;
  7. private Date hireDate;
  8. private String jobId;
  9. private BigDecimal salary;
  10. private BigDecimal commissionPct;
  11. private Integer managerId;
  12. private Short departmentId;
  13. }

3.實踐-XML

  1. <!--List:forech中的collection屬性型別是List,collection的值必須是:list,item的值可以隨意,Dao介面中引數名字隨意 -->
  2. <select id="getEmployeesListParams" resultType="Employees">
  3. select *
  4. from EMPLOYEES e
  5. where e.EMPLOYEE_ID in
  6. <foreach collection="list" item="employeeId" index="index"
  7. open="(" close=")" separator=",">
  8. #{employeeId}
  9. </foreach>
  10. </select>
  11. <!--Array:forech中的collection屬性型別是array,collection的值必須是:list,item的值可以隨意,Dao介面中引數名字隨意 -->
  12. <select id="getEmployeesArrayParams" resultType="Employees">
  13. select *
  14. from EMPLOYEES e
  15. where e.EMPLOYEE_ID in
  16. <foreach collection="array" item="employeeId" index="index"
  17. open="(" close=")" separator=",">
  18. #{employeeId}
  19. </foreach>
  20. </select>
  21. <!--Map:不單單forech中的collection屬性是map.key,其它所有屬性都是map.key,比如下面的departmentId -->
  22. <select id="getEmployeesMapParams" resultType="Employees">
  23. select *
  24. from EMPLOYEES e
  25. <where>
  26. <if test="departmentId!=null and departmentId!=''">
  27. e.DEPARTMENT_ID=#{departmentId}
  28. </if>
  29. <if test="employeeIdsArray!=null and employeeIdsArray.length!=0">
  30. AND e.EMPLOYEE_ID in
  31. <foreach collection="employeeIdsArray" item="employeeId"
  32. index="index" open="(" close=")" separator=",">
  33. #{employeeId}
  34. </foreach>
  35. </if>
  36. </where>
  37. </select>

4.實踐-Mapper

  1. public interface EmployeesMapper {
  2. List<Employees> getEmployeesListParams(List<String> employeeIds);
  3. List<Employees> getEmployeesArrayParams(String[] employeeIds);
  4. List<Employees> getEmployeesMapParams(Map<String,Object> params);
  5. }

    Mybaits 遍歷Map【註解使用】

    1、遍歷map

      

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 packagecom.isuzu.vehicle.onroad.dal.mapper; importcom.baomidou.mybatisplus.core.mapper.BaseMapper; importcom.isuzu.vehicle.onroad.dal.entity.VehicleOnroad; importcom.isuzu.vehicle.onroad.service.vo.VehicleOnroadVo; importcom.ne.ice.boot.common.entity.Page; importorg.apache.ibatis.annotations.Param; importorg.apache.ibatis.annotations.Result; importorg.apache.ibatis.annotations.Results; importorg.apache.ibatis.annotations.Select; importorg.apache.ibatis.type.JdbcType; importjava.util.Date; importjava.util.List; importjava.util.Map; /** * @author Yungui.Zheng */ publicinterfaceVehicleOnroadMapperextendsBaseMapper<VehicleOnroad> { /** * 分頁查詢 * @param page 分頁物件 * @param conditionMap 條件map * @param order 排序 * @return 分頁list */ @Select("<script>" +" select " +" * " +" FROM " +" tm_vehicle_onroad " +" <where> " +" <foreach collection=\"cond.keys\" item=\"wkey\" >" +" <choose> "+ " <when test=\"wkey =='vin'\"> "+//關鍵詞 " and vin like concat('%',#{cond[${wkey}]},'%') "+ " </when> "+ " <when test=\"wkey =='vinList'\"> "+//使用者vinList " and vin in (\n"+ " <foreach collection=\"cond[wkey]\" item=\"item\" index=\"index\" separator=\",\">\n"+ " #{item}\n"+ " </foreach>) "+ " </when> "+ " <when test=\"wkey =='from'\"> "+//開始時間 " and create_time >=#{cond[${wkey}]} "+ " </when> "+ " <when test=\"wkey =='to'\"> "+//結束時間 " and create_time <=#{cond[${wkey}]} "+ " </when> "+ " <otherwise> "+ " <if test=\"cond[wkey]!= null\">and ${wkey}= #{cond[${wkey}]}</if> "+ " </otherwise> "+ " </choose>"+ "</foreach> "+ " </where> " +" <if test=\"order!= null\"> ${order}</if> " +"</script>") List<VehicleOnroad> selectPageByMap(Page<VehicleOnroad> page,@Param("cond") Map<String, Object> conditionMap,@Param("order") String order) ; }