Mybatis foreach遍历集合的key和value

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30038111/article/details/84584526

以动态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);

猜你喜欢

转载自blog.csdn.net/qq_30038111/article/details/84584526