今天在使用MyBatis执行sql语句时,出现如下异常:
执行的sql语句配置信息如下:
<select id="getColumnsByTableName" parameterType="String" resultType="java.util.List">
select t.column_name from user_tab_columns t where t.tableName=#{tableName,jdbcType=VARCHAR}
</select>
对应的dao接口代码为:
public List<String> getColumnsByTableName(String tableName);
应该改为:
<select id="getColumnsByTableName" parameterType="String" resultType="String">
select t.column_name from user_tab_columns t where t.tableName=#{tableName,jdbcType=VARCHAR}
</select>
原因就在于resultType代表的是List中的元素类型,而不应该是List本身,究其原因就在于被dao中的方法声明(标红出)
public List<String> getColumnsByTableName(String tableName);
给迷惑住了
切记:resultType返回的是集合中的元素类型,而不是集合本身
本文解析了在MyBatis中配置SQL语句时,对于resultType属性的常见误解。通过一个具体示例,解释了resultType实际上是指定集合中元素的数据类型,而非集合本身。纠正了在DAO接口设计时可能产生的混淆,并提供了正确的配置方式。
1174

被折叠的 条评论
为什么被折叠?



