java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis-Plus查询指定字段

Mybatis-Plus中的查询指定字段

作者:清梦压星河_Ciao

在使用Mybatis-Plus进行数据查询时,可以通过指定字段来优化查询效率,方法一和方法二分别执行不同的SQL语句,其中方法二在执行时通常会更高效,因为它可能通过减少数据处理量和优化查询结构来提升性能,比较两种方法的SQL执行情况

Mybatis-Plus查询指定字段

select word from addition;
public void test3(){
    LambdaQueryWrapper<Addition> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.select(Addition::getWord);
     //方法一:通过stream流操作
    List<String> list = additonService.list(queryWrapper).stream().map(Addition::getWord).collect(Collectors.toList());
    //方式二:listObjs
    List<Object> list1 = additionService.listObjs(queryWrapper);
}
select * from addition;
select word from addition;

Mybatis-Plus只查询部分字段的三种方法

方法1

只需要查询出name和phone两个字段:使用queryWrapper的select()方法指定要查询的字段

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);
    }

这种方法会造成除“name”之外的字段的值为null

方法2

查询出除age和address外其它所有字段的数据:同样使用queryWrapper的select()方法

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

方法3

selectMaps

public void selectMaps2(){
        QueryWrapper<User> userQueryWrapper = Wrappers.query();

        userQueryWrapper.select("avg(age) avg_age" , "min(age) min_age" , "max(age) max_age")
                        .groupBy("age")
                        .having("sum(age) < {0}" , 60);
        List<Map<String , Object>> mapList = userMapper.selectMaps(userQueryWrapper);
        mapList.forEach(System.out::println);
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文