mybatis-plus详解

旧的代码生成

记得导包,依赖如下


            com.baomidou
            mybatis-plus-boot-starter
            3.5.1

            com.baomidou
            mybatis-plus-generator
            3.5.1

            org.apache.velocity
            velocity
            1.7

            org.apache.velocity
            velocity-engine-core
            2.3

代码


import com.baomidou.mybatisplus.annotation.DbType;
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;

/**
 * @description:
 * @author: HaHa
 * @time: 2022/4/19 20:04
 */
public class AutoMain {
    public static void main(String[] args) {
        AutoGenerator generator = new AutoGenerator();

//        设置全局配置
        GlobalConfig config = new GlobalConfig();
        String s = System.getProperty("user.dir");
        config.setOutputDir(s+"/src/main/java");
        config.setAuthor("mybatis自动生成");
        config.setOpen(false);
        config.setFileOverride(false);  //是否文件覆盖
        config.setSwagger2(true);
        config.setServiceName("%sService");  //去掉Service前面的I
        config.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        generator.setGlobalConfig(config);

        //2、设置数据源
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/admin-springboot?serverTimezone=UTC");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456789");
        dsc.setDbType(DbType.MYSQL);
        generator.setDataSource(dsc);

        //3、包的配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("edu"); //模块名
        // 包:com.lu.edu
        pc.setParent("com.lu");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        generator.setPackageInfo(pc);

        //4、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("sys_user"); // 设置要映射的表名
         //数据库表 映射到实体的命名策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        //数据库表字段 映射到实体的命名策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //生成实体时去掉表前缀
        strategy.setTablePrefix(pc.getModuleName() + "_");
        strategy.setEntityLombokModel(true); // 自动lombok;
        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        strategy.setLogicDeleteFieldName("deleted");  //逻辑字段,数据库字段里面有deteted,然后自动配置
        // 自动填充配置
        TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
        TableFill gmtModified = new TableFill("gmt_modified",FieldFill.INSERT_UPDATE);
        ArrayList tableFills = new ArrayList<>();
        tableFills.add(gmtCreate);
        tableFills.add(gmtModified);
        strategy.setTableFillList(tableFills);
        // 乐观锁
        strategy.setVersionFieldName("version");
        strategy.setRestControllerStyle(true);
        strategy.setControllerMappingHyphenStyle(true); //下划线相当于/

        generator.setStrategy(strategy);
        generator.execute();
    }
}

部分代码详解

定义生成的实体类中日期类型

  • 默认生成日期格式为 LocalDateTimeLocalDate

  • 自定义添加类型 添加设置 gc.setDateType(DateType.ONLY_DATE); 已实现 Date 类型.

  • 可添加注解来实现前后端日期格式的转换
    *

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")

主键策略

  • 默认雪花算法
@TableId(type = IdType.INPUT)    自行输入id
@TableId(type = IdType.AUTO)     主键自增
@TableId(type = IdType.ASSIGN_ID)  雪花算法
@TableId(type = IdType.ASSIGN_UUID)

乐观锁

  • 参考即可

(91条消息) mybatis plus的乐观锁使用总结_霉男纸的博客-CSDN博客_mybatisplus乐观锁

(91条消息) mybatis-plus的乐观锁_zhuzai233的博客-CSDN博客

自定义的模板

mybatis-plus详解

mybatis-plus详解

新的代码生成器

更多详解看官网:
https://baomidou.com/pages/779a6e/#使用


import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

/**
 * @description:
 * @author: HaHa
 * @time: 2022/4/29 16:54
 */
public class AutoFast {
    public static void main(String[] args) {
        generate();
    }

    private static void generate() {
//        UTC是根据原子钟来计算时间,而GMT是根据地球的自转和公转来计算时间
        String url="jdbc:mysql://localhost:3306/admin-springboot?serverTimezone=GMT%2b8";
        String username="root";
        String password="123456789";
        String outputDir = System.getProperty("user.dir");
        String parentPackage="com";

        DataSourceConfig.Builder database = new DataSourceConfig.Builder(url, username, password);
        FastAutoGenerator.create(database)
                .globalConfig(builder -> {
                    builder.author("雨同我")

                            .enableSwagger()
                            .fileOverride()
                            .outputDir(outputDir+"/src/main/java/");
                })
                .packageConfig(builder -> {
                    builder.parent(parentPackage)
                    .moduleName(null)
                    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, outputDir+"/src/main/resources/mapper/"));
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder().enableLombok();
//                    builder.mapperBuilder().enableMapperAnnotation().build();   //这个是在每个mapper上面添加@Mapper
                    builder.controllerBuilder().enableHyphenStyle()  // 开启驼峰转连字符
                            .enableRestStyle();  // 开启生成@RestController 控制器
                    builder.addInclude("sys_user") // 设置需要生成的表名
                            .addTablePrefix("t_", "sys_"); // 设置过滤表前缀
                })
                //.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

}

