mybatis_plus基础使用

这篇具有很好参考价值的文章主要介绍了mybatis_plus基础使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

1. MybatisPlus简介与特性

1.1 简介

2. MybatisPlus的开发环境搭建

2.1 数据库创建categor表

2.2 创建SpringBoot工程

2.3 mybatis_plus提供基础结构代码自动生成

2.4 配置数据库来源application.yml

3. 开始代码编写 

1 相等判断

 2 范围判断

 3 模糊匹配

4 非空判断 

 5 in判断

6 分组

7 排序

 8 条件判断

9 逻辑判断

10 存在判断

 11 查询字段


1. MybatisPlus简介与特性

1.1 简介

MybatisPlus作为MyBatis的一款增强工具,就是为了简化开发,为提高效率而生。同时还提供通用的Mapper与Service,无需写SQL的情况下对表进行增删改查,可以说是十分之优秀。简而意之就是减少基础crud方法的大量重复代码编写

2. MybatisPlus的开发环境搭建

2.1 数据库创建categor表


CREATE TABLE `category`  (
  `id` bigint(0) NOT NULL COMMENT '主键',
  `type` int(0) NULL DEFAULT NULL COMMENT '类型',
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '姓名',
  `sort` int(0) NOT NULL DEFAULT 0 COMMENT '顺序',
  `create_time` datetime(0) NOT NULL COMMENT '创建时间',
  `update_time` datetime(0) NOT NULL COMMENT '更新时间',
  `create_user` bigint(0) NOT NULL COMMENT '创建人',
  `update_user` bigint(0) NOT NULL COMMENT '修改人',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `idx_category_name`(`name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '菜品及套餐分类' ROW_FORMAT = Dynamic;


INSERT INTO `category` VALUES (1, 1, '张三', 1, '2022-05-27 09:16:58', '2022-07-15 20:25:23', 1, 1);
INSERT INTO `category` VALUES (2, 1, '李四', 2, '2022-05-27 09:17:07', '2022-06-02 14:27:22', 1, 1);
INSERT INTO `category` VALUES (3, 2, '王五', 3, '2022-05-27 09:17:28', '2022-07-09 14:37:13', 1, 1);
INSERT INTO `category` VALUES (4, 2, '赵六', 11, '2022-07-09 11:36:15', '2022-07-09 14:39:15', 1, 1);
INSERT INTO `category` VALUES (5, 3, '唐七', 5, '2022-07-09 11:40:30', '2022-07-09 14:43:45', 1, 1);
INSERT INTO `category` VALUES (6, 4, '范八', 12, '2022-07-09 14:30:07', '2022-07-09 14:39:19', 1, 1);
INSERT INTO `category` VALUES (7, 4, '杨九', 6, '2022-07-09 14:35:02', '2022-07-09 14:39:05', 1, 1);

SET FOREIGN_KEY_CHECKS = 1;

2.2 创建SpringBoot工程

请使用IDEA快速创建一个SpringBoot的工程,在pom.xml中导入以下依赖,

     <!--mybatis-plus依赖-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.3.1</version>
		</dependency>
 
		<!-- 代码生成器所需依赖  -->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-engine-core</artifactId>
			<version>2.2</version>
		</dependency>

2.3 mybatis_plus提供基础结构代码自动生成

运行以下main方法就会自动生成SpringMVC基础架构,mapper层记得加上@Mapper注解

/**
*代码自动生成类
*/

public class SggCodeGenerator {
    public static void main(String[] args) {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("玉面小白龙");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        gc.setIdType(null); //主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/rui?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(null); //模块名
        pc.setParent("com.example.test3");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("category");//对那一张表生成代码
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();
    }
}

2.4 配置数据库来源application.yml

填写基础基础用户名和密码,以及数据库名称

server:
  port: 8888
spring:
  datasource:
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver
    #连接本地数据库
    url: jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC

mybatis-plus:
  # mapper.xml 文件扫描
  mapper-locations: classpath*:/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

# 日志配置
logging:
  level:
    com.xxx.xxx: debug
    org.springframework: warn



3. 开始代码编写 

3.1开始controller调用mapper层自带方法实现增删查改

1 相等判断

1.1 allEq
全部条件都相等。

Map<String,Object> map = new HashMap<>();

map.put("type",1);

map.put("name","张三");

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.allEq(map);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;文章来源地址https://www.toymoban.com/news/detail-499405.html

 
1.2 eq
指定条件相等。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().eq(Category::getName,"李四");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


1.3 ne
指定条件不相等。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().ne(Category::getName,"李四");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

 2 范围判断

2.1 gt
大于指定条件。

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().gt(Category::getType,1);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
2.2 ge
大于等于指定条件。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().ge(Category::getType,2);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
2.3 lt
小于指定条件。

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().lt(Category::getType,2);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
2.4 le

小于等于指定条件。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().le(Category::getType,2);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
2.5 between
介于指定范围之间。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().between(Category::getType,"2","3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
2.6 notBetween

不介于指定范围之间。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().notBetween(Category::getType,"2","3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

 3 模糊匹配

3.1 like
某个字符串包含指定字符串。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().like(Category::getCreateTime,"2022");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
3.2 notLike
某个字符串不包含指定字符串。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().notLike(Category::getCreateTime,"14");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
3.3 likeLeft

某个字符串以指定字符串结尾。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().likeLeft(Category::getCreateTime,"58");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
3.4 likeRight
某个字符串以指定字符串开头。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().likeRight(Category::getCreateTime,"2022");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

4 非空判断 

4.1 isNull
指定字段为null。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().isNull(Category::getType);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
4.2 isNotNull
指定字段不为null。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().isNotNull(Category::getType);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    

 5 in判断

5.1 in
满足指定条件之一。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().in(Category::getType,"1","3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
5.2 notIn
不满足指定条件之一。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().notIn(Category::getType,"1","3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
5.3 inSql 
满足指定条件之一。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().inSql (Category::getType,"1,3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
5.4 notInSql
不满足指定条件之一。

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().notInSql(Category::getType,"1,3");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

6 分组

6.1 groupBy
按字段值分组,每一组只会出现一条数据。
        QueryWrapper<UserEntity> queryWrapper = new QueryWrapper();
        queryWrapper.lambda().groupBy(UserEntity::getSex);
        return userService.list(queryWrapper);

7 排序

7.1 orderByAsc
根据指定字段升序排序。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().orderByAsc(Category::getCreateTime);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
7.2 orderByDesc

根据指定字段降序排序。

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().orderByDesc(Category::getCreateTime);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


   
7.3 orderBy
根据指定字段升序/降序排序。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().orderBy(true,false,Category::getCreateTime);

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

注:

(1)第一个参数必须为true。

(2)第二个参数为true则升序排序,为false则降序排序。

 

 8 条件判断

8.1 having
跟sql里面的having类似。

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.select("type,count(*) as sexCount")

.groupBy("type")

.having("count(*)>1");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;
注:

(1)having()需要配合select()、groupBy()一起配合使用。

(2)having里面只能使用聚合函数。

8.2 func
主要方便在出现if...else下调用不同方法能不断链。
 Boolean s = false;

LambdaQueryWrapper<Category> queryWrapper = Wrappers.<Category>lambdaQuery(); queryWrapper.func(x -> {

if (s) {

x.eq(Category::getType, 2);

} else {

x.eq(Category::getType, 1); } });

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

9 逻辑判断

 9.1 and
与逻辑判断。(条件拼接)

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().eq(Category::getName,"张三")

.and(t -> t.eq(Category::getType, "1"));

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


9.2 or
或逻辑判断。
QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.lambda().eq(Category::getName,"张三")

.or(t -> t.eq(Category::getType, "2"));

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

10 存在判断

 10.1 exists
exists用于检查子查询是否会返回数据,该子查询实际上并不返回任何数据,有查询数据返回值为true,没有查询数据返回值为false。
 QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.exists("select * from category where name='张三'");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;


    
10.2 notExists

notExists用于检查子查询是否不会返回数据,该子查询实际上并不返回任何数据,有查询数据返回值为false,没有查询数据返回值为true。
   QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.notExists("select * from category where name='张三'");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

 11 查询字段

11.1 select

QueryWrapper<Category> queryWrapper =new QueryWrapper<>(); queryWrapper.select("name,type");

List<Category> categories = categoryMapper.selectList(queryWrapper);

return "数据为"+ categories;

到了这里,关于mybatis_plus基础使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatisplus 使用mybatis中的配置、mapper配置文件

    即在和application.properties同级目录下的mybatis目录中创建mybatis的配置文件mybatis-config.xml 其内容如下 方式一的目录结构: 1、在application.properties中再添加一行mapper映射地址 修改mapper映射的配置文件路径,这次不用在和mapper接口的路径一一对应,只需要在resource/mybatis/mapper/UserMa

    2023年04月08日
    浏览(43)
  • 零基础尝试mybatis-plus读写分离

     看了好几篇博友写的文章,关于spring-boot整合mybatis-plus实现读写分离,不过都是缺这少那的,跑不起来,所以自己实操了一次,做个记录   实现方式为使用Aop切面 1、增加数据库枚举类 2、配置数据源 3、线程轮循切换主从数据库(多主多从的情况下适用) 4、声明路由数据源

    2024年02月08日
    浏览(37)
  • 【MyBatis-Plus】MyBatis进阶使用

    目录 一、MyBatis-Plus简介 1.1 介绍 1.2 优点 1.3 结构 二、MyBatis-Plus基本使用 2.1 配置 2.2 代码生成 2.3 CRUD接口测试 三、MyBatis-Plus策略详解 3.1 主键生成策略 3.2 雪花ID生成器 3.3 字段自动填充策略 3.4 逻辑删除 四、MyBatis-Plus插件使用 4.1 乐观锁插件 4.1.1 什么是乐观锁和悲观锁? 4.

    2024年02月04日
    浏览(50)
  • MyBatis-Plus 基础操作指南:实现高效的增删改查

        大家好,今天我们来聊聊如何使用 MyBatis-Plus(接下来简称为 MP),一个流行的 MyBatis 增强工具,来简化和加速我们的数据库操作。如果你是一位初学者,不用担心,我将带你从头到尾详细了解 MP 的使用方法,特别是如何实现基本的增删改查操作。     在开始详细介绍之

    2024年02月05日
    浏览(36)
  • Mybatis-plus 使用

            mybatis-plus提供了 ·@TableName·, @TableId, @TableField, @TableLogic 四种注解,其含义分别为:  @TableName          @TableName(\\\"SPF_Require_Vehicle\\\")    用于声明当前class所对应数据库中的表,如果class的名字和表的名字完全相同,则不需要添加该注解,如果不一样,则需要用该注解进

    2024年02月07日
    浏览(43)
  • mybatis-plus与mybatis同时使用别名问题

    在整合mybatis和mybatis-plus的时候发现一个小坑,单独使用mybatis,配置别名如下: XML映射文件如下: 单元测试发现没有问题 添加mybatis-plus依赖后,单元测试报错: 显示无法解析XML映射文件中的student 解决办法:要把配置文件里的别名配置改成mybatis-plus的配置,如下: 区别

    2024年04月13日
    浏览(40)
  • Mybatis-plus的使用

    Mybatis-plus的使用 一、简介 Mybatis-plus的基于mybatis的,简化了单表mybatis的操作。 注意:它并没有提升性能,只是简化了开发过程。 二、在springboot中的基本使用 1、导入依赖 2、添加相应的数据库配置(application.properties) 3、在Application类上添加dao接口的路径扫描 4、编写实体类

    2024年02月09日
    浏览(42)
  • mybatis-plus分页total为0,分页失效,mybatis-plus多租户插件使用

    背景:项目使用mybatis分页插件不生效,以及多租户使用时读取配置异常 多租户插件使用遇到的问题: 最开始在MyTenantLineHandler中使用 @Value(\\\"${tables}\\\"),服务启动时能从配置中心拉取到配置,但在运行时获取到的值为空,试了很多方法都不生效,后面将配置中心的配置在调用My

    2024年02月06日
    浏览(52)
  • Mybatis-Plus使用方法

    MyBatis-Plus 提供了丰富的增强版的 CRUD 方法,使得开发者能够更简洁、高效地进行数据库操作。以下是如何使用 MyBatis-Plus 自带的增强版 CRUD 方法的基本步骤: 添加依赖 首先,确保你的 Maven 项目中已经添加了 MyBatis-Plus 的相关依赖,包括核心依赖和数据库驱动依赖。 xml复制代

    2024年04月11日
    浏览(46)
  • Mybatis-plus框架使用配置

    MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一步简化开发过程,提高开发效率。 Mybatis-Plus 其实可以看

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包