zoukankan      html  css  js  c++  java
  • MyBatis-Puls起步

    MyBatis-Puls

    1、简介

      MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。

    2、使用 SpringBoot 快速整合 MyBatis-Plus

    (1)准备工作
      需要 Java 开发环境(JDK)以及相应的开发工具(IDE)。
      需要 maven(用来下载相关依赖的 jar 包)。
      需要 SpringBoot。
      使用 IDEA 安装mybatis-plus 插件:MyBatisX

    (2)创建一个 SpringBoot 项目。
      方式一:去spring官网初始化一个,然后导入 IDE 工具即可。
      方式二:直接使用 IDE 工具创建一个。 Spring Initializer。

    (3)依赖文件(pom.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <!--声明springboot项目-->       
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.6.RELEASE</version>
            <relativePath/>
        </parent>
        <groupId>com.jia</groupId>
        <artifactId>test-mybatis-plus</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>test-mybatis-plus</name>
        <description>测试 -- 测试 MyBatis-Plus 功能</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!--mybatis-plus启动器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.1.tmp</version>
            </dependency>
    
            <!--数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
                 
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
            <!--springboot启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <!--测试框架-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
                 
        <!--构建工具-->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

    (4)使用一个表进行测试。仅供参考,可以定义 创建时间、修改时间等字段

    DROP DATABASE IF EXISTS testMyBatisPlus;
    
    CREATE DATABASE testMyBatisPlus;
    
    USE testMyBatisPlus;
    
    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)
    );
    
    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');
    

    (5)在 application.yml 文件中配置 mysql 数据源信息。

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: Mysql-python
        url: jdbc:mysql://localhost:3306/testmybatispuls?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

    (6)编写表对应的 实体类。

    package entity;
    
    import lombok.Data;
    
    @Data
    public class User {
        private Long id;
        private String name;
        private int age;
        private String email;
    }
    

    (7)编写操作实体类的 Mapper 类。
      直接继承 BaseMapper,这是 mybatis-plus 封装好的类。

    package mapper;
    
    import bean.User;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    
    public interface UserMapper extends BaseMapper<User> {
    }
    

    (8)实体类、Mapper 类都写好了,就可以使用了。
      Step1:先得在启动类里扫描 Mapper 类,即添加 @MapperScan 注解

    package com.jia;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @MapperScan("com.jia.mapper")
    @SpringBootApplication
    public class TestMybatisPulsApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestMybatisPulsApplication.class, args);
        }
    }
    

    可以进入 Settings,找到 Inspection,并选择其中的 Spring Core -> Code -> Autowiring for Bean Class,将 Error 改为 Warning,即可。

    Mybatis-Plus 常用操作

    1、配置日志

    【参考地址(两种方式配置日志)】
        https://blog.csdn.net/dfBeautifulLive/article/details/100700365
    

     想要查看执行的 sql 语句,可以在 yml 文件中添加配置信息,如下。

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

    如下图所示:执行时会打印出 sql 语句。

    2、简单认识一下常用注解

    【@TableName 】
        @TableName               用于定义表名
    注:
        常用属性:
            value                用于定义表名
    
    【@TableId】
        @TableId                 用于定义表的主键
    注:
        常用属性:
            value           用于定义主键字段名
            type            用于定义主键类型(主键策略 IdType)
    
       主键策略:
      	IdType.AUTO          主键自增,系统分配,不需要手动输入
        IdType.NONE          未设置主键
        IdType.INPUT         需要自己输入 主键值。
        IdType.ASSIGN_ID     系统分配 ID,用于数值型数据(Long,对应 mysql中BIGINT)。
        IdType.ASSIGN_UUID   系统分配 UUID,用于字符串型数据(String,对应mysql中varchar(32))。
    
    【@TableField】  
        @TableField            用于定义表的非主键字段。
    注:
        常用属性:
            value                用于定义非主键字段名
            exist                用于指明是否为数据表的字段, true 表示是,false 为不是。
            fill                 用于指定字段填充策略(FieldFill)。
            
        字段填充策略:(一般用于填充 创建时间、修改时间等字段)
            FieldFill.DEFAULT         默认不填充
            FieldFill.INSERT          插入时填充
            FieldFill.UPDATE          更新时填充
            FieldFill.INSERT_UPDATE   插入、更新时填充。
    
    【@TableLogic】
        @TableLogic           用于定义表的字段进行逻辑删除(非物理删除)
    注:
        常用属性:
            value            用于定义未删除时字段的值
            delval           用于定义删除时字段的值
            
    【@Version】
        @Version             用于字段实现乐观锁
    

    代码生成器的使用

    (1)AutoGenerator 简介
      AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
      与 mybatis 中的 mybatis-generator-core 类似。

    (2)添加依赖

    <dependency>
    <!-- mybatis-plus代码生成依赖 -->
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>
    <!-- 添加 模板引擎 依赖 -->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.2</version>
    </dependency>
    

    (3)编写代码生成策略

    package com.jia;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.junit.jupiter.api.Test;
    
    public class TestAutoGenerate {
    
        @Test
        public void autoGenerate() {
            // Step1:代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // Step2:全局配置
            GlobalConfig gc = new GlobalConfig();
            // 配置代码生成目录(必须修改)
            String OutputDir = "D:\javaCodeWorkSpace\test-mybatis-puls\src\main\java";
            gc.setOutputDir(OutputDir);
            // 配置开发者信息(可选)(可选)
            gc.setAuthor("jia");
            // 配置是否打开目录,false 为不打开(可选)
            gc.setOpen(false);
            /*
            Swagger2:接口文档生成
            为实体属性添加 Swagger2 注解
            pom添加 Swagger 依赖
            开启 Swagger2 模式(可选)
            gc.setSwagger2(true);
            */
            //重新生成文件时是否覆盖,false 表示不覆盖(可选)
            gc.setFileOverride(false);
            // 配置主键生成规则,此处为 ASSIGN_ID(可选)
            gc.setIdType(IdType.ASSIGN_ID);
            // 配置数据库时间类型 到 实体类时间类型 对应策略,此处为 ONLY_DATE(可选)
            gc.setDateType(DateType.ONLY_DATE);
            // 默认生成的 service 会有 I 前缀,%s为占位符
            gc.setServiceName("%sService");
            mpg.setGlobalConfig(gc);
    
            // Step3:数据源配置(必需修改)
            DataSourceConfig dsc = new DataSourceConfig();
            // 配置数据库 url连接 地址
            dsc.setUrl("jdbc:mysql://localhost:3306/testmybatispuls?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
            // 配置数据库驱动
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            // 配置数据库连接用户名
            dsc.setUsername("root");
            // 配置数据库连接密码
            dsc.setPassword("Mysql-python");
            mpg.setDataSource(dsc);
    
            // Step:4:包配置
            PackageConfig pc = new PackageConfig();
            // 配置代码生成目录的父包名(必须修改)
            pc.setParent("com");
            // 配置代码生成目录的模块名(必须修改)
            pc.setModuleName("jia");
            // 配置 entity 包名
            pc.setEntity("entity");
            // 配置 mapper 包名
            pc.setMapper("mapper");
            // 配置 service 包名
            pc.setService("service");
            // 配置 controller 包名
            pc.setController("controller");
            mpg.setPackageInfo(pc);
    
            // Step5:策略配置(数据库表配置)
            StrategyConfig strategy = new StrategyConfig();
            // 指定表名(可以同时操作多个当前连接的数据库中的表,使用 , 隔开)(必须修改)
            strategy.setInclude("user","test_mybatis_plus_user");
            // 配置数据表与实体类名之间映射的策略:下划线转驼峰命名
            strategy.setNaming(NamingStrategy.underline_to_camel);
            // 配置数据库表字段映射到实体的命名策略
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            // 配置 lombok 模式
            strategy.setEntityLombokModel(true);
            // 配置 rest 风格的控制器(@RestController):返回json字符串
            strategy.setRestControllerStyle(true);
            // 配置控制器请求映射路径:驼峰转连字符
            strategy.setControllerMappingHyphenStyle(true);
            // 配置表前缀,生成实体时去除表前缀
            // 例如数据表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。
            strategy.setTablePrefix(pc.getModuleName() + "_");
            mpg.setStrategy(strategy);
    
            // Step6:执行代码生成操作
            mpg.execute();
        }
    }
    

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    K-lord #1
    P1220 关路灯 (区间DP)
    P1136 迎接仪式 (动态规划)
    P1063 能量项链 (区间DP)
    444 D. Ratings and Reality Shows
    P1896 [SCOI2005]互不侵犯King
    P1841 [JSOI2007]重要的城市
    P1134 阶乘问题
    P1414 又是毕业季II
    P1450 [HAOI2008]硬币购物
  • 原文地址:https://www.cnblogs.com/hhddd-1024/p/14364921.html
Copyright © 2011-2022 走看看