mybatis-plus 代码生成器的实战 自动生成代码

        项目中,通过mybatis-generator插件自动生成代码,直接构建出项目全面的基本结构。例如常用的POJO,DAO,Service,Service实现类,Controller层以及mapper.xml文件;进而达到快速开发的目的; 下面介绍两种方式实现,基本相同,写法不同而已;

1. 使用插件+ xml配置        

引入pom插件
 

<plugin>
   <!--Mybatis-generator插件,用于自动生成Mapper和POJO -->
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.2</version>
   <configuration>
      <!--配置文件的位置 -->
      <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
      <verbose>true</verbose>
      <overwrite>true</overwrite>
   </configuration>
   <executions>
   </executions>
</plugin>

generatorConfig.xml 配置文件

<?xml  version="1.0" encoding="UTF-8"?>  
<!DOCTYPE generatorConfiguration  
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- 自动生成mybatis相关类文件  -->
<generatorConfiguration>
	<!-- classPathEntry:数据库的JDBC驱动的jar包地址 -->
	<!--<classPathEntry location="?\mysql-connector-java-5.1.47.jar"/>-->
	<context id="DB2Tables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
			<!-- 数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		</commentGenerator>
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="数据库地址"
			userId="xxx" password="xxx">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- targetProject:自动生成代码的位置 -->
		<javaModelGenerator targetPackage="com.xxx.entity"
			targetProject="src/main/java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="true" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<sqlMapGenerator  targetPackage="mapper" targetProject="src/main/resources">
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>

		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.xxx.mapper" targetProject="src/main/java">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->


		<!-- 表-->
		<table schema="xxx" tableName="xxx"
			   domainObjectName="xxx">
		</table>

	</context>

</generatorConfiguration>   

 运行这个maven插件就可以了

 

2 .java文件实现

引入pom

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

 可执行的java文件

package com.xxx;

import com.baomidou.mybatisplus.annotation.DbType;
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.NamingStrategy;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;

public class MyBatisPlusGenerator {


    @Test
    public void generator() {
        // 具体项目的绝对路径
        String projectPath = "E:/WorkingSpace/xxx/xxx/";
        // 生成mapper  .xml 文件  地址的路径
        String mapperPath = projectPath + "src/main/resources/mappers/";
        // 项目代码路径
        String srcPath = projectPath + "src/main/java";

        GlobalConfig config = new GlobalConfig();
        // 数据库地址
        String dbUrl = "jdbc:mysql://xxx";
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername("xxx")
                .setPassword("xxx")
                .setDriverName("com.mysql.cj.jdbc.Driver");

        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(false)
                .setEntityLombokModel(false)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(new String[]{"表名称"})
                //.setLogicDeleteFieldName("is_delete")
                .setTablePrefix("表前缀")
                .setEntityLombokModel(true);

        config.setActiveRecord(true)
                .setAuthor("xxx")
                .setOutputDir(srcPath)
                .setFileOverride(true)
                .setBaseResultMap(true)
                .setEnableCache(false)
                .setServiceName("%sService")
                .setServiceImplName("%sServiceImpl")
                .setMapperName("%sDao")
                .setXmlName("%sMapper")
                .setOpen(false);

        InjectionConfig cfg = new InjectionConfig() {

            @Override
            public void initMap() {
            }
        };

        List<FileOutConfig> foc = new ArrayList<>();
        foc.add(new FileOutConfig("/templates/mapper.xml.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return mapperPath + tableInfo.getXmlName() + ".xml";
            }
        });

        cfg.setFileOutConfigList(foc);

        TemplateConfig tc = new TemplateConfig();
        // 根据需要生成文件 设置null即不生成对应文件
        //       tc.setController(null);
        tc.setXml(null);
//        tc.setEntity(null);

        AutoGenerator ag = new AutoGenerator();

        ag.setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(new PackageConfig()
                        // 父层路径
                        .setParent("com.xxx")
                        .setEntity("domain")
                        .setMapper("dao")
                )
                .setCfg(cfg)
                .setTemplate(tc)
                .execute();
    }

}

 直接运行就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值