1. 程式人生 > >mybatisPlus生成項目

mybatisPlus生成項目

web ets 新項目 base sources jdb tdi 指定 conf

記錄是為了更好的成長!

mybatisPlus生成工具,這裏以spgingBoot構建項目說明

1、引入jar

如果使用 https://start.spring.io/ 構建springBoot項目只需選 web 和 mysql即可,然後加入下面的依賴到pom文件中

     <!-- 阿裏巴巴druid數據庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId
> <version>1.1.10</version> </dependency> <!-- mybatisplus與springboot整合 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <
version>2.3</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency>

2、java文件

package com;

import java.util.ArrayList;
import java.util.List;

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.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * <p>
 * 代碼生成器演示
 * </p>
 */
public class MybatisPlusGenerator {

    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();
        
        /*
         * 配置路徑
         */
        String projectPath = System.getProperty("user.dir"); //獲取項目路徑
        String objPath = projectPath + "/src/main/java";     //獲取java目錄
        String parentPackage = "com";                         //配置包路徑
        
        /*
         * 全局配置
         */
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir            (objPath);            //配置路徑
        gc.setOpen                (false);            //是否打開生成的文件夾
        gc.setAuthor            ("author");            //author        
        /* 自定義文件命名,註意 %s 會自動填充表實體屬性! */
        gc.setMapperName        ("%sMapper");        //設置mapper接口後綴
        gc.setServiceName        ("%sService");        //設置Service接口後綴
        gc.setServiceImplName    ("%sServiceImpl");    //設置Service實現類後綴
        gc.setControllerName    ("%sController");    //設置controller類後綴
        gc.setXmlName            ("%sMapper");        //設置sql映射文件後綴
        gc.setFileOverride(true);                    // 是否覆蓋同名文件,默認是false
        gc.setActiveRecord(false);                    // 不需要ActiveRecord特性的請改為false
        gc.setEnableCache(false);                    // XML 二級緩存
        gc.setBaseResultMap(true);                    // XML ResultMap
        gc.setBaseColumnList(false);                // XML columList
        mpg.setGlobalConfig(gc);

        /*
         * 數據源配置
         */
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUrl("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true")
                .setUsername("root")
                .setPassword("root");
        mpg.setDataSource(dsc);
         
        /*
         * 策略配置
         */
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel)    // 表名生成策略
                .setRestControllerStyle(true)                    //設置controller自動加RestController註解
                //.setInclude(new String[] {"user"});            //修改替換成你需要的表名,多個表名傳數組,如果註釋掉就生成庫中所有的表
                //.setTablePrefix(new String[] { "t_" })        // 此處可以修改為您的表前綴
                ;        
        mpg.setStrategy(strategy);

        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(parentPackage)
               .setController("controller")
               /*.setService("service")            //服務接口
                .setServiceImpl("service.impl")        //服務實現
                .setMapper("mapper")                //dao層
                .setXml("mapper")                    //dao層對應的xml文件
                .setEntity("entity")*/;                //pojo對象
        mpg.setPackageInfo(packageConfig);
        
        // 自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        
        //自定義xml的存放路徑
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定義Mapper.xml文件存放的路徑
                return projectPath + "/src/main/resources/mappers/"
                        + tableInfo.getEntityName() + "Mapper.xml";
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        
        // 關閉默認 xml 生成,調整生成 至 根目錄
        mpg.setTemplate(new TemplateConfig().setXml(null));

        // 執行生成
        mpg.execute();
    }
}

3、運行java文件,刷新項目即可

4、啟動springBoot項目需要在啟動類加@MapperScan註解,指定mapper的目錄

5、生成的項目並不一定滿足我們的需要,需要自定義sql查詢,直接在生成的mapper接口和mapper映射文件中追加即可

註意:
     如果需要自定義sql語句,就必須要在配置文件中指定   mybatis-plus.mapper-locations=classpath:mappers/*.xml
                        不能寫成   mybatis.mapper-locaitons=classpath:mappers/*.xml

github示例: https://github.com/kh5218/DemoForSpringBoot/tree/master/mybatisplus

以上內容代表個人觀點,僅供參考,不喜勿噴。。。

mybatisPlus生成項目