• 2022-08-02


    一、 如何自动生成代码mybatis-plus

    1. 代码修改

    在这里插入图片描述

    package com.xxx.core;
    
    import com.baomidou.mybatisplus.core.toolkit.StringPool;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.InjectionConfig;
    import com.baomidou.mybatisplus.generator.config.*;
    import com.baomidou.mybatisplus.generator.config.po.TableInfo;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    public class MybatisCodeGeneratorCore {
    
        /**
         * 路径设置
         */
        private static final String ENTITY_PACKAGE = "model.entity.core";
        private static final String MAPPER_PACKAGE = "mapper.core";
        private static final String DAO_PACKAGE = "dao.core";
        private static final String DAO_IMPL_PACKAGE = "dao.core.impl";
    
        /**
         * 文件名设置
         */
        private static final String REMOVE_TABLE_PREFIX = "";
        private static final String ADD_ENTITY_PREFIX = "";
        private static final String ADD_ENTITY_SUFFIX = "Entity";
        private static final String ADD_DAO_SUFFIX = "Dao";
        private static final String ADD_DAO_IMPL_SUFFIX = "DaoImpl";
        private static final String ADD_MAPPER_SUFFIX = "Mapper";
    
        /**
         * 文件内容设置
         */
        private static final String AUTHOR = "Rainey";
    
        /**
         * 数据库
         */
        private static final String MYSQL_URL = "jdbc:mysql://xxx:3306/lanxi_core?useUnicode=true&characterEncoding=UTF-8";
        private static final String MYSQL_USERNAME = "xxx";
        private static final String MYSQL_PASSWORD = "xxx";
    
        /**
         * 目标表
         */
        private static final Set<String> TABLES = new HashSet<>();
        static {
    //        TABLES.add("disease_code");
            TABLES.add("health_record");
        }
    
        public static void main(String[] args) {
            doGenerate(MybatisCodeGeneratorParam.core());
        }
    
        private static void doGenerate(MybatisCodeGeneratorParam param) {
            // 全局配置
            String projectPath = System.getProperty("user.dir");
            String modulePath = projectPath + "/" + param.getModuleName();
            GlobalConfig gc = new GlobalConfig()
                    .setOutputDir(modulePath + "/src/main/java")
                    .setAuthor(AUTHOR)
                    .setFileOverride(false)
                    // 二级缓存
                    .setEnableCache(false)
                    .setEntityName(ADD_ENTITY_PREFIX + "%s" + ADD_ENTITY_SUFFIX)
                    .setServiceName(param.getAddDaoPrefix() + "%s" + ADD_DAO_SUFFIX)
                    .setServiceImplName(param.getAddDaoImplPrefix() + "%s" + ADD_DAO_IMPL_SUFFIX)
                    .setMapperName(param.getAddMapperPrefix() + "%s" + ADD_MAPPER_SUFFIX)
    //                .setSwagger2(true)
                    .setBaseColumnList(true)
                    .setBaseResultMap(true)
                    .setOpen(false);
    
    
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig()
                    .setUrl(MYSQL_URL)
                    .setDriverName("com.mysql.cj.jdbc.Driver")
                    .setUsername(MYSQL_USERNAME)
                    .setPassword(MYSQL_PASSWORD)
                    ;
    
    
            // 包配置
            PackageConfig pc = new PackageConfig()
                    .setParent(param.getParentPackage())
                    .setMapper(MAPPER_PACKAGE)
                    .setService(DAO_PACKAGE)
                    .setServiceImpl(DAO_IMPL_PACKAGE)
                    .setEntity(ENTITY_PACKAGE)
                    ;
    
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig()
                    .setNaming(NamingStrategy.underline_to_camel)
                    .setColumnNaming(NamingStrategy.underline_to_camel)
                    .setEntityLombokModel(true)
                    .setRestControllerStyle(false)
                    .setEntityTableFieldAnnotationEnable(true)
                    // entity公共父类
    //                .setSuperEntityClass("com.alvin.learning.mybatis.plus.model.entity.BaseEntity")
                    // 写于父类中的公共字段
    //                .setSuperEntityColumns("id")
                    .setTablePrefix(REMOVE_TABLE_PREFIX)
                    .setInclude(TABLES.toArray(new String[TABLES.size()]))
                    .setControllerMappingHyphenStyle(true);
            // controller公共父类
    //        strategy.setSuperControllerClass("com.alvin.learning.mybatis.plus.controller.BaseController");
    
    
            // 配置自定义模板
            TemplateConfig templateConfig = new TemplateConfig()
                    // 设置成null即不生成
                    .setController(null)
    //                .setMapper(null)
    //                .setService(null)
    //                .setServiceImpl(null)
                    //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
    //                .setEntity("templates/entity2.java")
                    // 下面自定义了xml模板地址的配置, 此处关闭默认xml模板生成
                    .setXml(null)
                    ;
    
    
            // 自定义配置
            // 自定义了xml文件的模板和路径
            InjectionConfig cfg = new InjectionConfig() {
                @Override
                public void initMap() {
                    // to do nothing
                }
            };
            // 如果模板引擎是 velocity
            String templatePath = "/templates/mapper.xml.vm";
            // 自定义输出配置
            List<FileOutConfig> focList = new ArrayList<>();
            // 自定义配置会被优先输出
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                    return modulePath + "/src/main/resources/" + param.getXmlPath() + "core/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
                }
            });
            cfg.setFileOutConfigList(focList);
    
    
            // 代码生成器
            AutoGenerator mpg = new AutoGenerator()
                    .setGlobalConfig(gc)
                    .setDataSource(dsc)
                    .setPackageInfo(pc)
                    .setCfg(cfg)
                    .setTemplate(templateConfig)
                    .setStrategy(strategy);
    
            mpg.execute();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166

    2. 遇到命令过长的问题

    1. 编辑
      在这里插入图片描述

    2. 设置
      在这里插入图片描述
      在这里插入图片描述

    3. 设置模板
      在这里插入图片描述

    二、 定时任务设计

    项目运行时间,往前计数,比如运行时间为2022-08-02(周二):

    1. 周

    • 上个周一到上个周日:2022-07-25到2022-07-31——>生成
    • 本周一开始计数:2022-08-01到2022-08-07

    2. 月

    • 上个月初到上个月末:2022-07-01到2022-07-31——>生成
    • 本月初开始计数:2022-08-01到2022-08-31

    3. 季

    • 上个季度初到上个季度末:2022-03-01到2022-05-31——>生成
    • 本季度初开始计数:2022-06-01到2022-08-31

    4. 年

    • 上一个年初到上一个年末:2021-01-01到2021-12-31——>生成
    • 本年初开始计数:2022-01-01到2022-12-31

    5. 10天

    • 从当前日往前推十天:2022-07-23到2022-08-01——>生成
    • 从今天开始计数:2022-08-02到2022-08-12

    三、定时任务实现

    1. JobBiz中添加常量

    在这里插入图片描述

    四、对接疑问讨论

    1. 为什么分表

    在这里插入图片描述
    由于数据量太多,进行分表处理

    2. 租户注解

    在这里插入图片描述

    3.

    五、

  • 相关阅读:
    分布式.高并发&高可用
    ES6面试题总结
    ceph分布式存储
    K8S的调度算法在仿真实验的实现
    Blazor和Vue对比学习(基础1.6):祖孙传值,联级和注入
    Linux per-cpu
    flink:通过table api把文件中读取的数据写入MySQL
    最小生成树算法之 Kruskal 和 Prim
    Python使用Beautiful Soup及解析html获取元素并提取内容值
    CSDN竞赛六期
  • 原文地址:https://blog.csdn.net/HRX98/article/details/126115237