0.2、Mybatis generator生成mapper (实战版 sringBoot+mysql+druid+generatorContext.xml)

1、自动生成Mapper等代码

Spring + Maven 环境下 Mybatis 自动生成代码配置
配置好插件和generatorConfig.xml 文件之后,有idea右边 Maven 模块点击对应的插件即可
在这里插入图片描述

添加 generatorConfig.xml 文件到项目中

注意路径,本文为 src/main/resources/generator/generatorConfig.xml

generatorConfig.xml 内容,涉及数据库驱动,数据库连接,Mapper,实体,xml 文件生成的配置信息,生成文件包路径可以自动创建:
如果使用.property作为配置文件,可以使用变量
    <properties resource="application.property"/>
     driverClass=" ${spring.datasource.driver}"
单module项目
	<?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">
	<generatorConfiguration>
		<!--可以制定本地jar,也可以直接在pom.xml中指定,这里我们采用在 pom 中指定 -->
		<!--
		<classPathEntry location="C:/Users/Administrator/Desktop/mybatis-generator/mysql-connector-java-5.1.7-bin.jar" />
		-->
		<context id="context">
		  <!-- 引入配置文件。
        "${java.vm.name}}"
        如果使用 yml 文件则不适用 -->
        <!-- <properties resource="application.property"/>-->
			<!-- 注释 -->
			<commentGenerator>  
	            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->  
	            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->  
	            <property name="addRemarkComments" value="true"/>
	        </commentGenerator>
	        
			<!-- JDBC连接 -->
			<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8" driverClass="com.mysql.jdbc.Driver" password="root" userId="root"></jdbcConnection>
			<!-- 类型转换 -->
			<javaTypeResolver>
				<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
				<property name="forceBigDecimals" value="false" />
			</javaTypeResolver>
			
			<!-- 生成实体类地址 -->    
	        <javaModelGenerator targetPackage="com.bestcxx.stu.springmybatis.model" targetProject="src/main/java">  
	            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
	            <property name="enableSubPackages" value="false" /> 
	            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
	            <property name="trimStrings" value="true"/>  
	        </javaModelGenerator>  
			
			<!-- 生成mapxml文件 -->  
			<sqlMapGenerator targetPackage="mybatis.mapper" targetProject="src/main/resources">
				<!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
				<property name="enableSubPackages" value="true" />
			</sqlMapGenerator>  
			
			<!-- 生成mapxml对应client,也就是接口dao -->      
	        <javaClientGenerator targetPackage="com.bestcxx.stu.springmybatis.dao" targetProject="src/main/java" type="XMLMAPPER">  
				<!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
				<property name="enableSubPackages" value="false" />
				<!--<property name="rootInterface" value="cn.acsm.farmeasy.order.core.dao.BaseDAO"/> -->
			</javaClientGenerator>
			
			<!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 -->  
			<!-- 已经生成实体类的表:-->  
	<!--         <table tableName="表名"  domainObjectName="驼峰格式实体名" module="order" enableCountByExample="false"      -->   
	         <table tableName="test2"  domainObjectName="Test2" enableCountByExample="false"     
	            enableDeleteByExample="false" enableSelectByExample="false"  enableUpdateByExample="false">  
	            <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample 是否生成 example类   -->  
	            <!-- 忽略列,不生成bean 字段   
	            <ignoreColumn column="FRED" />-->  
	            <!-- 指定列的java数据类型,比如枚举  
	            <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" javaType="com.bestcxx.stu.springmybatis.enums.Str3Enum" />-->  
	        </table>
	        
		</context>
	</generatorConfiguration>
多module项目

区别在于,targetProject 在多 module 时使用绝对路径
po 表示 持久化对象,直接对应表名的实体,如表名为 Article,则Mapper引用对象就叫Article,区别于领域驱动设计中的概念,领域实体以DO结尾,即ArticlelDO

