Wrapper

在MyBatis-Plus中,对于单表的查询我们基本上不用写sql语句的,那么对于一些带有条件判断的sql语句怎么办呢,官方提供了一个很强的东西——Wrapper条件构造器。

环境搭建

虽然上一篇文章已经搭建过环境了吧,但是我不太喜欢放链接跳来跳去的,再搭建一次吧。

首先创建一张数据库表

DROP TABLE IF EXISTS user;CREATE TABLE user
(id BIGINT(20) NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
);

对应的数据如下

DELETE FROM user;INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

创建SpringBoot项目

创建一个普通的SpringBoot项目,然后引入依赖,既然要跟数据库打交道,connector肯定不能少

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version>
</dependency>

另外要使用mybatis-plus,当然也要引入该starter

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>
</dependency>

为了方便起见,这里引入Lombok

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

好了,依赖引入完毕,下面进行简单配置

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_plus?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: root

配置也写好了,那么可以开始用了,在操作之前需要先创建一个实体类。

@Data
public class User {private Long id;private String name;private Integer age;private String email;
}

实体类写好之后,编写一个mapper接口,只需继承BaseMapper,基本的单表查询都给你封装好了,真是太贴心了。

@Repository
@Mapper
public interface UserMapper extends BaseMapper<User> {}

开启日志

可以看到在官网中,有很多的条件构造器,这里演示几个比较常用的,其实本质还是sql语句,为了方便大家可以看到效果,这里开启日志功能。

只需在配置文件中加上这句话即可

# 配置日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Wrapper测试

Wrapper是一个接口,官方提供了很多的实现类,我们通过其实现类去构造wrapper对象即可。

查询name不为空,且年龄大于等于20的用户

void wrapperTest1() {QueryWrapper<User> wrapper = new QueryWrapper<>();// 构建一个查询的wrapperwrapper.isNotNull("name")// 设置查询条件,name字段不为空.ge("age", 20);// 年龄大于等于20userMapper.selectList(wrapper);
}


可以清楚的看到,这里生成的sql语句。

查询名字等于Jack的

void wrapperTest2() {QueryWrapper<User> wrapper = new QueryWrapper<>();// 构建一个查询的wrapperwrapper.eq("name", "Jack");// 设置name为Jack的条件userMapper.selectOne(wrapper);// 这里我们知道只有一个,所以直接用selectOne
}


范围查询

void wrapperTest3() {QueryWrapper<User> wrapper = new QueryWrapper<>();// 构建一个查询的wrapperwrapper.between("age",20, 30);// 设置范围userMapper.selectCount(wrapper);// 查询在该范围的数量
}


模糊查询

void wrapperTest4() {QueryWrapper<User> wrapper = new QueryWrapper<>();// 构建一个查询的wrapperwrapper.notLike("name", "e")// 查询name中不含有e的.likeRight("email", "t");// 查询email中右模糊t->t%userMapper.selectList(wrapper);
}


降序排序

void wrapperTest5() {QueryWrapper<User> wrapper = new QueryWrapper<>();// 构建一个查询的wrapperwrapper.orderByDesc("id");// 降序排序userMapper.selectList(wrapper);
}


感兴趣的剩下的自己可以测一下,今天的分享就到这里了,我们下期再见。

微信搜一搜【贺贺学编程】关注这个不一样的程序员,关注后回复【面试】获取海量面试题。

MyBatis-Plus条件查询——Wrapper相关推荐

  1. MyBatis框架学习笔记04:利用MyBatis实现条件查询

    文章目录 一.查询需求 二.打开MyBatisDemo项目 三.对学生表实现条件查询 (一)创建学生映射器配置文件 (二)在MyBatis配置文件里注册学生映射器配置文件 (三)创建学生映射器接口 ( ...

  2. SSM整合 mybatis多条件查询与分页

    多条件查询与分页: 通过页面的houseName.floorage获取值传到前端视图(HouseSearchVO)实体类中的houseName,floorage建立houseSearchVO对象. 通 ...

  3. Mybatis Plus条件查询

    QueryWrapper 说明:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new Que ...

  4. casewhen多条件查询_Mybatis(三)- MyBatis 多条件查询和模糊查询实例

    步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询 步骤 1 : 先运行,看到效果,再学习 老规矩,先下载下载区(点击进入)的可运行项目, ...

  5. mybatis多条件查询处理方案(查询条件为数据库字段非传递参数)

    问题说明     关于多条件查询,大部分遇到的场景是根据传递参数的不同查询符合参数字段的数据信息.mybatis中使用频率最高的是if标签.但if标签中的test属性只支持传递参数进行判断是否相等,不 ...

  6. mybatis 多条件查询、in查询

    当参数有值,添加条件查询,附带一个字符串的in查询 resultMap: <resultMap id="eventMap" type="com.szkingdom. ...

  7. mybatis多条件查询

    在mapper.java文件中:List<Admin> selectByLimit(Map<String,Object> paramMap); 在mapper.XML文件中: ...

  8. MyBatis : Example 条件查询 in 用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 只是记录下. Example example = new Example(UserxxxLog.cl ...

  9. springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)

    文章目录 mybatis版本: 通用查询接口 封装辅助查询类: 通用controller: 自定义注解 controller service mapper测试 mybatis-plus实现版本 ent ...

最新文章

  1. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
  2. spark_updateStateByKey
  3. Codeforces 235C Cyclical Quest (后缀自动机)
  4. Java二分查找、折半查找
  5. 在c语言程序中无论是整数还是实数,C语言基础题及参考答案
  6. 分享几个神奇有效的Python学习网站
  7. wpf silverlight的Behavior
  8. 不好使地机器学习预测双色球蓝球号码
  9. 文献解读-物理信息深度学习(PINN)
  10. 物联网之智能家居系统设计和实现
  11. EDG夺冠刷屏背后,是正在发力的B站直播
  12. 陈述句c语言,幼儿语言发展中最早产生的句型是()。A.陈述句 B.疑问句C.祈使句 D.感叹句...
  13. 分布式理论,架构设计
  14. python实现图像格式转换(bmp、jpg、png)
  15. windows系统解决程序端口号被占用
  16. HDU5755 Gambler Bo
  17. 东北大学C语言课程题库题解专栏目录
  18. 操作系统实验Ucore lab8+反馈队列
  19. 基于 python 的单细胞转录因子分析
  20. 精进3步:破除我执,重塑我想,实现我行,普通人逆袭必看

热门文章

  1. Struts2中的国际化
  2. cisco必须要拿下它-----今年的目的
  3. Windows7无法访问(远程登录)Windows 2003共享问题解决
  4. 查询数据时给列起别名的三种方法
  5. mysql基础操作(二)
  6. python正则表达式03--字符串中匹配数字
  7. mysql-5.5.17-win64 安装方法
  8. javascript阻止事件冒泡和浏览器的默认行为
  9. 【Java】程序调试
  10. 计算机等级报考备注填什么用,计算机二级有什么用