我是靠谱客的博主 魁梧香菇,最近开发中收集的这篇文章主要介绍Spring-Boot整合MyBatis-Plus搭建环境测试引入日志 添加数据 删除数据修改数据自动填充功能查询数据分页查询 连表分页查询MyBatisPlus代码生成器 ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

搭建环境

引入依赖

添加配置文件

测试

创建实体类

 @TableId与@TableFiled

@TableName 

引入日志

 添加数据

主键值

AUTO

 ASSIGN_ID(3)

ASSIGN_UUID(4)

 删除数据

根据主键删除

 逻辑删除

表中的逻辑字段

 @TableLogic

 添加逻辑列后再执行查找

修改数据

自动填充功能

查询数据

查询多条记录

QueryWrapper查询条件  

 单条件示例

​编辑

多条件拼接示例

 查询指定字段

查询一条记录

分页查询 

连表分页查询

@TableFileld()

MyBatisPlus代码生成器 


搭建环境

引入依赖

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

添加配置文件

在.yml文件中

spring:
  datasource:
    #设置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/student?serverTimezone=Asia/Shanghai
    username: root
    password: 123456

测试

创建实体类

类名要与表名一致

 @TableId与@TableFiled

@TableId用在属性上表示此属性对应表中的主键,@TableFiled对应表中的列名,如果属性名与表名一致可以省去注解

继承BaseMapper,里面定义了我们单表查询的几乎所有方法,直接调用,连SQL都省了。

传入的值是我么们操作的实体类;

 测试

@TableName 

设置表名

引入日志

MyBatisplus已经打包了日志,我们只需引用,引入日志可以直接看到SQL语句效果

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

 添加数据

可以看到虽然添加成功可是主键却很奇怪,我们没有给他主键值,mybatis自动给我们生成了主键值,因为他提供了主键生成策略,我们可以指定他生成什么样的主键值。

主键值

mybatis提供如下策略:
递增策略,使用该策略要求数据库主键也设置了递增
AUTO(0),
没有策略,必须手动输入值
NONE(1),
也是没有策略,必须手动输入值
INPUT(2),
根据雪花算法,随机生成一个Long类型的值,该值一定是唯一,而且每次生成的都不同。适合分布式主键
ASSIGN_ID(3),
随机产生一个String的值,该值也是唯一的。
ASSIGN_UUID(4);

AUTO

 

 ASSIGN_ID(3)

使用此策略注意:主键类型必须为Long,数据库主键类型最好为varchar或者bigint,要不然会数据过大导致添加不进去。

 

 

ASSIGN_UUID(4)

注意:实体类主键类型必须为String,数据库主键类型必须为varchar

 删除数据

根据主键删除

传入值可以是字符串或数值,如果是数值,这个方法默认的是整型,而我们定义的是长整型,超过了取值范围,要加上L转型。

 逻辑删除

实际开发中: 我们的删除可能是逻辑删除。所谓的逻辑删除就是修改功能。把某个列修改以删除的状态值。
注意:只对自动注入的 sql 起效(mybatisplus自带的sql方法,自己写的不行)
插入: 不作限制---
查找: 追加 where 条件过滤掉已删除数据,且使用 wrapper.entity 生成的 where 条件会忽略该字段
更新: 追加 where 条件防止更新到已删除数据,且使用 wrapper.entity 生成的 where 条件会忽略该字段
 删除: 转变为 更新
* (1)增加一个逻辑字段: isdeleted  0表示未删除 1表示删除.
 (2)实体类上的字段添加   @TableLogic.
 

表中的逻辑字段

 @TableLogic

此注解表示该字段为逻辑列

 添加了该注解后,删除将不再删除数据,而是将字段的逻辑列更新为删除状态 

 

 添加逻辑列后再执行查找

修改数据

 添加了逻辑注解后再执行

自动填充功能

在阿里规范中规定,我们每一张表必须具备

id(主键),

create_time(添加时间),

update_time(修改时间)

这三个字段

 在实体类对应的字段上添加注解

@TableField(fill = FieldFill.INSERT)
@TableField(fill =FieldFill.UPDATE )

定义一个自动填充类MyMetaObjectHandler,让自动填充去调取

官网给了很多方法,对应不同版本,选择适合自己的

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    //当添加时自动填充的值
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        // 或者
        this.strictInsertFill(metaObject, "gmtCreated", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
    }
    //当修改时自动填充的值
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        // 或者
        this.strictUpdateFill(metaObject, "gmtUpdated", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
    }
}

 测试

调用修改方法

调用插入方法同理

自动填充逻辑列值

只是用来示例多条自动填充怎么定义

查询数据

Wrapper中封装了关于查询的各种条件方法,

有三个子类最常用

QueryWrapper查询条件  

UpdateWrapper修改条件  

LambdaQueryWrapper查询使用lambda表达式条件

查询多条记录

QueryWrapper查询条件  

 QueryWrapper里面封装了查询的条件:

        eq 相当于 =

        gt 相当于 > 

        lt  相当于 <

        ge 相当于 >=

        le 相当于 <=

        between 范围

        and 多条件

        or 或

        like 模糊查询a

        likeRight 右模糊查询  like "a%"

        likeLeft  左模糊查询  like "%a"

总之只要where后能有的他全都有

 单条件示例

多条件拼接示例

注意 

 查询指定字段

wrapper.select("name");

查询一条记录

和多条件一样,除了调用的方法

分页查询 

 创建分页调用类:MybatisPlusConfig

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,
     * 需要设置 MybatisConfiguration#useDeprecatedExecutor = false
     * 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
    
}

测试 

 

连表分页查询

@TableFileld()

@TableField(exist=false)  用来标识属性是否在数据表中存在,

false不存在,true存在

 MyBatisPlus并没有提供连表查询的方法,需要自己写,和mybatis一样写法

定义方法

 sql语句

 测试

MyBatisPlus代码生成器 

配置文件 

public class CodeGenerator {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/student?serverTimezone=Asia/Shanghai", "root", "123456")
                .globalConfig(builder -> {
                    builder.author("ytr") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("./src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com") // 设置父包名
                            .moduleName("ytr") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "./src/main/resources/mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("banji")
                            .addInclude("account") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();


    }
}

添加依赖

 <!--mybatisplus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>

        <!--代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>

结果

最后

以上就是魁梧香菇为你收集整理的Spring-Boot整合MyBatis-Plus搭建环境测试引入日志 添加数据 删除数据修改数据自动填充功能查询数据分页查询 连表分页查询MyBatisPlus代码生成器 的全部内容,希望文章能够帮你解决Spring-Boot整合MyBatis-Plus搭建环境测试引入日志 添加数据 删除数据修改数据自动填充功能查询数据分页查询 连表分页查询MyBatisPlus代码生成器 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部