Original: https://www.cnblogs.com/rain-me/p/16513950.html
Author: 雨同我
Title: mybatis-plus详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611836/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天 shutil 模块 zipfile tarfile 模块 注意:压缩打包/解压解包目录和文件使用tarfile模块而不要使用shutil 模块!!! os文件…

    数据库 2023年6月9日
    071
  • MySQL系统安装与部署

    数据库版本标准化 1.确认Supported Platforms https://www.mysql.com/support/ 2.确认安装版本 推荐:5.7.22 ,8.0.20…

    数据库 2023年5月24日
    084
  • leetcode 101. Symmetric Tree 对称二叉树(简单)

    一、题目大意 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3]输出:true 示例 2: 输入:root =…

    数据库 2023年6月16日
    081
  • 2_JDBC

    使用客户端工具访问数据库, 需要手工建立连接, 输入用户名和密码登陆, 编写SQL语句, 点击执行, 查看操作结果(结果集或受行数影响) 在实际开发中, 当用户的数据发生改变时, …

    数据库 2023年6月11日
    059
  • 访问网络共享(net use):发生系统错误 67。找不到网络名。

    使用\ip访问对方共享目录或使用net use \ip 时: 发生系统错误 67。找不到网络名。 以下几项启用: 1,网卡勾选”Microsoft网络客户端&#8221…

    数据库 2023年6月14日
    0174
  • MySQL实战45讲 11

    11 | 怎么给字符串字段加索引? Q:如何在邮箱这样的字段上建立合理的索引? 用户表的定义: create table SUser( ID bigint unsigned pri…

    数据库 2023年5月24日
    0112
  • 数据库设计案例

    简单构建设计数据库 数据库设计案例 描述:简单构建设计数据库 sql代码实现 /* 数据库设计案例 */ — 音乐表 CREATE TABLE Music ( title VAR…

    数据库 2023年6月16日
    0110
  • 正则表达式与SQL

    在我心中正则表达式和SQL就是一样的东西。 SQL是结构化查询语言,是根据某个查询、修改规则来查询修改数据,是描述一个规则给数据库,数据库来执行,数据库返回结果,过程不需要考虑,不…

    数据库 2023年6月9日
    071
  • 单点登录(SSO)

    1 基础知识 单点登录机制(SSO)允许用户登录应用程序一次,并访问所有相关的系统,而不需要单独登录它们。 由于 SSO,用户只需登录一次即可使用服务,并自动登录到所有相关应用程序…

    数据库 2023年6月14日
    0161
  • Ubuntu 64位桌面版 16.04.1 设置桥接模式和固定静态IP方法

    进入Ubuntu,打开命令窗口(右键单机桌面选择Terminal) 输入命令ip a,查看自己网卡编号,比如我的就是ens33 输入命令sudo vi /etc/network/i…

    数据库 2023年6月6日
    099
  • MyRocks DDL原理

    最近一个日常实例在做DDL过程中,直接把数据库给干趴下了,问题还是比较严重的,于是赶紧排查问题,撸了下crash堆栈和alert日志,发现是在去除唯一约束的场景下,MyRocks存…

    数据库 2023年6月9日
    099
  • mysql数据类型与表操作

    一、mysql基本认知 创建用户 create host aa identified with mysql_native_password by ”; 修改用户权限 a…

    数据库 2023年5月24日
    092
  • 【黄啊码】使用think-queue产生大量日志文件怎么办?

    有时候某些原因程序出错,会有大量日志生成,最好调整下日志,单独出来。在配置文件config/queue.php开头添加: use think\facade\Log;Log::ini…

    数据库 2023年6月16日
    091
  • 数据库原理四—MySQL日志

    重做日志redo log redo log是重做日志,为InnoDB存储引擎独有。它记录了数据页上的改动。当事务中修改了数据,将会备份存储。当发生数据库服务器宕机或者脏页未写入磁盘…

    数据库 2023年5月24日
    0115
  • leetcode 617. Merge Two Binary Trees 合并二叉树(简单)

    一、题目大意 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新…

    数据库 2023年6月16日
    074
  • 【Kubernetes系列】Kubernetes相关概念介绍

    Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容…

    数据库 2023年6月6日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球