<?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">
<generatorConfiguration>
    <!--可以制定本地jar,也可以直接在pom.xml中指定,这里我们采用在 pom 中指定 -->
    <!--
    <classPathEntry location="C:/Users/Administrator/Desktop/mybatis-generator/mysql-connector-java-5.1.7-bin.jar" />
    -->
    <context id="context">

        <!-- 引入配置文件。
        "${java.vm.name}}"
        如果使用 yml 文件则不适用 -->
        <!-- <properties resource="application.property"/>-->

        <!-- 注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!-- JDBC连接 -->
        <jdbcConnection
                connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8"
                driverClass="com.mysql.jdbc.Driver"
                password="root"
                userId="root">
        </jdbcConnection>

        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成实体类地址 -->
        <javaModelGenerator targetPackage="com.bestcxx.stu.simpled.infrastructure.mysql.po" targetProject="E:/gitWork/simpled/infrastructure/src/main/java">
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="false" />
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成mapxml文件 -->
        <sqlMapGenerator targetPackage="mybatis.mapper" targetProject="E:/gitWork/simpled/starter/src/main/resources">
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成mapxml对应client,也就是接口dao -->
        <javaClientGenerator targetPackage="com.bestcxx.stu.simpled.infrastructure.mysql.mapper" targetProject="E:/gitWork/simpled/infrastructure/src/main/java" type="XMLMAPPER">
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="false" />
            <!--<property name="rootInterface" value="cn.acsm.farmeasy.order.core.dao.BaseDAO"/> -->
        </javaClientGenerator>

        <!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 -->
        <!-- 已经生成实体类的表:-->
        <!--         <table tableName="表名"  domainObjectName="驼峰格式实体名" module="order" enableCountByExample="false"      -->
        <table tableName="article"  domainObjectName="ArticlePO" enableCountByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"  enableUpdateByExample="false">
            <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample 是否生成 example类   -->
            <!-- 忽略列,不生成bean 字段
            <ignoreColumn column="FRED" />-->
            <!-- 指定列的java数据类型,比如枚举
            <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" javaType="com.bestcxx.stu.springmybatis.enums.Str3Enum" />-->
            <!-- tinyint 映射为 Integer 类型 -->
            <columnOverride column="active_status" property="activeStatus" javaType="java.lang.Integer" />
        </table>

    </context>
</generatorConfiguration>
在启动项目的 pom.xml 中添加 Maven 插件 配置

指定了 generatorConfig.xml 的路径

	<build>
		...
			<plugins>
			...
		           <plugin>
	                <groupId>org.mybatis.generator</groupId>
	                <artifactId>mybatis-generator-maven-plugin</artifactId>
	                <version>1.3.2</version>
	                <configuration>
	                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
	                    <!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 -->
	                    <overwrite>true</overwrite>
	                    <verbose>true</verbose>
	                </configuration>
                <dependencies>
                    <!--mysql驱动包-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.45</version>
                    </dependency>
                </dependencies>
	            </plugin>
	   
	    </plugins>  
	  </build>
在启动项目运行 mybatis-generator:generate ,生成代码

允许一次生成多个表的对应代码,如果使用 Spring Boot 可以直接在项目上运行 Mybatis 自动生成代码的程序
完整的命令行是 mvn:mybatis-generator:generate,这是一个 Maven 命令,如果直接在 Eclipse 中运行,使用 mybatis-generator:generate即可。

2、SpringBoot 整合 Mybatis
Maven 依赖
<!--是web项目-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--不是web项目-->
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
  
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.22</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
yml 增加配置内容
第一种

可以参考 https://github.com/Bestcxy/bestcxx-thread-mysql-sentinel/blob/master/src/main/resources/application.yml

