SpringBoot(41) — MyBatis-plus常用查询

前言

在上篇文章中,我们已经简单的介绍了SpringBoot如何集成MyBatis-plus,大家感兴趣的话,可参考文章
SpringBoot(40) — SpringBoot整合MyBatis-plus
那么今天让我们来学习下MyBatis-plus查询方面的知识。
今天涉及到的知识点有:

  1. 准备工作
  2. 基本查询
  3. 条件构造器(Wrapper)的查询

一. 准备工作

MyBatis-plusSpringBoot中的集成之前已经讲过了,大家如果有需要了解的,可参看本文前言中该文链接,这里不再赘述。本文讲述的MyBatis-plus查询乡相关知识主要涉及到数据表映射实体类Student,然后是继承BaseMapper实现的数据表操作类StudentMapper
先给出数据库test_prodemo表的数据:

image.png

我是用mysql数据库测试的,所以还要开启mysql数据库服务。
接着给出Student类代码:

/**
 * Title:
 * description:
 * autor:pei
 * created on 2019/9/3
 */
@Data
@Component("Student")
@TableName(value = "demo")
public class Student {

    //主键自增
    @TableId(value = "id",type = IdType.AUTO)
    private int id;

    @TableField(value = "name") //表属性
    private String name;

    @TableField(value = "age") //表属性
    private int age;

}

最后给出数据表操作类StudentMapper代码:

/**
 * Title:
 * description:
 * autor:pei
 * created on 2019/9/3
 */
@Repository
public interface StudentMapper extends BaseMapper<Student> {

}

这样,查询前的准备工作就做好了。

二. 基本查询

MyBatis-plus框架中的BaseMapper本身便已经封装了一些基本的查询方法,所以当StudentMapper继承BaseMapper后,就自动具备了这些基本的查询方法。下面就来看看有哪些吧。

2.1 根据id查询单条数据

查询代码如下:

        //根据id查询单条数据
        Student student=mStudentMapper.selectById(2);
        LogUtil.println("====根据id查单条数据==="+student.toString());

测试结果如下:

====根据id查单条数据===Student(id=2, name=小明, age=18)
2.2 根据id集合批量查询数据
        //根据id集合批量查询数据
        List<Integer>list=new ArrayList<>();
        list.add(3);
        list.add(4);
        list.add(9);
        List<Student>students=mStudentMapper.selectBatchIds(list);
        for(Student s:students){
            LogUtil.println("============="+s.toString());
        }

测试结果如下:

=============Student(id=3, name=小华, age=20)
=============Student(id=4, name=小黑, age=15)
=============Student(id=9, name=小黑仔, age=16)
2.3 根据表字段值查数据
        //根据表字段值查数据
        Map<String,Object> map=new HashMap<>();
        //map中的key为数据表中列名,而非实体的属性名
        map.put("name","小华");
        map.put("age","20");
        //查询表中 name=小华 且 age=20 的数据
        List<Student>mapStudents=mStudentMapper.selectByMap(map);
        for(Student mapSt:mapStudents){
            LogUtil.println("============="+mapSt.toString());
        }

这里需要注意的是,map为我们创建的要查询的条件。其中mapkey为数据表中的列名称,而不是数据实体的属性名,然后mapvalue即为你要设置的数据表中该列的比较值。如上面map设置了两个值,表示要查询表中name=小华 且 age=20的数据。

三. 条件构造器(Wrapper)的查询

主要基于AbstractWrapper的子类QueryWrapper建立各种条件所进行的查询。提供的条件方法主要集中在AbstractWrapper类中。查询AbstractWrapper源码可发现有很多eq,ne,gt,ge等条件方法。从MyBatis-plus官网我们也可以看到有很多条件关键字,部分截图如下:

image.png

下面以几个简单的场景来介绍条件构造器(Wrapper)的使用。

还有 54% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥3.00 继续阅读

推荐阅读更多精彩内容

友情链接更多精彩内容