前言
在上篇文章中,我们已经简单的介绍了SpringBoot
如何集成MyBatis-plus
,大家感兴趣的话,可参考文章
SpringBoot(40) — SpringBoot整合MyBatis-plus
那么今天让我们来学习下MyBatis-plus
查询方面的知识。
今天涉及到的知识点有:
- 准备工作
- 基本查询
- 条件构造器(Wrapper)的查询
一. 准备工作
MyBatis-plus
在SpringBoot
中的集成之前已经讲过了,大家如果有需要了解的,可参看本文前言
中该文链接,这里不再赘述。本文讲述的MyBatis-plus
查询乡相关知识主要涉及到数据表映射实体类Student
,然后是继承BaseMapper
实现的数据表操作类StudentMapper
。
先给出数据库test_pro
中demo
表的数据:
我是用
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
为我们创建的要查询的条件。其中map
的key
为数据表中的列名称,而不是数据实体的属性名,然后map
的value
即为你要设置的数据表中该列的比较值。如上面map
设置了两个值,表示要查询表中name=小华 且 age=20
的数据。
三. 条件构造器(Wrapper)的查询
主要基于AbstractWrapper
的子类QueryWrapper
建立各种条件所进行的查询。提供的条件
方法主要集中在AbstractWrapper
类中。查询AbstractWrapper
源码可发现有很多eq
,ne
,gt
,ge
等条件方法。从MyBatis-plus
官网我们也可以看到有很多条件关键字,部分截图如下:
下面以几个简单的场景来介绍条件构造器(Wrapper)的使用。
网友评论