MyBatis 返回 List mapperxml异常

博客主要围绕MyBatis中resultType展开,指出有时只需查询表中某一字段内容,强调所有结果以List形式返回,需指定返回内容具体类型。还总结了resultType的几种情况,包括基本类型、List类型、Map类型等。

有时候,我们不需要整个表的所有字段,而是只需要某一个字段的内容,比如:我希望从资产表中查出所有资产的名称,并且不存在重复。

<select id="groupNameList" resultType="java.lang.String">
SELECT `asset_name` FROM `asset` group by `asset_name`
</select>

看到代码有的小伙伴不淡定了,不是返回 List 吗?

怎么 resultType=“java.lang.String” ?

注意:所有的结果都是 List 形式返回,我们需要指定的是返回内容的具体类型。

resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等。现总结一下再解释

总结:
resultType:

1、基本类型 :resultType=基本类型

2、List类型: resultType=List中元素的类型

3、Map类型 单条记录:resultType =map

                      多条记录:resultType =Map中value的类型
<think>好的,用户现在想用MyBatis查询返回List<String>类型的数据。我之前有回答过类似的问题,但现在需要根据用户提供的引用内容来整理正确的配置方法。 首先,用户提供的引用中有几个例子。比如引用[1]提到,返回List类型时,resultType应该指定为集合中的元素类型,而不是List本身。这一点非常重要,因为如果错误地写成resultType="java.util.List",会导致MyBatis无法正确映射结果。 然后看看引用[2]中的示例。用户可能在那个例子中发现接口定义的是List<String>,但xml中的resultType错误地设置为java.util.List,这其实是错误的。正确的做法应该像引用[3]中的情况一,resultType使用java.lang.String,因为查询返回的是字符串列表,每个元素的类型是String。 所以正确的步骤应该是:在Mapper接口中定义方法返回List<String>,然后在对应的XML映射文件中,select标签的resultType属性设置为java.lang.String。这样MyBatis就会把每一行的结果转换成String,然后组装成List。 另外,用户可能混淆了不同的返回类型配置。比如返回单个MapList<Map>时,resultType都是java.util.HashMap,但返回List<String>则需要指定元素类型。需要明确区分这些情况,避免配置错误。 可能还需要提醒用户检查SQL查询是否正确,确保查询的列是单个字段,这样MyBatis才能正确映射到String类型。如果查询多个字段,可能会导致类型不匹配的错误。 总结下来,用户的配置问题可能出在resultType的设置上,正确的方法应该是将resultType设为元素类型String,而不是List类型。同时,确保接口方法和XML中的id一致,SQL返回单列数据。这样就能正确获取List<String>类型的结果了。</think>### MyBatis查询返回List<String>的配置及使用方法 #### 一、Mapper接口定义 在DAO接口中声明返回类型为`List<String>`的方法: ```java public interface YourMapper { List<String> selectStringList(); } ``` #### 二、XML映射文件配置 在对应的`*Mapper.xml`文件中,需将`resultType`设置为字符串类型`java.lang.String`,而不是集合类型: ```xml <select id="selectStringList" resultType="java.lang.String"> SELECT your_column FROM your_table </select> ``` #### 三、执行原理 1. **字段匹配**:SQL查询结果的每一行应仅包含单个字段(如`your_column`) 2. **类型映射**:MyBatis会自动将字段值转换为`String`类型 3. **集合封装**:框架自动将多个`String`对象封装到`List<String>`中[^3] #### 四、常见错误排查 1. 错误配置`resultType="java.util.List"`会导致类型转换异常 2. SQL查询包含多个字段时会抛出`TooManyResultsException` 3. 接口方法与XML映射文件中的`id`不匹配会导致方法找不到 #### 五、验证示例 ```java @Test public void testStringList() { List<String> result = yourMapper.selectStringList(); result.forEach(System.out::println); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值