Mybatis-plus的查询操作Mybatis-plus的查询操作
通过UserMapper可以看出有这么多的查询⽅法:
接下来我们分别介绍⼀下其中的每⼀种⽅法
1.selectObjects()
这个⽅法传⼊的参数是Wrapper类型的,关于条件构造器(Wrapper)的介绍请看mp.baomidou/guide/wrapper.html#alleq 当传⼊参数为null的时候,查询的就是全部的数据,返回的值类型就是Object类型的。
@Test
void contextLoads() {
//参数是⼀个wrapper,条件构造器,
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name","wp223");
List<Object> objects = userMapper.selectObjs(qw);
objects.forEach(System.out::println);
}
查询结果:
通过查询结果可以看出,只是通过主键查询出来了主键ID,返回的是⼀个Object对象
2.SelectMaps()
这些⽅法的参数传⼊的⼀般都是条件构造器,所以下⾯就不说名参数的传递了
可以看出返回的是⼀个Map类型,String作为键,Object作为值的。
@Test
void contextLoads() {
//查询全部⽤户
//参数是⼀个wrapper,条件构造器,这⾥我们先⽤null
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name","wp223");
List<Map<String, Object>> maps = userMapper.selectMaps(qw);
System.out.println("输出的数据条件");
maps.forEach(System.out::println);
}
输出的结果:
可以看出结果都是数据对的形式。
3.SelectCount()
此函数查询的是返回数据的记录条数,
@Test
public void test2() {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name","wp223");
Integer integer = userMapper.selectCount(qw);
System.out.println("输出的结果"+integer);
}
执⾏结果:相当于调⽤了Count*
4.selectOne()
做单值查询的函数
@Test
public void test3() {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name","wp223");
User user = userMapper.selectOne(qw);
System.out.println("输出的结果"+Id()+Name()+Age()+Email());
}
这⾥需要注意如果你的查询条件查出来的结果不是唯⼀的值的话会报错。意思就是说期待的值是1或者是空,这是需要控制查询条件
@Test
public void test3() {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id","1");
User user = userMapper.selectOne(qw);
System.out.println("输出的结果"+Id()+Name()+Age()+Email());
}
查询结果:
5.selectList()
查询返回List集合,List中元素的类型是实体类对象类型
@Test
public void test4() {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::println);
}
查询结果:可以看出影响的结果
6.selectPage(page, qw)
这⾥做了⼀个分页查询,分页查询的使⽤了⼀个简答的分页插件Page继承⾃IPage
@Test
public void test5() {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
Page<User> page = new Page<>(2,5);
IPage<User> userIPage = userMapper.selectPage(page, qw); //查询到分页记录
List<User> records = Records();  //直接取到分页列表的对象记录
records.forEach(System.out::println);
}
查询结果:
7.selectByMap(map)
使⽤Map来控制查询条件,
@Test
public void test6() {
HashMap<String, Object> map = new HashMap<>();
map.put("name","wp223");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
分页查询插件}
为什么要再出现map去做查询的,条件控制器不是更⾹吗?设计者是从什么⾓度考虑的呢?下⾯是查询结果:
8.selectById(id)
通过主键查询,
@Test
public void testSelectById() {
User user = userMapper.selectById(1L);
System.out.println(user);
}
查询结果,可以看到他底层的sql
9.selectBatchIds(Arrays.asList(1, 2, 3))
这个⽤来做id的批量查询,需要注意的是参数传⼊的需要的是集合。在使⽤的时候要注意创建集合。@Test
public void testSelectBanchId() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
}
查询结果:
10.selectMapsPage(page, qw)
这⾥做得是⼀个分页查询条件
@Test
public void tes7() {
Page page = new Page(2,5);
QueryWrapper<User> qw = new QueryWrapper<>();
qw.isNotNull("name")
.gt("age",18);
Page page1 = userMapper.selectMapsPage(page, qw);
}
查询结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。