MyBatis中如何通过resultMap返回String类型的List集合?
解决MyBatis返回String类型List的问题
不用折腾多余的POJO,有两种简单直接的实现方式:
方法一:直接指定resultType(推荐)
MyBatis支持自动将单行单列的查询结果封装成List<String>,你只需要在<select>标签里把resultType设为java.lang.String即可,完全不需要依赖resultMap。
示例代码:
<select id="getXXX" parameterType="java.util.List" resultType="java.lang.String"> SELECT target_column -- 替换成你要查询的字符串列名 FROM your_table WHERE id IN <foreach collection="list" item="itemId" open="(" separator="," close=")"> #{itemId} </foreach> </select>
对应的Mapper接口方法要写成:
List<String> getXXX(List<Integer> ids); // 参数类型与XML的parameterType对应即可
方法二:使用resultMap映射
如果一定要用resultMap,也可以定义一个针对String类型的简单映射:
<resultMap id="StringResultMap" type="java.lang.String"> <result column="target_column" /> <!-- 对应你查询的数据库字段名 --> </resultMap> <select id="getXXX" parameterType="java.util.List" resultMap="StringResultMap"> SELECT target_column FROM your_table WHERE id IN <foreach collection="list" item="itemId" open="(" separator="," close=")"> #{itemId} </foreach> </select>
关于之前POJO尝试失败的说明
大概率是两个原因:一是Mapper接口的返回类型不对——如果接口返回的是POJO类,自然拿不到List<String>;二是POJO的属性名和数据库列名不匹配导致映射失效。但其实完全没必要用POJO绕圈,上面两种方法直接就能满足需求。
内容的提问来源于stack exchange,提问作者Santhosh P
相关产品推荐
相关产品推荐

