一、Mybatis-Plus大多都是针对列全部查询,但是如果我们只需要几个字段怎么办呢?
解决方案:
1:在QueryWrapper中过滤字段(个人认为这种适合处理简单的操作)
2:中规中矩的使用Mapper.xml来处理,这么做还可以解决MP不能联表查询的问题
3:不太建议的解决方案 太繁琐,要分类建实体 一个字 麻烦 (以下这3点)
1、以下是第一种解决方案
/**
* 名字包含雨并且年龄小于40
* <p>
* 只显示id、name 两列
*/
@Test
public void selectByWrapper1() {
QueryWrapper<User> wrapper = new QueryWrapper();
wrapper.like("name", "雨").lt("age", 40)
.select("id","name");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 名字包含雨并且年龄小于40
* <p>
* 除了create_time、manager_id 其他列都显示
*/
@Test
public void selectByWrapper2() {
QueryWrapper<User> wrapper = new QueryWrapper();
wrapper.like("name", "雨").lt("age", 40)
.select(User.class,i -> !i.getColumn().equals("create_time")
&& !i.getColumn().equals("manager_id"));
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
解决方案二、 通过xml配置,也就是相当于用mybatis
MybatiPlus文档
官方文档里面也做介绍,版本需要大于3.0.7
官方链接:使用 Wrapper 自定义SQL