想要用Mybatis-plus查询数据库表中的指定字段(不查询全部字段)
想要用Mybatis-plus查询数据库表中的指定字段(不查询全部字段)
·
众所周知,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

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