查询专栏:select语句中不列出全部字段

文章目录

1. 第一种形式

  • 通过queryWrapper调用select方法,在select方法中添加需要查询的列
/**
* 1. 名字包含雨并且年齡小于40
* sql:name like '%雨%' and age < 40
*/
@Test
public void selectByWrapperSupper() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.like("name", "雨").lt("age", 40);
queryWrapper.select("id", "name")
.like("name", "雨")
.lt("age", 40);

List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式:SELECT id,name FROM user WHERE name LIKE ? AND age < ?
这种情况,你查询什么列,如果有值就会查询出来,没查询的列的值默认为null
*/

2. 第二种形式

  • 通过排除列操作
  • !tableFieldInfo.getColumn()
    .equals(“create_time”)
    这句话的意思是,create_time这列不查询
    /**
* 2. 名字包含雨并且年齡小于40
* sql:name like '%雨%' and age < 40
*/
@Test
public void selectByWrapperSupper2() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.like("name", "雨").lt("age", 40);
queryWrapper.like("name", "雨")
.lt("age", 40)
.select(User.class, tableFieldInfo -> !tableFieldInfo.getColumn()
.equals("create_time")
&& !tableFieldInfo.getColumn()
.equals("manager_id"));

List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式:SELECT id,name FROM user WHERE name LIKE ? AND age < ?
*/