鉴于我的 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>
Run Code Online (Sandbox Code Playgroud)
如果您的查询使用一个 id,为什么要发送一个列表,然后为查询选择第一个?
将您的更改parameterType为 an int(或该 ID 的任何类型),不要发送列表。这是一种简单的方法,它也传达了您仅基于单个 ID 检索数据的信息。然后您的情况变为:
where id = #{id}
Run Code Online (Sandbox Code Playgroud)
如果您必须绝对发送ArrayList(无论出于何种原因),那么 MyBatis 支持 OGNL 表达式,因此应该可以使用以下内容:
where id = #{list[0]}
Run Code Online (Sandbox Code Playgroud)
不幸的是,MyBatis 缺乏文档方面的内容,因此您只能通过查看源代码来了解此类内容。