鉴于我的parameterType是一个ArrayList,是否可以从该列表中获取第一个元素并在where子句中使用它?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="db">
<select id="selectFlag" resultType="java.lang.Boolean" parameterType="java.util.ArrayList">
select TOP 1 'true' from customers where id = ???
</select>
</mapper>
答案 0 :(得分:3)
如果您的查询使用一个ID,为什么要发送一个列表然后选择第一个查询?
将您的parameterType
更改为int
(或ID所具有的任何类型),不要发送列表。这是一种简单的方法,它还传达了您仅基于单个ID检索数据的信息。然后您的情况会变为:
where id = #{id}
如果您必须绝对发送ArrayList
(无论出于何种原因),那么MyBatis支持OGNL表达式,所以这样的事情应该有效:
where id = #{list[0]}
不幸的是,MyBatis在文档方面缺乏,所以只有通过查看源代码才能找到类似的东西。