• MybatisPlus中的各种常用查询方法


    mybtais,是一款优秀的持久层框架,而MybatisPlus则是在mybatis基础上只做增强,不做改变,简称MP,记录一下MP中常用的查询方法。

    QueryWrapper与UpdateWrapper共有方法

    方法名说明
    allEq基于map内容等于=
    eq等于=
    ne不等于<> !=
    gt大于 >
    ge大于等于 >=
    lt小于 <
    le小于等于 <=
    betweenBETWEEN 条件语句
    notBetweenNOT BETWEEN 条件语句
    like模糊查询 LIKE ‘%值%’
    notLikeNot LIKE ‘%值%’
    likeRightLIKE ‘值%’
    isNullNULL值查询
    isNotNullNOT NULL值查询
    inIN 查询
    notInNOT IN查询
    isSqlIN查询(SQL注入式)
    NotInSqlNOT IN查询(SQL注入式)
    groupBy分支 GROUP BY
    orderByAsc排序 ORDER BY ASC
    orderByDesc排序 ORDER BY DESC
    orderBy排序 ORDER BY
    havingHAVING 关键词(sql注入式)
    oror 拼接
    apply拼接自定义内容(sql注入式)
    last拼接在最后(sql注入式)
    existsEXISTS 条件语句(sql注入式)
    notExistsNOT EXISTS 条件语句(sql注入式)
    and(Function)AND (嵌套内容)
    or(Function)OR (嵌套内容)
    nested(Function)(嵌套内容)

    QueryWrapper特有方法

    方法名说明
    select指定SQL查询字段,例如:id、name、age

    UpdateWrapper特有方法

    方法名说明
    SQL SET 字段(一个字段使用一次)

    实例

    package com.xiao.permission_system;
    
    import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
    import com.mysql.cj.util.StringUtils;
    import com.xiao.permission_system.entity.UserInfo;
    import com.xiao.permission_system.mapper.UserInfoMapper;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class PermissionSystemApplicationTests {
    
        @Test
        public void contextLoads() {
        }
    
        @Autowired
        private UserInfoMapper userInfoMapper;
    
        /**
         * 普通查询
         */
        @Test
        public void selectById() {
            UserInfo userInfo = userInfoMapper.selectById(123);
            System.out.println(userInfo);
        }
    
        /**
         * 批量查询
         */
        @Test
        public void selectByIds() {
            List<Long> ids = Arrays.asList(123L,124L,125L);
            List<UserInfo> userInfo = userInfoMapper.selectBatchIds(ids);
            System.out.println(userInfo);
        }
    
        /**
         * 名字包含娟并且年龄小雨30
         */
        @Test
        public void selectByWrapper() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("username","娟").lt("age",30);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
        /**
         * 名字包含娟并且年龄大雨等于20且小于等于40并且email不为空
         */
        @Test
        public void selectByWrapper2() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("username","娟").between("age",20,30).isNotNull("email");
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 名字姓肖或者年量大雨等于20,按照年龄降序排列,年龄相同按照id生序排列
         */
        @Test
        public void selectByWrapper3() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.likeRight("username","肖")
                    .or().ge("age",20).orderByDesc("age").orderByAsc("id");
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 创建日期为2019年10月2日并且直属上级名字为王姓
         */
        @Test
        public void selectByWrapper4() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-10-07")
                    .inSql("parent_id","select id from user where username like '王%'");
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 名字为王姓并且(年龄小于40或邮箱不为空)
         */
        @Test
        public void selectByWrapper5() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            //注意:这里的or在and里面
            //参考:https://blog.csdn.net/u011229848/article/details/81902398?utm_source=blogxgwz3
            queryWrapper.likeRight("username","王")
                    .and(wq->wq.lt("age",40).or().isNotNull("email"));
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
        /**
         * 名字为王姓并且(年龄小于40并且大与20或邮箱不为空)
         */
        @Test
        public void selectByWrapper6() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.likeRight("username","王")
                    .and(wq->wq.lt("age",40).gt("age",20).or().isNotNull("email"));
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
        /**
         * 年龄23,30,40
         */
        @Test
        public void selectByWrapper8() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.in("age",Arrays.asList(20,30,40));
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
        /**
         * 只返回满足条件的第一条语句即可, 用last拼接limit部分
         */
        @Test
        public void selectByWrapper9() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.in("age",Arrays.asList(20,30,40)).last("limit 1");
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 名字中包含雨并且年龄小于40(只取id,username)
         */
        @Test
        public void selectByWrapper10() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.select("id","username").like("username","雨").lt("age",40);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 名字中包含雨并且年龄小于40(不取create_time,parent_id两个字段,即不列出全部字段)
         */
        @Test
        public void selectByWrapper11() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("username","雨").lt("age",40)
                        .select(UserInfo.class,info->!info.getColumn().equals("create_time")&&
                                !info.getColumn().equals("parent_id"));
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 名字为王姓和邮箱不为空,先判断条件是否满足
         */
        public void testCondition() {
            String username = "王";
            String email = "";
            condition(username,email);
        }
    
        private void condition(String username,String email){
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.likeRight(StringUtils.isNotBlank(username),"name",username)
                        .like(StringUtils.isNotBlank(email),"email",email);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 实体作为条件构造器方法的参数
         */
        @Test
        public void selectByWrapperEntity() {
            UserInfo whereUser = new UserInfo();
            whereUser.setUsername("xiaojuan");
            whereUser.setAge(22);
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>(whereUser);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
        /**
         * AllEq用法
         */
        @Test
        public void selectByWrapperAllEq() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("nuserame","xiaojuan");
            params.put("age",null);
            queryWrapper.allEq(params);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * AllEq用法(排除不是条件的字段)
         */
        @Test
        public void selectByWrapperAllEq2() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("nuserame","xiaojuan");
            params.put("age",null);
            queryWrapper.allEq((k,v)->!k.equals("name"),params);
            List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * selectMaps
         */
        @Test
        public void selectByWrapperMaps() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("name","肖").lt("age",40);
            List<Map<String,Object>> userInfoList = userInfoMapper.selectMaps(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 按照直属上级分组,查询每组的平均年龄,最大年龄,最小年龄。并且只取年龄总和小于500的组
         */
        @Test
        public void selectByWrapperMaps2() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.select("avg(age) avg_age","min(min) min_age","max(age) max_age")
                    .groupBy("parent_id").having("sum(age)<{0}",500);
            List<Map<String,Object>> userInfoList = userInfoMapper.selectMaps(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * selectObjs
         */
        @Test
        public void selectByWrapperObjs() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.select("id","name").like("name","肖").lt("age",40);
            List<Object> userInfoList = userInfoMapper.selectObjs(queryWrapper);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * selectCount
         */
        @Test
        public void selectByWrapperCount() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("name","肖").lt("age",40);
            Integer count = userInfoMapper.selectCount(queryWrapper);
            System.out.println(count);
        }
    
        /**
         * selectOne
         */
        @Test
        public void selectByWrapperSelectOne() {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
            queryWrapper.like("name","肖").lt("age",40);
            UserInfo user = userInfoMapper.selectOne(queryWrapper);
            System.out.println(user);
        }
    
        /**
         * 使用Lambda
         */
        @Test
        public void selectLambda() {
           // LambdaQueryWrapper<UserInfo> lambda = new QueryWrapper<UserInfo>().lambda();
            LambdaQueryWrapper<UserInfo> lambda = new LambdaQueryWrapper<UserInfo>();
            lambda.like(UserInfo::getUsername,"娟").lt(UserInfo::getAge,40);
            List<UserInfo> userInfoList = userInfoMapper.selectList(lambda);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 使用Lambda,名字为王姓且(年龄小于40或邮箱不为空)
         */
        @Test
        public void selectLambd2() {
            LambdaQueryWrapper<UserInfo> lambda = new LambdaQueryWrapper<UserInfo>();
            lambda.like(UserInfo::getUsername,"娟")
                    .and(lqw->lqw.lt(UserInfo::getAge,40).or().isNotNull(UserInfo::getEmail));
            List<UserInfo> userInfoList = userInfoMapper.selectList(lambda);
            userInfoList.forEach(System.out::println);
        }
    
        /**
         * 使用Lambda链式
         */
        @Test
        public void selectLambd3() {
            List<UserInfo> userInfoList = new LambdaQueryChainWrapper<UserInfo>(userInfoMapper)
                    .like(UserInfo::getUsername,"娟").ge(UserInfo::getAge,20).list();
            userInfoList.forEach(System.out::println);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311

    参考:https://www.cnblogs.com/steven0325/p/12463138.html

  • 相关阅读:
    什么是video codec? video codec在实际业务的应用。
    18_eslint
    80型泵支架零件制造工艺设计及夹具设计仿真
    [ vulhub漏洞复现篇 ] Thinkphp SQL注入 && 敏感信息泄露
    docker快速入门
    企业员工人事管理系统(数据库课设)
    保姆级教程:Linux (Ubuntu) 部署流光卡片开源 API
    k8s自动化运维九
    容联七陌入选沙利文2023中国AI技术变革典型企业
    ComText让机器人有了情节记忆
  • 原文地址:https://blog.csdn.net/weixin_47316183/article/details/125475060