Mybatis foreach遍歷集合的key和value
阿新 • • 發佈:2019-01-02
以動態order by
為例,即通過if
和foreach
標籤動態拼接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);