如果select中列名是变动的怎么返回list<list<string>>
时间: 2023-09-01 12:08:43 浏览: 100
如果查询语句中的列名是变动的,可以使用 MyBatis 的 SQL 动态语句来处理。具体实现方式如下:
1. 在 Mapper 接口中定义查询方法,例如:
```java
public interface MyMapper {
List<List<String>> queryData(@Param("columnName1") String columnName1, @Param("columnName2") String columnName2);
}
```
2. 在 Mapper.xml 文件中编写 SQL 语句,使用 SQL 动态语句来选择列名,例如:
```xml
<select id="queryData" resultMap="resultMap">
SELECT
<choose>
<when test="columnName1 != null and columnName2 != null">
${columnName1}, ${columnName2}
</when>
<when test="columnName1 != null">
${columnName1}
</when>
<when test="columnName2 != null">
${columnName2}
</when>
<otherwise>
*
</otherwise>
</choose>
FROM my_table
</select>
<resultMap id="resultMap" type="java.util.List">
<result column="column1" property="list[0]"/>
<result column="column2" property="list[1]"/>
<result column="column3" property="list[2]"/>
<!-- 其他列的映射 -->
</resultMap>
```
在上面的例子中,使用了 `<choose>` 标签和 `<when>` 标签来实现动态选择列名。当传入的参数 `columnName1` 和 `columnName2` 都不为 null 时,选择这两列。当其中一个为 null 时,选择另一个。当两个都为 null 时,选择所有列。
这样就可以根据传入的列名动态地映射查询结果了。
阅读全文