简化开发: mybatis-plus 代码自动生成 以及 常见问题

376 阅读3分钟

 

目录

 1. MP自动代码生成和解析

1.1  getProperty()方法中的key到底是什么

 1.2 源码中 System 中 左边是key   调用上面方法能获取到后面内

1.3 测试用例: user.dir /java.version

 2. 全部自动生成的代码

3. 注意修改

Parent设置包名 可以尝试一下

 3.1 生成后 可以看到文件信息 

4. 报错信息一: 

java.lang.NoClassDefFoundError: org/apache/velo…

5. 报错信息二: 只有文件夹 没有文件


1. MP自动代码生成和解析

依赖两个: 另一个在最下面(必须添加)

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>

 1.1  getProperty()方法中的key到底是什么

  String projectPath = System.getProperty(" *** ");
        System.out.println(projectPath);

 1.2 源码中 System 中 左边是key   调用上面方法能获取到后面内

 /**
     * System properties. The following properties are guaranteed to be defined:
     * <dl>
     * <dt>java.version         <dd>Java version number
     * <dt>java.vendor          <dd>Java vendor specific string
     * <dt>java.vendor.url      <dd>Java vendor URL
     * <dt>java.home            <dd>Java installation directory
     * <dt>java.class.version   <dd>Java class version number
     * <dt>java.class.path      <dd>Java classpath
     * <dt>os.name              <dd>Operating System Name
     * <dt>os.arch              <dd>Operating System Architecture
     * <dt>os.version           <dd>Operating System Version
     * <dt>file.separator       <dd>File separator ("/" on Unix)
     * <dt>path.separator       <dd>Path separator (":" on Unix)
     * <dt>line.separator       <dd>Line separator ("\n" on Unix)
     * <dt>user.name            <dd>User account name
     * <dt>user.home            <dd>User home directory
     * <dt>user.dir             <dd>User's current working directory
     * </dl>
     */

    private static Properties props;

1.3 测试用例: user.dir /java.version

 2. 全部自动生成的代码

package sso;

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;

/**
 * @Author pzy
 * @Description: TODO
 * @Version 0.1.0
 */
public class MpAutoGeneration {

    @Test
    public void run() {


        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();

        /**
         * 获取到当前工程的文件位置
         */
       // String projectPath = System.getProperty("user.dir");
        String projectPath = System.getProperty("java.version");
        System.out.println(projectPath);


        gc.setOutputDir(projectPath + "/src/main/java");

        gc.setAuthor("pzy");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖

        //UserServie
        gc.setServiceName("%sService");	//去掉Service接口的首字母I

        gc.setIdType(IdType.AUTO); //主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://*:3306/aisce?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("*");
        dsc.setPassword("*");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("system"); //模块名
        //包  com.atguigu.eduservice
        pc.setParent("*");
        //包  com.atguigu.eduservice.controller
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();

//        strategy.setInclude("edu_chapter","edu_course","edu_course_description","edu_video");
        strategy.setInclude("user");

        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);


        // 6、执行
      mpg.execute();

    }


}

3. 注意修改

数据库连接池 配置

DataSource

url

root

password

 pc.setParent("*");

Parent设置包名 可以尝试一下

控制台中能找到 如图所示: 

 3.1 生成后 可以看到文件信息 

4. 报错信息一: 

java.lang.NoClassDefFoundError: org/apache/velocity/context/Context

解决办法: (缺少生成的模板)

有两种模板引擎 一是velocity,二是freemarker  看看使用哪个比较好(或适合)

模板一: 

    <!-- 模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

模板二: 

<dependency>
    <groupId>org.freemarker</groupId>
     <artifactId>freemarker</artifactId>
     <version>2.3.28</version>
</dependency>

5. 报错信息二: 只有文件夹 没有文件

寻找 setInclude()方法  看看是否存在此表

 


全部结束 看到这个成功, 其他问题欢迎评论区留言