0
点赞
收藏
分享

微信扫一扫

MYBATIS-PLUS实现只查询指定列数据以及如何联表查询

 一、MYBATIS-PLUS大多都是针对列全部查询,但是如果我们只需要几个字段怎么办呢?
解决方案:
 1:在QUERYWRAPPER中过滤字段(个人认为这种适合处理简单的操作)
 2:中规中矩的使用MAPPER.XML来处理,这么做还可以解决MP不能联表查询的问题
 3:不太建议的解决方案     太繁琐,要分类建实体     一个字   麻烦 (以下这3点)
1、声明该字段是 transient 的
2、声明该字段是 static 的
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

举报

相关推荐

0 条评论