mybatisPlus之逆向工程

优点:

         可以根据数据表和实体自动生成mapper.xml,service,control层的代码

缺点:

          需要自己去数据库建表,实体

使用方法:

    1:先建好对应的数据库表和实体

    2:pom.xml文件中需要引入这三个东西,如果数据库改变了对应改变

        
            mysql
            mysql-connector-java
        

        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.0.3
        

        
            org.springframework.boot
            spring-boot-starter-freemarker
        

3:创建一个类。改类用于自动生成代码(我这里的类是CodeGenerator)

package com.sell.generator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CodeGenerator {

    /**
     * 

* 读取控制台内容 *

*/ public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("请输入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotEmpty(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setFileOverride(true); gc.setAuthor("yzd"); gc.setOpen(false); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); //自定义数据类型转换 dsc.setTypeConvert(new MySqlTypeConvert()); dsc.setUrl("jdbc:mysql://localhost:3306/sell?useUnicode=true&characterEncoding=utf-8&useSSL=false"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword(""); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); pc.setModuleName(scanner("模块名")); pc.setParent("com.sell"); mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; List focList = new ArrayList<>(); focList.add(new FileOutConfig("/templates/mapper.xml.ftl") { @Override public String outputFile(TableInfo tableInfo) { // 自定义输入文件名称 return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); mpg.setTemplate(new TemplateConfig().setXml(null)); // 策略配置 StrategyConfig strategy = new StrategyConfig(); //去除数据库表前缀 strategy.setTablePrefix(new String[]{"sys_", "or_"}); // 表名生成策略 strategy.setNaming(NamingStrategy.underline_to_camel); //strategy.setSuperEntityClass("com.liusong.miaojob.common.BaseEntity"); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); strategy.setInclude(scanner("表名")); strategy.setControllerMappingHyphenStyle(true); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }

4:运行代码生成类中的man方法,此时需要输入两个东西

          1:模块名称(注意只需要输入当前的模块名称,不需要写父级目录)

                  会在你输入的模块名称中自动生成对应文件和文件夹

                 mybatisPlus之逆向工程_第1张图片

          2:表名称(在数据库中对应的表名称)

 

 

出现的问题:

            1: freemarker.cache - TemplateLoader.findTemplateSource("templates/controller.java.ftl"): Found

                   这个问题是因为引入的jar包版本过低造成的

这个会出现问题    
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.3.RELEASE
        
    

解决问题
     
        org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASE
        
    

 

你可能感兴趣的:(数据库,Java-后端)