Mybatis:我如何从传递的参数中获取第一个元素?

时间:2014-10-13 14:24:48

标签: sql mybatis

鉴于我的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>

1 个答案:

答案 0 :(得分:3)

如果您的查询使用一个ID,为什么要发送一个列表然后选择第一个查询?

将您的parameterType更改为int(或ID所具有的任何类型),不要发送列表。这是一种简单的方法,它还传达了您仅基于单个ID检索数据的信息。然后您的情况会变为:

where id = #{id}

如果您必须绝对发送ArrayList(无论出于何种原因),那么MyBatis支持OGNL表达式,所以这样的事情应该有效:

where id = #{list[0]}

不幸的是,MyBatis在文档方面缺乏,所以只有通过查看源代码才能找到类似的东西。