以下的代码生成器和日志文件配置是我从srb项目中学习到的,其中的代码生成器和我以前用的mybatis逆向生成器截然不同
这个生成器更加全面一些。日志配置在大型项目中也很有用,可以更快的定位到问题的发生,其中包含了本地文件日志记录

• 代码生成器:

代码生成器,需要导入的依赖有

<properties>
    <mybatis-plus.version>3.4.1</mybatis-plus.version>
    <velocity.version>2.0</velocity.version>
</properties>
​
            <!--mybatis-plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <!--mybatis-plus 代码生成器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <!-- Mybatis Plus 代码生成器模板引擎,  -->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>${velocity.version}</version>
            </dependency>
​
​

创建测试类,复制如下的生成代码,根据具体需要修改配置:

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.NamingStrategy;
import org.junit.Test;
​
public class CodeGenerator {
​
    @Test
    public void genCode() {
​
        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();
​
        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("HTT");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setServiceName("%sService");    //去掉Service接口的首字母I
        gc.setIdType(IdType.AUTO); //主键策略
        gc.setSwagger2(true);//开启Swagger2模式
        mpg.setGlobalConfig(gc);
​
        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://47.92.69.43:3306/srb?serverTimezone=GMT%2B8&characterEncoding=utf-8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("333");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);
​
        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.htt.srb.core");
        pc.setEntity("pojo.entity"); //此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
        mpg.setPackageInfo(pc);
​
        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
​
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok
        strategy.setLogicDeleteFieldName("is_deleted");//逻辑删除字段名
        strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去掉布尔值的is_前缀(确保tinyint(1))
        strategy.setRestControllerStyle(true); //restful api风格控制器
        mpg.setStrategy(strategy);
​
        // 6、执行
        mpg.execute();
    }
}

• 日志配置:

在resources下创建logback-spring.xml文件,内容如下

​
 
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <contextName>HttSrb</contextName>
    
        <!-- 日志的输出目录 -->
        <property name="log.path" value="E:/项目/srb/srb_log/core" />
    
        <!--控制台日志格式:彩色日志-->
        <!-- magenta:洋红 -->
        <!-- boldMagenta:粗红-->
        <!-- cyan:青色 -->
        <!-- white:白色 -->
        <!-- magenta:洋红 -->
        <property name="CONSOLE_LOG_PATTERN"
                  value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/>
    
        <!--文件日志格式-->
        <property name="FILE_LOG_PATTERN"
                  value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" />
    
        <!--编码-->
        <property name="ENCODING"
                  value="UTF-8" />
    
        <!-- 控制台日志 -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
        </appender>
    
        <!-- 文件日志 -->
        <appender name="FILE" class="ch.qos.logback.core.FileAppender">
            <file>${log.path}/log.log</file>
            <append>true</append>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
        </appender>
    
        <!--滚动日志防止单日志文件过大-->
        <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--  要区别于其他的appender中的文件名字  -->
            <file>${log.path}/log-rolling.log</file>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
    
            <!-- 设置滚动日志记录的滚动策略 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志归档路径以及格式 -->
                <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!--归档日志文件保留的最大数量-->
                <maxHistory>15</maxHistory>
                
                <!--归档日志触发时机-->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10KB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
    
        </appender>
        <!-- 开发环境和测试环境 -->
        <springProfile name="dev,test">
            <logger name="com.htt" level="INFO">
                <appender-ref ref="CONSOLE" />
                <!--<appender-ref ref="ROLLING_FILE" />--> 
            </logger>
        </springProfile>
    
        <!-- 生产环境 -->
        <springProfile name="prod">
            <logger name="com.htt" level="ERROR">
                <appender-ref ref="CONSOLE" />
                <appender-ref ref="ROLLING_FILE" />
            </logger>
        </springProfile>
    </configuration>