Mybatis generator自动生成实体类及Mapper(集成TkMybatis、Lombok、Swagger)

引用依赖文件

修改项目对应pom.xml文件,增加mybatis generator依赖

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

配置maven生成命令

在pom.xml中增加build结点,并且通过mybatis逆向工程,配置插件支持自动生成命令

<build>
	<plugins>
		<plugin>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-maven-plugin</artifactId>
			<version>1.3.6</version>
			<dependencies>
				<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>8.0.11</version>
				</dependency>
				<dependency>
					<groupId>tk.mybatis</groupId>
					<artifactId>mapper-spring-boot-starter</artifactId>
					<version>2.1.5</version>
				</dependency>
	
				<dependency>
					<groupId>tk.mybatis</groupId>
					<artifactId>mapper</artifactId>
					<version>4.1.5</version>
				</dependency>
			</dependencies>
			<configuration>
				<!--允许移动生成的文件 -->
				<verbose>true</verbose>
				<!-- 是否覆盖 -->
				<overwrite>true</overwrite>
				<!-- 自动生成的配置 -->
				<configurationFile>
					src/main/resources/generator/generator-config.xml
				</configurationFile>
			</configuration>
		</plugin>
	</plugins>
</build>

支持Lombok

新建类 MyBatisPlugin 继承 PluginAdapter

public class MyBatisPlugin extends PluginAdapter {

    @Override
    public boolean validate(List<String> list) {
        return true;
    }

    @Override
    public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
    	// 配置开关,是否启用lombok注释
        boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
        System.out.println("hasLombok" + hasLombok);
        if (hasLombok) {
            // 添加domain的import
            topLevelClass.addImportedType("lombok.Data");

            // 添加domain的注解
            topLevelClass.addAnnotation("@Data");
        }
        return true;
    }

    @Override
    public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        // 添加Mapper的import
        interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));

        // 添加Mapper的注解
        interfaze.addAnnotation("@Mapper");
        return true;
    }

    @Override
    public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
                                              IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        // 不生成getter
        boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
        return !hasLombok;
    }

    @Override
    public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
                                              IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        // 不生成setter
        boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
        return !hasLombok;
    }
}

generator config配置文件

在resource目录下面,新建generator-config.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">

<generatorConfiguration>
    <!--mysql 连接数据库jar 这里选择自己本地位置-->
    <context id="MysqlContext" targetRuntime="MyBatis3">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!-- 指定生成 Mapper 的继承模板 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
        	<!-- 配置Mapper需要集成的基类,这边是我重新封装的Mapper类,如果不需要则配置默认的都Mapper -->
            <property name="mappers" value="com.tbb.idp.mapper.TkBaseMapper"/>
        </plugin>

        <!-- 支持lombok注释, 去掉set,get方法-->
        <plugin type="com.tbb.idp.config.MyBatisPlugin" >
            <property name="hasLombok" value="true"/>
        </plugin>

        <!-- 自动为entity生成swagger2文档-->
        <plugin type="com.tbb.idp.mybatis.plugins.GeneratorSwagger2Doc">
            <property name="apiModelAnnotationPackage" value="io.swagger.annotations.ApiModel"/>
            <property name="apiModelPropertyAnnotationPackage" value="io.swagger.annotations.ApiModelProperty"/>
        </plugin>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 数据库连接配置 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/idp-shop"
                        userId=""
                        password="">
            <!--  设置可以获取tables remarks信息 -->
            <property name="useInformationSchema" value="true"/>
            <!-- 设置可以获取remarks信息 -->
            <property name="remarks" value="true"/>
        </jdbcConnection>

        <!-- 生成实体类 -->
        <javaModelGenerator targetPackage="com.tbb.idp.entity" targetProject="src/main/java">
            <property name="trimStrings" value="false"/>
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>

        <!-- 生成mapper对应xml -->
        <sqlMapGenerator targetPackage="mapperXml" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成mapper文件 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.tbb.idp.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 指定生成的表 -->
        <!-- 因为TkMybatis已经支持基础操作,因此不再需要对应Example方法,所以去掉生成 -->
        <table tableName="test_a" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false" >
            <generatedKey column="test" sqlStatement="Mysql" identity="true" type="post"/>
        </table>
    </context>
</generatorConfiguration>

生成方式

打开idea的Maven窗口,选择对应的项目之后,选择 Plugins -> mybatis-generator -> mybatis-generator:generate
双击之后等待一会,即可在上面配置的对应目录下面生成文件,例如src/main/entity下面生成实体类

生成结果

@ApiModel(value="测试")
@Table(name = "test_a")
@Data
public class TestA {
    /**
     * id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @ApiModelProperty(name = "test",value ="id")
    private Integer test;

    /**
     * 名字
     */
    @Column(name = "name_a")
    @ApiModelProperty(name = "nameA",value ="名字")
    private String nameA;

    /**
     * 金额
     */
    @ApiModelProperty(name = "balance",value ="金额")
    private BigDecimal balance;
}
您好!对于自动生成实体类mapper的问题,可以考虑使用MyBatis Generator插件来实现。MyBatis Generator是一个官方支持的代码生成工具,可以根据数据库表结构自动生成实体类mapper接口。 以下是一些简单的步骤来使用MyBatis Generator插件来生成实体类mapper: 1. 首先,您需要在您的项目中引入MyBatis Generator插件的依赖。您可以在pom.xml文件(如果您使用Maven)或build.gradle文件(如果您使用Gradle)中添加相应的依赖。 2. 接下来,编写一个MyBatis Generator的配置文件(一般命名为generatorConfig.xml),用于定义生成实体类mapper的规则。配置文件中包含了数据库连接信息、要生成的表、生成的目标包等信息。 3. 在配置文件中,您可以配置生成的实体类的规则,例如是否使用Lombok注解、是否生成对应字段的getters和setters等。 4. 配置好generatorConfig.xml文件后,您可以执行MyBatis Generator插件来生成实体类mapper。一般情况下,可以通过命令行或者IDE中的插件来执行。 5. 执行成功后,您将在指定的目标包中看到生成的实体类mapper接口。这些文件将根据您在配置文件中定义的规则生成。 需要注意的是,使用MyBatis Generator插件生成的实体类mapper只是初始化的代码,您仍然需要根据需要进行调整和扩展。 希望以上信息对您有所帮助!如有更多问题,请继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值