springboot项目Mybatis-Plus自动生产代码

1.pom.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.liuchao</groupId>
	<artifactId>plus</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>plus</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--========================================【核心-start】mybatis-plus==================================-->
		<!-- mybatisplus与springboot整合 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatisplus-spring-boot-starter</artifactId>
			<version>1.0.5</version>
		</dependency>
		<!-- MP 核心库 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- 模板引擎 代码生成 -->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>
		<!--=========================================【核心-end】mybatis-plus==================================-->
		<!--mysql连接-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!-- alibaba的druid数据库连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.9</version>
		</dependency>
		<!--热部署-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>

		<!-- tomcat插件 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<!-- <scope>provided</scope>-->
		</dependency>
		<!--AOP-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<!--lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!--==========================================================================================-->
		<!--公共工具类-->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.4</version>
		</dependency>
		<!-- log4j-->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<!--json-->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.6</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.6</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-joda</artifactId>
			<version>2.8.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.module</groupId>
			<artifactId>jackson-module-parameter-names</artifactId>
			<version>2.9.6</version>
		</dependency>
		<!-- 分页插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.5</version>
		</dependency>

		<!-- servlet 依赖包 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<!-- JSTL 的JSP 标准标签库 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<!-- shiro 核心 ==============================================================-->
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-core</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- shiro权限控制框架 -->
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- shiro缓存 -->
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-ehcache</artifactId>
			<version>1.3.2</version>
		</dependency>
	</dependencies>


	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<!--==============================以前的mybatis生产代码的老插件可以扔掉了============================-->
			<!--<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<configuration>
					<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
				<executions>
					<execution>
						<id>Generate MyBatis Artifacts</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>org.mybatis.generator</groupId>
						<artifactId>mybatis-generator-core</artifactId>
						<version>1.3.2</version>
					</dependency>
				</dependencies>
			</plugin>-->
		</plugins>
	</build>


</project>

2.设置springboot的配置文件application.yml(添加该段代码)

#设置xml文件生成的路径
mybatis-plus:
    mapper-locations: classpath:/mapper/*.xml
    type-aliases-package: com.liuchao.model
    configuration.cache-enabled: false
    global-config.db-config.db-type: mysql
    configuration.jdbc-type-for-null: null

3.使用生成代码工具类生成代码

package com.liuchao;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.apache.commons.lang.StringUtils;

import java.util.Scanner;

/**
 * @Program: mybatisplus
 * @Description:
 * @Author: liuchao
 * @Create: 2018-11-12 14:29
 * @Version 1.0
 **/
public class CodeGeneration {

    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.setAuthor("liuchao");//开发人员
                 gc.setOpen(true);//是否打开输出目录
                 gc.setServiceName("%sService");//service 命名方式
                 gc.setServiceImplName("%sServiceImpl");//service impl 命名方式
                 // 自定义文件命名,注意 %s 会自动填充表实体属性!
                 gc.setMapperName("%sMapper");
                 gc.setXmlName("%sMapper");
                 gc.setFileOverride(true);
                 gc.setActiveRecord(true);
                 gc.setEnableCache(false);// XML 二级缓存
                 gc.setBaseResultMap(true);// XML ResultMap
                 gc.setBaseColumnList(false);// XML columList
                 mpg.setGlobalConfig(gc);

                 // 数据源配置
                 DataSourceConfig dsc = new DataSourceConfig();
                  dsc.setDriverName("com.mysql.jdbc.Driver");
                  dsc.setUsername("liuchao");
                  dsc.setPassword("123");
                  dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test2?useSSL=false");
                 /*dsc.setUrl("jdbc:mysql://127.0.0.1:3306/xxxxx?useUnicode=true&useSSL=false&characterEncoding=utf8");
                 // dsc.setSchemaName("public"); 数据库 schema name
                 dsc.setDriverName("com.mysql.jdbc.Driver");
                 dsc.setUsername("root");
                 dsc.setPassword("******");*/
                 mpg.setDataSource(dsc);

                 // 包配置
                 PackageConfig pc = new PackageConfig();
                 //pc.setModuleName(scanner("模块名"));//父包模块名
                 pc.setParent("com.liuchao");//父包名。// 自定义包路径  如果为空,将下面子包名必须写全部, 否则就只需写子包名
                  pc.setController("controller");
                  pc.setService("service");
                  pc.setServiceImpl("service.impl");
                  pc.setXml("xml");
                 mpg.setPackageInfo(pc);

                 // 自定义配置
         /*        InjectionConfig cfg = new InjectionConfig() {
 77             @Override
 78             public void initMap() {
 79                 // to do nothing
 80             }
 81         };
 82         List<FileOutConfig> focList = new ArrayList<>();
 83         focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
 84             @Override
 85             public String outputFile(TableInfo tableInfo) {
 86                 // 自定义输入文件名称
 87                 return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
 88                         + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
 89             }
 90         });*/
          /*       cfg.setFileOutConfigList(focList);
 92         mpg.setCfg(cfg);*/
                 mpg.setTemplate(new TemplateConfig());

                 // 策略配置
                 StrategyConfig strategy = new StrategyConfig();
                 strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
                 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
               //  strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");//自定义继承的Entity类全称,带包名
                 strategy.setEntityLombokModel(true);//【实体】是否为lombok模型(默认 false)
                 //strategy.setRestControllerStyle(true);//生成 @RestController 控制器

                 //strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");//自定义继承的Controller类全称,带包名
                 strategy.setInclude("user","module","module_role","img_urls","movie_detail","movie_main","movie_type","role","user_role");//需要包含的表名,允许正则表达式
                 //strategy.setSuperEntityColumns("id");//自定义基础的Entity类,公共字段
                 strategy.setControllerMappingHyphenStyle(true);//驼峰转连字符
                 //strategy.setTablePrefix("tb_");//表前缀
                 mpg.setStrategy(strategy);
                 //mpg.setTemplateEngine(new FreemarkerTemplateEngine());
                 mpg.execute();
             }

}

4.生成之后的目录结构

猜你喜欢

转载自blog.csdn.net/qq_40943363/article/details/84064092