Mybatis Plus 코드 생 성기 의 실현

코드 생 성기
MyBatis Plus 는 MyBatis 의 확장 프레임 워 크 이 고 코드 생 성 기 는 MP 의 핵심 기능 중 하나 이 며'조건 부 구조 기'와'범용 CRUD'등의 기능 도 있다.
단계 시범
mp 의 코드 생 성 기 는 두 가지 방식 으로 코드 를 자동 으로 생 성 합 니 다.하 나 는 main 방법 으로 프로그램 을 실행 하 는 것 이 고 다른 하 나 는 Maven 플러그 인 build 를 통 해 생 성 됩 니 다.두 번 째 방법 은 pom.xml 에 대량의 설정 정 보 를 추가 해 야 하기 때문에 저 는 첫 번 째 방식 을 사용 하 는 경향 이 있 습 니 다.절 차 는 다음 과 같다.
1.my batis plus 의존 추가:
프로젝트 를 만 들 지 않 았 다 면 프로젝트 프로젝트 를 만 들 고 jar 패 키 지 를 프로젝트 의 classpath 에 의존 해 야 합 니 다.pom.xml 이 들 어 있 는 maven 프로젝트 라면 제 가 최근 에 사용 하고 있 는 springboot 프로젝트 와 같이 pom 의존 도 를 직접 추가 할 수 있 습 니 다.

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency>
연결:maven 중앙 라 이브 러 리,아 리 쿠
2.생 성기 주 클래스 만 들 기
공식 적 으로 제 시 된 인 스 턴 스 연결:코드 생 성기여기 제 가 정리 한 코드 를 붙 입 니 다.

package com.mht.springbootmybatis.generate;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
 
/**
 * <p>
 *        
 * </p>
 */
public class MpGenerator {
 
  /**
   * <p>
   * MySQL     
   * </p>
   */
  public static void main(String[] args) {
    AutoGenerator mpg = new AutoGenerator();
    //    freemarker   ,   Veloctiy
    mpg.setTemplateEngine(new FreemarkerTemplateEngine());
 
    //     
    GlobalConfig gc = new GlobalConfig();
    gc.setAuthor("Mht");
    gc.setOutputDir("D://workspace/spring-boot-mybatis/src/main/java");
    gc.setFileOverride(false);//         ,   false
    gc.setActiveRecord(true);//    ActiveRecord      false
    gc.setEnableCache(false);// XML     
    gc.setBaseResultMap(true);// XML ResultMap
    gc.setBaseColumnList(false);// XML columList
    /*        ,   %s           ! */
    // gc.setMapperName("%sDao");
    // gc.setXmlName("%sDao");
    // gc.setServiceName("MP%sService");
    // gc.setServiceImplName("%sServiceDiy");
    // gc.setControllerName("%sAction");
    mpg.setGlobalConfig(gc);
 
    //      
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setDbType(DbType.MYSQL);
    dsc.setTypeConvert(new MySqlTypeConvert() {
      //              【  】
      @Override
      public DbColumnType processTypeConvert(String fieldType) {
        System.out.println("    :" + fieldType);
        //   !!processTypeConvert         ,               、       。
        return super.processTypeConvert(fieldType);
      }
    });
    dsc.setDriverName("com.mysql.jdbc.Driver");
    dsc.setUsername("root");
    dsc.setPassword("root");
    dsc.setUrl("jdbc:mysql://localhost:3306/ease-run?useUnicode=true&characterEncoding=utf8");
    mpg.setDataSource(dsc);
 
    //     
    StrategyConfig strategy = new StrategyConfig();
    // strategy.setCapitalMode(true);//        ORACLE   
    strategy.setTablePrefix(new String[] { "user_" });//             
    strategy.setNaming(NamingStrategy.nochange);//       
    strategy.setInclude(new String[] { "user" }); //       
    // strategy.setExclude(new String[]{"test"}); //       
    //        
    // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
    //      ,    
    // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
    //     mapper   
    // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
    //     service   
    // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
    //     service      
    // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
    //     controller   
    // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
    // 【  】        (   false)
    // public static final String ID = "test_id";
    // strategy.setEntityColumnConstant(true);
    // 【  】        (   false)
    // public User setName(String name) {this.name = name; return this;}
    // strategy.setEntityBuilderModel(true);
    mpg.setStrategy(strategy);
 
    //    
    PackageConfig pc = new PackageConfig();
    pc.setParent("com.mht.springbootmybatis");
//    pc.setModuleName("test");
    mpg.setPackageInfo(pc);
 
    //        ,    VM     cfg.abc 【  】
//    InjectionConfig cfg = new InjectionConfig() {
//      @Override
//      public void initMap() {
//        Map<String, Object> map = new HashMap<String, Object>();
//        map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
//        this.setMap(map);
//      }
//    };
//
//    //     xxList.jsp   
//    List<FileOutConfig> focList = new ArrayList<>();
//    focList.add(new FileOutConfig("/template/list.jsp.vm") {
//      @Override
//      public String outputFile(TableInfo tableInfo) {
//        //          
//        return "D://my_" + tableInfo.getEntityName() + ".jsp";
//      }
//    });
//    cfg.setFileOutConfigList(focList);
//    mpg.setCfg(cfg);
//
//    //    xml       
//    focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
//      @Override
//      public String outputFile(TableInfo tableInfo) {
//        return "/develop/code/xml/" + tableInfo.getEntityName() + ".xml";
//      }
//    });
//    cfg.setFileOutConfigList(focList);
//    mpg.setCfg(cfg);
//
//    //      xml   ,          
//    TemplateConfig tc = new TemplateConfig();
//    tc.setXml(null);
//    mpg.setTemplate(tc);
 
    //        ,   copy    mybatis-plus/src/main/resources/templates       ,
    //         src/main/resources/templates    ,            ,          
    // TemplateConfig tc = new TemplateConfig();
    // tc.setController("...");
    // tc.setEntity("...");
    // tc.setMapper("...");
    // tc.setXml("...");
    // tc.setService("...");
    // tc.setServiceImpl("...");
    //                OR Null        。
    // mpg.setTemplate(tc);
 
    //     
    mpg.execute();
 
    //       【  】
//    System.err.println(mpg.getCfg().getMap().get("abc"));
  }
 
}
파일 은 기본적으로 가 져 와 서 직접 사용 할 수 있 지만,이 두 개의 코드 를 주의해 야 한다.

gc.setOutputDir("D://workspace/spring-boot-mybatis/src/main/java");//         

pc.setParent("com.mht.springbootmybatis");//    
다음 그림 은 제 프로젝트 의 경로 입 니 다.(코드 생 성 기 를 실행 한 후의 프로젝트 구조)

main 방법 을 실행 하기 전에 파일 을 생 성 할 때 템 플 릿 엔진 의 선택 이 필요 합 니 다.MyBatis Plus 의 기본 템 플 릿 엔진 은 velocity 입 니 다.우 리 는 freemarker 를 사용 할 수 있다.

<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
마지막 으로 main 방법 을 실행 하면 됩 니 다.
실행 콘 솔 은 다음 과 같 습 니 다:

코드 생 성 전에 데이터베이스 에 표 가 이미 존재 하 는 지 확인 하 십시오.
참고 글:
MyBatis Plus 코드 생 성기
MyBatis Plus 학습
my batis-plus 사고 지도,my batis-plus 더 이상 어렵 지 않 습 니 다.
Mybatis Plus 코드 생 성기 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Mybatis Plus 코드 생 성기 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기