众所周知,Mybatis-plus是Mybatis的增强版,官方的解释是 “ 只做增强,不做修改 ”。将一些简单的sql语句进行了封装和自动生成,提高了效率,但是降低了性能。

使用Mybatis-plus中BaseMapper提供的方法默认查询的是数据库中表的所有字段,但是有时候,我们仅仅需要查询的是表的某个字段或者一些字段,查询全部的话数据量大时会出现效率问题。
对此,我们可以使用Mybatis-plus中构建QueryWrapper来设置select方法指定需要查询的字段。
做法一:

@Test
public void selectByWrapper1(){
	QueryWrapper<User> queryWrapper =new QueryWrapper<>();
	queryWrapper.select("name","phone").eq("age",25);
	List<User> users =userMapper.selectList(queryWrapper);
	users.forEach(System.out::println);
	}

做法二:

public void selectByWrapper1(){
	LambdaQueryWrapper<User> queryWrapper =new LambdaQueryWrapper<>();
	queryWrapper.select(User::getName,User::getPhone).eq(User::getAge,25);
	List<User> users =userService.list(queryWrapper);
	users.forEach(System.out::println);
	}

这种做法查询的结果为除“name”,“phone”外的字段,全为null,条件是age=25
做法一:

@Test
public void selectByWrapper2(){
QueryWrapper<User>queryWrapper =new QueryWrapper<>();
queryWrapper.select(User.class,
	 info ->!info.getColumn().equals("age") &&
	 !info.getColumn().equals("address"))
	 .eq("name","jack");
 List<User> users =userMapper.selectList(queryWrapper);
 users.forEach(System.out::println);
 }

这种做法查询的结果为“age”,“address”的字段值为null,其余字段正常显示,条件是name=jack

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