How pleasant to use mybatis

  1. mybatis-generator+plugins

Separate generator is inevitable all artificial, with a variety of plug-ins is not, thanks to the project
itfsw / mybatis-generator-plugin

Use as follows:

pom.xml

    <dependencies>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${springboot.mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>com.itfsw</groupId>
            <artifactId>mybatis-generator-plugin</artifactId>
            <version>${mybatis.generator.itfsw.version}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>qna-deploy</finalName>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${mybatis.generator.version}</version>
                <dependencies>
                    <dependency>
                        <groupId> mysql</groupId>
                        <artifactId> mysql-connector-java</artifactId>
                        <version> 5.1.39</version>
                    </dependency>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>${mybatis.generator.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>com.itfsw</groupId>
                        <artifactId>mybatis-generator-plugin</artifactId>
                        <version>${mybatis.generator.itfsw.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--允许移动生成的文件 -->
                    <verbose>true</verbose>
                    <!-- 是否覆盖 -->
                    <overwrite>true</overwrite>
                    <!-- 自动生成的配置 -->
                    <configurationFile>
                        src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>

mybatis-generator.xml Here I have selected some plug-profiles according to the situation of my own projects, more plug-ins can see github link given above.

<?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>
    <!--数据库驱动-->
    <!--<classPathEntry    location="mysql-connector-java-5.1.16-bin.jar"/>-->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 查询单条数据插件(selectOne) -->
        <plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/>
        <!-- Example Criteria 增强插件(可以使用.example()方法) -->
        <plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/>
        <!-- 数据Model属性对应Column获取插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
        <!-- 批量插入插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"/>
        <!-- 存在即更新插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.UpsertPlugin">
            <!--
            支持upsertByExample,upsertByExampleSelective操作
            !需开启allowMultiQueries=true多条sql提交操作,所以不建议使用!插件默认不开启
            -->
            <property name="allowMultiQueries" value="false"/>
            <!--
            开启批量功能,支持batchUpsert,batchUpsertWithBLOBs,batchUpserSelective
            !这几个方法中无法支持IncrementsPlugin的方法!插件默认不开启
            -->
            <property name="allowBatchUpsert" value="true"/>
        </plugin>
        <!-- Lombok插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin">
            <!-- @Data 默认开启,同时插件会对子类自动附加@EqualsAndHashCode(callSuper = true),@ToString(callSuper = true) -->
            <property name="@Data" value="true"/>
            <!-- @Builder 必须在 Lombok 版本 >= 1.18.2 的情况下开启,对存在继承关系的类自动替换成@SuperBuilder -->
            <property name="@Builder" value="false"/>
            <!-- @NoArgsConstructor 和 @AllArgsConstructor 使用规则和Lombok一致 -->
            <property name="@AllArgsConstructor" value="true"/>
            <property name="@NoArgsConstructor" value="true"/>
            <!-- @Getter、@Setter、@Accessors 等使用规则参见官方文档 -->
            <property name="@Accessors(chain = true)" value="false"/>
            <!-- 临时解决IDEA工具对@SuperBuilder的不支持问题,开启后(默认未开启)插件在遇到@SuperBuilder注解时会调用ModelBuilderPlugin来生成相应的builder代码 -->
            <property name="supportSuperBuilderForIdea" value="false"/>
        </plugin>
        <!-- 状态枚举生成插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.EnumTypeStatusPlugin"/>
        <!-- Mapper注解插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.MapperAnnotationPlugin">
            <!-- @Mapper 默认开启 -->
            <property name="@Mapper" value="true"/>
            <!-- @Repository 默认关闭,开启后解决IDEA工具@Autowired报错 -->
            <property name="@Repository" value="true"/>
        </plugin>
        <!-- Example 目标包修改插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin">
            <!-- 修改Example类生成到目标包下 -->
            <property name="targetPackage" value="com.huya.qna.entity.example"/>
        </plugin>
        <!-- 逻辑删除插件 -->
        <plugin type="com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin">
            <!-- 这里配置的是全局逻辑删除列和逻辑删除值,当然在table中配置的值会覆盖该全局配置 -->
            <!-- 逻辑删除列类型只能为数字、字符串或者布尔类型 -->
            <property name="logicalDeleteColumn" value="is_del"/>
            <!-- 逻辑删除-已删除值 -->
            <property name="logicalDeleteValue" value="1"/>
            <!-- 逻辑删除-未删除值 -->
            <property name="logicalUnDeleteValue" value="0"/>
            <!-- 是否生成逻辑删除常量(只有开启时 logicalDeleteConstName、logicalUnDeleteConstName 才生效) -->
            <property name="enableLogicalDeleteConst" value="true"/>
            <!-- 逻辑删除常量名称,不配置默认为 IS_DELETED -->
            <property name="logicalDeleteConstName" value="IS_DELETED"/>
            <!-- 逻辑删除常量(未删除)名称,不配置默认为 NOT_DELETED -->
            <property name="logicalUnDeleteConstName" value="NOT_DELETED"/>
        </plugin>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接地址账号密码-->
        <!--        added by [email protected]:在本地generate相关代码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://00.00.00.00:3306/db_name?useUnicode=true&amp;useSSL=false"
                        userId="balabalabala" password="balabalabala">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model类存放位置-->
        <javaModelGenerator targetPackage="com.huya.qna.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成xml文件存放位置-->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
        <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Mapper类存放位置,可选纯注解模式或使用配置文件模式-->
<!--        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.huya.qna.mapper"-->
<!--                             targetProject="src/main/java">-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.huya.qna.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--生成对应表及类名-->
        <table tableName="qna_history" domainObjectName="History"
               enableInsert="true"
               enableSelectByPrimaryKey="true"
               enableSelectByExample="true"
               enableUpdateByPrimaryKey="true"
               enableUpdateByExample="true"
               enableDeleteByPrimaryKey="true"
               enableDeleteByExample="true"
               enableCountByExample="true"
               selectByExampleQueryId="false">
            <!--插入此配置则insert后自动填充主键-->
            <generatedKey column="id" sqlStatement="MySql" identity="true"/>
        </table>
    </context>
</generatorConfiguration>

About this configuration file has a few points:

  1. If you want to use github plug-in, you must use the configuration file annotation mode mode instead.
  2. automatically set the primary key table fill that is written directly to the appropriate object.
  3. No resetting table type categories, in fact, after use categories are not kept separate plug, BLOBS only generates a corresponding operation mode class, must be used with non-BLOBS field method can not get categories.

After that, in the spring configuration file

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

If Druid, will have to follow the configuration druid, temporarily slightly, after detailed

Guess you like

Origin www.cnblogs.com/cielosun/p/11365252.html