mybatis 查出来的字段是动态的,java 如何接收mybatis动态查出来的字段和字段对应的数据呢
时间: 2023-11-27 17:49:11 浏览: 27
Mybatis 可以使用 Map 类型来接收动态查询的字段和对应的数据。在查询语句中,使用 resultMap 标签来指定查询结果的映射方式,可以将查询结果映射为一个 Map 对象。具体做法如下:
1. 定义 resultMap
```xml
<resultMap id="resultMap" type="java.util.Map">
<result column="column1" property="value1"/>
<result column="column2" property="value2"/>
...
</resultMap>
```
其中,column 属性指定数据库中的列名,property 属性指定 Map 对象中的键名。
2. 执行动态查询
```java
SqlSession sqlSession = MybatisUtil.getSqlSession();
try {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", 1);
List<Map<String, Object>> resultList = sqlSession.selectList("com.example.mapper.UserMapper.selectUser", paramMap);
for (Map<String, Object> map : resultList) {
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
}
} finally {
sqlSession.close();
}
```
其中,selectList 方法的第一个参数是 Mapper 文件中配置的 SQL 语句的 ID,第二个参数是动态查询所需要的参数。查询结果会被封装为一个 List<Map<String, Object>> 类型的对象,每个 Map 对象表示一条记录,其中键名为 resultMap 中配置的 property 属性值,键值为查询结果的对应列的值。
通过遍历 List<Map<String, Object>> 对象,可以获取到每条记录的所有字段和对应的值。