spring:
  #数据库相关
  datasource :
    type : com.alibaba.druid.pool.DruidDataSource
    #更多配置参考 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
    druid:
      url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      #开启sql语句自动加载,只认识名为: schema-all.sql和schema.sql和data-all.sql和data.sql的sql语句
      #    initialization-mode: always

      #   数据源其他配置
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall

      #配置监控属性: 在druid-starter的: com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置
      web-stat-filter: # WebStatFilter配置,
        enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
        url-pattern: /* #拦截该项目下的一切请求
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico  #对这些请求放行
        session-stat-enable: true
        principal-session-name: session_name
        principal-cookie-name: cookie_name

      stat-view-servlet: # StatViewServlet配置
        enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
        url-pattern: /druid/*  #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
        reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
        login-username: admin #监控页面登录的用户名
        login-password: 123456 #监控页面登录的密码
        allow: 127.0.0.1,192.168.2.111  #IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。
        deny:  #IP黑名单 (存在共同时,deny优先于allow)。不允许谁进行访问druid后台,
      #Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
      #aop-patterns查看 https://shentuzhigang.blog.csdn.net/article/details/115103677
      #aop-patterns: "com.bestcxx.stu.blog.broker.service.*,com.bestcxx.stu.blog.broker.repository.mysql.dao.*"

      #自定义sql文件名,点进去后这个是一个list
      schema:
        - classpath:department.sql #可以指定多个文件
#mybatis 相关
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  type-aliases-package: com.bestcxx.stu.simpled.infrastructure.mysql.po
第二种
spring:
    #数据库相关
    datasource:
      type: com.alibaba.druid.pool.DruidDataSource
      #更多配置参考 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
      url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      #driver-class-name: com.mysql.jdbc.Driver
      #开启sql语句自动加载,只认识名为: schema-all.sql和schema.sql和data-all.sql和data.sql的sql语句
      #    initialization-mode: always

      #   数据源其他配置
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall

      #配置监控属性: 在druid-starter的: com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置
      web-stat-filter: # WebStatFilter配置,
        enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
        url-pattern: /* #拦截该项目下的一切请求
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico  #对这些请求放行
        session-stat-enable: true
        principal-session-name: session_name
        principal-cookie-name: cookie_name

      stat-view-servlet: # StatViewServlet配置
        enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
        url-pattern: /druid/*  #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
        reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
        login-username: admin #监控页面登录的用户名
        login-password: 123456 #监控页面登录的密码
        allow: 127.0.0.1,192.168.2.111  #IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。
        deny:  #IP黑名单 (存在共同时,deny优先于allow)。不允许谁进行访问druid后台,
      #Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
      #aop-patterns查看 https://shentuzhigang.blog.csdn.net/article/details/115103677
      #aop-patterns: "com.bestcxx.stu.blog.broker.service.*,com.bestcxx.stu.blog.broker.repository.mysql.dao.*"

      #自定义sql文件名,点进去后这个是一个list
      schema:
      #- classpath:department.sql #可以指定多个文件

#mybatis 相关
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  type-aliases-package: com.bestcxx.stu.simpled.infrastructure.mysql.po
启动类修改
扫描 Mapper

这样就不用在 Mapper 类上加 @Repository 注解了

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = "com.bestcxx.stu.simpled.*")
@MapperScan("com.bestcxx.stu.simpled.infrastructure.mysql.mapper")
public class StarterApplication {
    public static void main(String[] args) {
        SpringApplication.run(StarterApplication.class, args);
    }
}
SpringBoot 默认开启了事务

当然你可以显示的使用下面内容

@EnableTransactionManagement

在Service层使用事务

  • 对于普通查询

@Transactional(readOnly=true,isolation=Isolation.READ_COMMITTED,
propagation=Propagation.SUPPORTS,rollbackFor=Exception.class)
  • 对于普通新增或者修改

mysql 默认是 Isolation.REPEATABLE_READ,Propagation.REQUIRED

@Transactional(readOnly=false,isolation=Isolation.READ_COMMITTED,
propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
  • 一个例子

一定要抛出异常才能回滚,rollbackFor 默认只有 RuntimeException.class.,所以也要注明 rollBackFor

@Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    @Override
    public int insert(Article article) throws Exception{
        int result = articleMapper.insert(article);
        if(result != 1){
            throw new Exception("保存失败");
        }
        return result;
    }
测试
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class BaseTest {
}
import com.bestcxx.stu.blog.BaseTest;
import com.bestcxx.stu.blog.broker.repository.mysql.dao.ArticleMapper;
import com.bestcxx.stu.blog.broker.repository.mysql.model.Article;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Date;

public class ArticleMapperTest extends BaseTest {

    @Autowired
    private ArticleMapper articleMapper;

    @Test
    public void testInsert(){
        Article article = new Article();
        article.setContent("测试内容");
        article.setCreateTime(new Date());
        article.setTilte("测试title");
        article.setUpdateTime(new Date());
        int result = articleMapper.insert(article);
        Assert.assertEquals(1,result);
    }
}
3、实践积累
tinyint 转化为 Byte/Boolean 问题 (mybatis generatorConfig 自动生成Java文件)

详细可以参考 解决tinyint映射成boolean/byte的问题

简单来说,最佳实践就是

tinyint(1)默认为 Boolean
tinyint默认为tinyint (3), 默认为 Byte ,Java 8种基本类型为 byte、short、int、long、float、double、char、boolean
tinyint期望转化为 Integer ,可以按照下面操作 < columnOverride column=“demo_status” property=“demoStatus” javaType=“java.lang.Integer” />
Spring Boot整合MyBatis-Plus可以通过使用代码生成器来自动生成CRUD代码。下面是使用步骤: 1. 首先,在pom.xml文件中添加MyBatis-Plus和相关依赖: ```xml <!-- MyBatis-Plus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新本号</version> </dependency> <!-- MyBatis-Plus代码生成器依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>最新本号</version> </dependency> ``` 2. 创建一个配置类来配置代码生成器: ```java @Configuration public class MyBatisPlusConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${mybatis-plus.package}") private String packageName; @Value("${mybatis-plus.author}") private String author; @Value("${mybatis-plus.table-prefix}") private String tablePrefix; @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setDriverClassName(driverClassName); return dataSource; } @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setAuthor(author); globalConfig.setOpen(false); return globalConfig; } @Bean public DataSourceConfig dataSourceConfig() { DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL); dataSourceConfig.setDriverName(driverClassName); dataSourceConfig.setUsername(username); dataSourceConfig.setPassword(password); dataSourceConfig.setUrl(url); return dataSourceConfig; } @Bean public PackageConfig packageConfig() { PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent(packageName); packageConfig.setEntity("entity"); packageConfig.setMapper("mapper"); packageConfig.setService("service"); packageConfig.setServiceImpl("service.impl"); packageConfig.setController("controller"); return packageConfig; } @Bean public StrategyConfig strategyConfig() { StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setEntityColumnConstant(true); strategyConfig.setEntityLombokModel(true); strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setInclude("表名1", "表名2"); // 生成指定的表 strategyConfig.setRestControllerStyle(true); strategyConfig.setTablePrefix(tablePrefix); // 设置表前缀 return strategyConfig; } @Bean public TemplateConfig templateConfig() { TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setController(null); // 不生成controller层 return templateConfig; } @Bean public InjectionConfig injectionConfig() { Map<String, Object> map = new HashMap<>(); return new InjectionConfig() { @Override public void initMap() { this.setMap(map); } }; } @Bean public AutoGenerator autoGenerator() { AutoGenerator autoGenerator = new AutoGenerator(); autoGenerator.setGlobalConfig(globalConfig()); autoGenerator.setDataSource(dataSourceConfig()); autoGenerator.setPackageInfo(packageConfig()); autoGenerator.setStrategy(strategyConfig()); autoGenerator.setTemplate(templateConfig()); autoGenerator.setCfg(injectionConfig()); return autoGenerator; } } ``` 3. 在application.properties或application.yml文件中配置相关信息: ```properties # 数据源配置 spring.datasource.url=数据库URL spring.datasource.username=数据库用户名 spring.datasource.password=数据库密码 spring.datasource.driver-class-name=数据库驱动类名 # MyBatis-Plus配置 mybatis-plus.package=你的包路径 mybatis-plus.author=代码作者名 mybatis-plus.table-prefix=表前缀 ``` 4. 创建一个启动类,添加@SpringBootApplication和@EnableAutoConfiguration注解,并在main方法中调用代码生成生成代码: ```java @SpringBootApplication @EnableAutoConfiguration public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); // 调用代码生成生成代码 ApplicationContext context = SpringApplication.run(MyApplication.class, args); AutoGenerator autoGenerator = context.getBean(AutoGenerator.class); autoGenerator.execute(); } } ``` 5. 运行启动类,执行代码生成器。生成代码将包含实体类、Mapper接口、Service接口、Service实现类和Controller类。 这样就能根据数据库表自动生成CRUD代码了。如果需要生成其他的代码,可以根据需要配置生成器相应的参数和模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值