List<Map<String, Object>> userList = userMapper.selectMaps(new QueryWrapper<User>().select("id", "name"));select传表字段名还是entity字段名
时间: 2024-03-20 19:39:38 浏览: 17
在使用 MyBatis-Plus 进行查询时,`select` 方法传入的是表字段名而非实体类字段名。
这是因为 MyBatis-Plus 底层是通过解析实体类上的 `@TableField` 注解来获取实体类字段与表字段之间的映射关系,从而构建 SQL 语句。因此,使用表字段名可以确保查询条件和返回结果都与数据库中的表结构保持一致。
如果使用实体类字段名,在实体类属性与表字段不一致的情况下,可能会出现查询条件不生效或返回结果不符合预期的情况。
所以,建议在使用 `select` 方法时,传入表字段名,如下所示:
```java
List<Map<String, Object>> userList = userMapper.selectMaps(new QueryWrapper<User>().select("id", "name"));
```
相关问题
mybatis返回map<string,<map<string,object>>>
根据引用\[2\]中的信息,mybatis可以通过查询返回Map<String, Object>来实现返回Map<String, Map<String, Object>>的功能。具体的实现方式如下:
在Dao接口文件中,定义一个返回类型为Map<String, Map<String, Object>>的方法,如下所示:
```java
Map<String, Map<String, Object>> selectAll();
```
在mapper.xml文件中,使用resultMap来映射查询结果,并将查询结果封装为Map<String, Map<String, Object>>,如下所示:
```xml
<resultMap id="NestedResultMap" type="java.util.HashMap">
<id column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="user_code" jdbcType="INTEGER" property="userCode" />
<result column="user_name" jdbcType="VARCHAR" property="userName" />
<result column="user_gender" jdbcType="INTEGER" property="userGender" />
<result column="mobile_phone" jdbcType="VARCHAR" property="mobilePhone" />
<result column="birthday" jdbcType="DATE" property="birthday" />
</resultMap>
<select id="selectAll" resultMap="NestedResultMap">
select * from t_user_info
</select>
```
这样,当调用selectAll方法时,mybatis会执行相应的SQL语句,并将查询结果封装为Map<String, Map<String, Object>>返回给调用方。每个外层Map的key为用户ID,对应的value为一个内层Map,内层Map的key为字段名,value为字段值。
#### 引用[.reference_title]
- *1* *3* [mybatis 查询返回Map<String,Object> 类型](https://blog.csdn.net/yin767833376/article/details/123738647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v12^insert_chatgpt"}} ] [.reference_item]
- *2* [mybatis 查询返回List<String>、Map<String,Object>、List<Map<String,Object>>](https://blog.csdn.net/li1325169021/article/details/114003291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v12^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
修改代码中的错误package com.zxq; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zxq.domain.User; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.HashMap; import java.util.List; import java.util.Map; @SpringBootTest class SpringbootMybatisplusZbApplicationTests { @Test void contextLoads() { } public void selectByName(){ Map<String,Object> columnMap=new HashMap<>(); columnMap.put("name","admin"); List<User> list=userMapper.selectByMap(columnMap) } @Test public void selectByProperty(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); // queryWrapper.like("name","a"); queryWrapper.select("name","sex");//投影查询 List<User> list=uerMapper.selectList(queryWrapper); System.out.println(list); } }
在代码中,缺少了一个分号,导致出现了语法错误。在selectByName()方法中,将最后一行代码中的分号添加上即可,修改后的代码如下:
```
package com.zxq;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zxq.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest
class SpringbootMybatisplusZbApplicationTests {
@Test
void contextLoads() {
}
public void selectByName(){
Map<String,Object> columnMap=new HashMap<>();
columnMap.put("name","admin");
List<User> list=userMapper.selectByMap(columnMap);
}
@Test
public void selectByProperty(){
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
// queryWrapper.like("name","a");
queryWrapper.select("name","sex");//投影查询
List<User> list=userMapper.selectList(queryWrapper);
System.out.println(list);
}
}
```