1. 程式人生 > >Mybatis foreach遍歷集合的key和value

Mybatis foreach遍歷集合的key和value

以動態order by為例,即通過ifforeach標籤動態拼接order by的排序欄位

Mapper.xml

<select id="dynamicOrder" resultType="com.p7.demo.model.Person">
	select * from person 
	<if test="orderBy != null">
		order by
		<!-- 
			遍歷Map,index指向map的key,item指向map的value
		 -->
		<foreach collection="orderBy.kColumnsVOrder" index="key"
			item="value" separator=",">
			<!--
				這裡要注意#和$的區別,mybatis會將#{}轉義,${}會取值的字串
				#{key} #{value} 
			-->
			${key} ${value}		
		</foreach>
	</if>
</select>

Mapper.class

public interface PersonMapper {
	List<Person> dynamicOrder(@Param("orderBy") Order order);
}

Order.class

public class Order {
	private Map<String, OrderEnum> kColumnsVOrder = new LinkedHashMap<String, OrderEnum>();
	public Map<String, OrderEnum> getkColumnsVOrder() {
		return kColumnsVOrder;
	}
}

OrderEnum.class

public enum OrderEnum {
	ASC, DESC;
}

測試

Order order = new Order();
Map<String, OrderEnum> getkColumnVOrder = order.getkColumnsVOrder();
getkColumnVOrder.put("age", OrderEnum.DESC);
List<Person> people = mapper.dynamicOrder(order);