Mybatis-plus的查询操作Mybatis-plus的查询操作
通过UrMapper可以看出有这么多的查询⽅法:
接下来我们分别介绍⼀下其中的每⼀种⽅法
1.lectObjects()
红茶是发酵茶吗这个⽅法传⼊的参数是Wrapper类型的,关于条件构造器(Wrapper)的介绍请看/guide/wrapper.html#alleq 当传⼊参数为null的时候,查询的就是全部的数据,返回的值类型就是Object类型的。
@Test
void contextLoads() {
//参数是⼀个wrapper,条件构造器,
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.eq("name","wp223");
List<Object> objects = urMapper.lectObjs(qw);
objects.forEach(System.out::println);
}
查询结果:
通过查询结果可以看出,只是通过主键查询出来了主键ID,返回的是⼀个Object对象
2.SelectMaps()
这些⽅法的参数传⼊的⼀般都是条件构造器,所以下⾯就不说名参数的传递了
可以看出返回的是⼀个Map类型,String作为键,Object作为值的。
@Test
void contextLoads() {
//查询全部⽤户古诗草白居易
//参数是⼀个wrapper,条件构造器,这⾥我们先⽤null
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.eq("name","wp223");
List<Map<String, Object>> maps = urMapper.lectMaps(qw);
System.out.println("输出的数据条件");
maps.forEach(System.out::println);
}
输出的结果:
可以看出结果都是数据对的形式。
3.SelectCount()
此函数查询的是返回数据的记录条数,
@Test
public void test2() {
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.eq("name","wp223");
Integer integer = urMapper.lectCount(qw);
System.out.println("输出的结果"+integer);
}
执⾏结果:相当于调⽤了Count*
消防安全绘画大全4.lectOne()
做单值查询的函数
@Test
public void test3() {
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.eq("name","wp223");
Ur ur = urMapper.lectOne(qw);
System.out.println("输出的结果"+ur.getId()+ur.getName()+ur.getAge()+ur.getEmail());
}
这⾥需要注意如果你的查询条件查出来的结果不是唯⼀的值的话会报错。意思就是说期待的值是1或者是空,这是需要控制查询条件
@Test
public void test3() {
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.eq("id","1");
Ur ur = urMapper.lectOne(qw);
System.out.println("输出的结果"+ur.getId()+ur.getName()+ur.getAge()+ur.getEmail());
天边有颗闪亮的星}
查询结果:
刘家湾赶海园5.lectList()
查询返回List集合,List中元素的类型是实体类对象类型
@Test
public void test4() {
QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
List<Ur> urs = urMapper.lectList(qw);
urs.forEach(System.out::println);
}
查询结果:可以看出影响的结果
6.lectPage(page, qw)
这⾥做了⼀个分页查询,分页查询的使⽤了⼀个简答的分页插件Page继承⾃IPage
@Test
public void test5() {
军团圣盾QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
Page<Ur> page = new Page<>(2,5);
IPage<Ur> urIPage = urMapper.lectPage(page, qw); //查询到分页记录
List<Ur> records = Records(); //直接取到分页列表的对象记录
records.forEach(System.out::println);
}
查询结果:
7.lectByMap(map)
使⽤Map来控制查询条件,
@Test
public void test6() {
HashMap<String, Object> map = new HashMap<>();
map.put("name","wp223");
List<Ur> urs = urMapper.lectByMap(map);
urs.forEach(System.out::println);
}
为什么要再出现map去做查询的,条件控制器不是更⾹吗?设计者是从什么⾓度考虑的呢?下⾯是查询结果:
8.lectById(id)
通过主键查询,
力所能及的意思@Test
public void testSelectById() {
Ur ur = urMapper.lectById(1L);
System.out.println(ur);
}
查询结果,可以看到他底层的sql
9.lectBatchIds(Arrays.asList(1, 2, 3))
这个⽤来做id的批量查询,需要注意的是参数传⼊的需要的是集合。在使⽤的时候要注意创建集合。@Test
public void testSelectBanchId() {
List<Ur> urs = urMapper.lectBatchIds(Arrays.asList(1, 2, 3));
urs.forEach(System.out::println);
}
查询结果:
10.lectMapsPage(page, qw)
这⾥做得是⼀个分页查询条件
@Test
public void tes7() {
Page page = new Page(2,5);
对联欣赏QueryWrapper<Ur> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
Page page1 = urMapper.lectMapsPage(page, qw);
}
查询结果: