查询

查询演示:

	@SpringBootTest
	@RunWith(SpringRunner.class)
	public class RetrieveTest{
	
	@Autowired
	private UserMapper userMapper;
	
	/**
	* 根据Id查询
	* /
	@Test
	public void selectById(){
		User user=userMapper.selectById(1094590409767661570L);
		System.out.println(user);
	}
	
	/**
	* 根据Id集合查询
	* /
	@Test
	public void selectIds(){
		List<Long> idsList=Arrays.asList(10945920410xxx,xxxxx,xxxxx,xxxx);//获取id集合
		List<User> userList=userMapper.selectBatchIds(idsList);
		userList.forEach(System.out::println);
	}
	
	/**
	*根据条件查询
	*/
	@Test
	public void selectByMap(){
		Map<String,Object> columnMap=new HashMap<>();
	//	columnMap.put("name","川川");	//必须与数据库中的对应,如果没有会报错
		columnMap.put("age",27);		//键是数据库中的列  where age= 27
		List<User> userList=userMapper.selectByMap(columnMap);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求: 名字中包含川并且年龄小于40
	* name like '%川%' and age<40 
	*/
	@Test
	public void selectByWrapper1(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.like("name","川").It("age",40);
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	} 
	/**
	* 条件构造器查询
	* 需求2: 名字中包含川并且年龄大于等于20且小于等于40并且email不为空
	* name like '%川%' and age between 20 and 40 and email is not null
	*/
	@Test
	public void selectByWrapper2(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求3: 名字为钱姓或者年龄大于等于20,按照年龄降序排列,年龄相同按照id升序排列;   
	* name like '钱%' or age>= 20 order by age desc,id asc
	*/
	@Test
	public void selectByWrapper3(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.likeRight("name","钱").or().ge("age",20).orderByDesc("age").orderByAsc("id");
		List<User> userList= userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求4: 创建日期为2024年5月31日并且直属上级为名字为钱姓
	* data_format(craete_time,'$Y-%m-%d')and manager_id in (select id from user where name like '钱%')
	*/
	@Test
	public void selectByWrapper4(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.apply("date_format(create_time,'%Y-%m-%d')=2024-05-31").inSql("manager_id","select id from user where name like '钱%'");
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求5: 名字为钱姓并且(年龄小于40或邮箱不为空)
	* name like '钱%' and (age<40 or email is not null)
	*/
	@Test
	public void selectByWrapper5(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.likeRight("name","钱").and(wq->wq.It("age",40).or().isNotNull("email"));
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求6: 名字为钱姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
	* name like '钱%' or (age<40 and age>20 and email is not null)
	*/
	@Test
	public void selectByWrapper5(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.likeRight("name","钱").or(wq->wq.It("age",40).gt("age",20).isNotNull("email"));
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	
	/**
	* 条件构造器查询
	* 需求7: (年龄小于40或邮箱不为空)并且名字为钱姓
	* (age<40 or email is not null) and name like '钱%'
	*/
	@Test
	public void selectByWrapper7(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.nested(wq.It("age",40).or().isNotNull("email")).likeRight("name","钱");
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求8: 年龄为30、31、34、35
	* age in (30、31、34、35)
	*/
	@Test
	public void selectByWrapper8(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.in("age",Arrays.asList(30,31,34,35));
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求9:只返回满足条件的其中一条语句即可
	* limit 1
	*/
	@Test
	public void selectByWrapper9(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.in("age",Arrays.asList(30,31,34,35)).last("limit 1");
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}
	
	/**
	* 条件构造器查询
	* 需求10: 名字中包含雨并且年龄小于40   只查询id,name两个字段
	* name like '%川%' and age<40 
	*/
	@Test
	public void selectByWrapper10(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.select("id","name").like("name","川").It("age",40);
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	} 
	
	
	/**
	* 条件构造器查询
	* 需求10: 名字中包含川并且年龄小于40   只查询部分字段使用排除法
	* select id,name,age,email from user where like '%川%' and age<40
	*/
	@Test
	public void selectByWrapper10(){
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
		queryWrapper.like("name","川").It("age",40).select(User.class,info->!info.getColumn().equals("create_time")&&!info.getColumn().equals("manager_id"));
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
		} 
	}

实体作为条件构造器构造方法的参数:

	@Test
	public void selectByWrapperEntity(){
		User whereUser=new User();
		whereUser.setName("川川");
		whereUser.setAge(32);
		QueryWrapper<User> queryWrapper=new QueryWrapper<User>(whereUser);
		queryWrapper.like("name","川").It("age",40);		//这条语句写上,会与whereUser这条同时生效;
		List<User> userList=userMapper.selectList(queryWrapper);
		userList.forEach(System.out::println);
	}

Lambda条件过滤器

	//使用Lambda来写,会编译时检查User中的字段名是否正确
	@Test
	public void selectLambda(){
		//lambda的创建方式有三种,如下所示:
		//LambdaQueryWrapper<User> lambda =new QueryWrapper<User>().lambda;
		//LambdaQueryWrapper<User> lambdaQueryWrapper=new LambdaQueryWrapper<User>();
		//第三种:
		LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User> lambdaQuery();
		lambdaQuery.like(User::getName,"川").It(User::getAge,40);
		//where name like '%川%'
		List<User> userList=userMapper.selectList(lambdaQuery);
		userList.forEach(System.out::println);
	}
基础分页
原有分页弊端:使用 PageHelper 分页,会先查询出所有数据再返回分页的数据,当数据量很大的时候,会造成查询数据很慢,对服务器性能也有一定影响;
MP分页插件实现物理分页,操作如下:
1.添加插件:
	@Configuration
	public class MyBatisPlusConfig{
		@Bean
		public PaginationInterceptor paginationInterceptor(){
			return new PaginationInterceptor();
		}
	}

执行查询操作

@Test public void selectPage(){ QueryWrapper<User> queryWrapper=new QueryWrapper<User>(); queryWrapper.ge("age",26); Page<User> page=new Page<User>(1,2); IPage<User> page= userMapper.selectPage(page,queryWrapper); System.out.println("总页数"+iPage.getPages()); System.out.println("总记录数"+iPage.getTotal()); List<User> userList=iPage.getRecords(); userList.forEach(System.out::println); }
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