mybatisplus or查询_MybatisPlus的各种查询方式
今天來看一看MybatisPLUS的各種查看方式
基本查詢
/** * id=? */ @Test void selectById() { User user = mapper.selectById(1087982257332887553L); System.out.println(user); } /** * id IN ( ? , ? , ? ) */ @Test void retrieveByIds() { List users = mapper.selectBatchIds(Arrays.asList(8, 9, 10)); users.forEach(System.out::println); } /** * 根據map查詢,key為column,value為具體的值 * name = ? AND age = ? */ @Test void retrieveByMap() { Map map = new HashMap<>(); map.put("name", "大boss"); map.put("age", "40"); List users = mapper.selectByMap(map); users.forEach(System.out::println); }條件構造器查詢
地址: 條件構造器
/** * 名字中包含雨并且年齡小于40 * name like '%雨%' and age<40 */ @Test void selectByWrapper1() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like("name", "雨") .lt("age", 40); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 名字中包含雨年并且齡大于等于20且小于等于40并且email不為空 * name like '%雨%' and age between 20 and 40 and email is not null */ @Test void selectByWrapper2() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like("name", "雨") .between("age", 20, 40) .isNotNull("email"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 名字為王姓或者年齡大于等于25,按照年齡降序排列,年齡相同按照id升序排列 * name like '王%' or age>=25 order by age desc,id asc */ @Test void selectByWrapper3() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.likeRight("name", "王") .or().ge("age", 25) .orderByDesc("age") .orderByAsc("id"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 創建日期為2019年2月14日并且直屬上級為名字為王姓 * date_format(create_time,'%Y-%m-%d')='2019-02-14' and * manager_id in (select id from user where name like '王%') */ @Test void selectByWrapper4() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.apply("date_format(create_time,'%Y-%m-%d')={0}", "2019-02-14") .inSql("manager_id", "select id from user where name like '王%'"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * and中傳入lambda ** 名字為王姓并且(年齡小于40或郵箱不為空) * name like '王%' and (age<40 or email is not null) */ @Test void selectByWrapper5() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.likeRight("name", "王"). and(wq -> wq.lt("age", 40) .or().isNotNull("email")); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 名字為王姓或者(年齡小于40并且年齡大于20并且郵箱不為空) * name like '王%' or (age<40 and age>20 and email is not null) */ @Test void selectByWrapper6() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.likeRight("name", "王"). or(wq -> wq.lt("age", 40) .gt("age", 20) .isNotNull("email")); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * ( 年齡小于40或郵箱不為空)并且名字為王姓 * (age<40 or email is not null) and name like '王%' */ @Test void selectByWrapper7() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.nested(wq -> wq.lt("age", 40) .or().isNotNull("email")) .likeRight("name", "王"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 年齡為30、31、34、35 */ @Test void selectByWrapper8() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.in("age", Arrays.asList(30, 31, 34, 35)); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 只返回滿足條件的其中一條語句即可 limit 1 */ @Test void selectByWrapper9() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.in("age", Arrays.asList(30, 31, 34, 35)).last("limit 1"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); }
指定列與排除列
/** * 查詢指定列 * SELECT id,name FROM user WHERE (name LIKE ?) */ @Test void selectPart1() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("id", "name").like("name", "雨"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } /** * 排除指定列 * SELECT id,name,age,manager_id FROM user WHERE (name LIKE ?) */ @Test void selectPart2() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(User.class, info -> !info.getColumn().equals("create_time") && !info.getColumn().equals("email") ).like("name", "雨"); List users = mapper.selectList(wrapper); users.forEach(System.out::println); }Condition處理參數
@Test void testCondition(){ String name = "王"; String email = ""; //withOutCondition(name,email); withCondition(name,email); } private void withOutCondition(String name,String email){ QueryWrapper wrapper = new QueryWrapper<>(); if(StringUtils.isNotBlank(name)){ wrapper.like("name",name); } if(StringUtils.isNotBlank(email)){ wrapper.like("email",email); } List users = mapper.selectList(wrapper); users.forEach(System.out::println); } private void withCondition(String name,String email){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like(StringUtils.isNotBlank(name),"name",name) .like(StringUtils.isNotBlank(email),"email",email); List users = mapper.selectList(wrapper); users.forEach(System.out::println); }以實體作為參數
/** * WHERE name=? AND age=? * 以實體為參數 和普通設置參數 互不干擾, 都會存在, 使用時需慎重 * 以實體為參數,默認是等值的,需要使用@TableField注解,并注明sqlCondition */ @Test void selectByWrapperEntity(){ User user = new User(); user.setName("天喬巴夏"); user.setAge(20); QueryWrapper wrapper = new QueryWrapper<>(user); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } @TableField(value = "name",condition = SqlCondition.LIKE) //指定字段名 private String name;AllEq的使用
@Test void selectByWrapperAllEq(){ QueryWrapper wrapper = new QueryWrapper<>(); Map params = new HashMap<>(); params.put("name","天喬巴夏"); params.put("age",null); // age is null , 可以通過 下面這句設置 false wrapper.allEq(params,false); List users = mapper.selectList(wrapper); users.forEach(System.out::println); } @Test void selectByWrapperAllEq2() { QueryWrapper wrapper = new QueryWrapper<>(); Map params = new HashMap<>(); params.put("name", "天喬巴夏"); params.put("age", null); // age is null , 可以通過 下面這句設置 false wrapper.allEq((k, v) -> !k.equals("name"), params, false); List users = mapper.selectList(wrapper); users.forEach(System.out::println); }自定義查詢
注解形式
public interface UserMapper extends BaseMapper { @Select("select * from user ${ew.customSqlSegment}") List selectAll(@Param(Constants.WRAPPER)Wrapper wrapper);} /** * 測試自定義方法 注解 */ @Test void selectByCustomAnno(){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("name","天喬巴夏"); List users = mapper.selectAll(wrapper); users.forEach(System.out::println); }xml形式
public interface UserMapper extends BaseMapper { List selectAll2(@Param(Constants.WRAPPER)Wrapper wrapper);}<?xml version="1.0" encoding="UTF-8"?> select * from user ${ew.customSqlSegment}其他的查詢
/** * 優雅返回指定字段的結果 */ @Test void selectByWrapperMaps1() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like("name", "雨") .lt("age", 40) .select("id","name"); List> mapList = mapper.selectMaps(wrapper); mapList.forEach(System.out::println); } /** * 按照直屬上級分組,查詢每組的平均年齡、最大年齡、最小年齡。 * 并且只取年齡總和小于500的組。 * * select avg(age) avg_age,min(age) min_age,max(age) max_age * from user * group by manager_id * having sum(age) <500 */ @Test void selectByWrapperMaps2() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("avg(age) avg_age","min(age) min_age","max(age) max_age") .groupBy("manager_id").having("sum(age)> mapList = mapper.selectMaps(wrapper); mapList.forEach(System.out::println); } /** * 只返回一列 */ @Test void selectByWrapperObjs() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("avg(age) avg_age","min(age) min_age","max(age) max_age") .groupBy("manager_id").having("sum(age) objects = mapper.selectObjs(wrapper); objects.forEach(System.out::println); } /** * 查個數 */ @Test void selectCount() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like("name","雨"); Integer cnt = mapper.selectCount(wrapper); System.out.println(cnt); } /** * 查一個實體 */ @Test void selectOne(){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("name","天喬巴夏"); User user = mapper.selectOne(wrapper);原文鏈接:https://www.cnblogs.com/summerday152/p/13869233.html
如果覺得本文對你有幫助,可以轉發關注支持一下
總結
以上是生活随笔為你收集整理的mybatisplus or查询_MybatisPlus的各种查询方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv4 c++ 提取图片中的白色
- 下一篇: 浮点数例外 (核心已转储)_15000