Skip to the content.

王孝东的个人空间

MyBatis

MyBatis Generator with maven plugin

在maven中引入MyBatis Generator插件,在命令行中直接执行命令即可生产MyBatis的相关DAO,Model以及Mapper文件

<project>
    ...
    <build>
    ...
    <plugins>
    ...
    <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.5</version>
        <!-- 增加jdbc驱动,根据MySQL或者Oracle选择合适的驱动,这里指定了依赖,就不需要在generatorConfig.xml中指定 -->
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.39</version>
            </dependency>
        </dependencies>
    </plugin>
    ...
    </plugins>
    ...
    </build>
    ...
</project>

加入mybatis-generator-maven-plugin之后,可以执行如下命令:

mybatis-generator-maven-plugin插件的默认配置文件为src/main/resource/generatorConfig.xml,如果要使用其他文件,需要在插件中指定configuration配置项,示例内容如下:

<?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>
    <context id="WechatPublicPrinting">

        <!-- 生成的Java文件的编码 -->
        <property name="javaFileEncoding" value="UTF-8" />

        <!-- 格式化java代码 -->
        <property name="javaFormatter"
                  value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />
        <!-- 格式化XML代码 -->
        <property name="xmlFormatter"
                  value="org.mybatis.generator.api.dom.DefaultXmlFormatter" />

        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
            <property name="searchString" value="Example$" />
            <property name="replaceString" value="Criteria" />
        </plugin>

        <!-- 去除自动生成的注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
            <property name="suppressDate" value="true" />
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/spring_demo"
                        userId="root" password="123456" />

        <!-- 数据表对应的model 层 -->
        <javaModelGenerator targetPackage="org.wxd.mybatis.bean"
                            targetProject="./src/main/java">
        </javaModelGenerator>

        <!-- sql mapper 映射配置文件 -->
        <sqlMapGenerator targetPackage="org.wxd.mybatis.bean" targetProject="./src/main/java" />

        <!-- 生成DAO对象 -->
        <javaClientGenerator targetPackage="org.wxd.mybatis.dao"
                             targetProject="./src/main/java" type="XMLMAPPER">
        </javaClientGenerator>

        <table tableName="host" ></table>
    </context>
</generatorConfiguration>

MyBatis常用技巧

MyBatis-Plus

  1. MyBatis-Plus是一个MyBatis的增强框架,在MyBatis的基础上只做增强,不做改变:
    • 无侵入,只做增强,不做改变,因此可以直接引入,而不会对原有的MyBatis代码产生任何影响
    • 强大的CRUD操作,内置通用Mappper, 通用Service, 以及强大的条件构造器Wrapper, 可以满足各类需求
    • 内置代码生成器
    • 内置分页插件
  2. 基于Spring Boot引入MyBatis-Plus
    <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.3.0</version>
    </dependency>
    
  3. 继承PageHelper,有时项目中可能已经使用了PageHelper分页组件,这时需要引入MyBatis-Plus时需要排除冲突包,否则无法启动
    <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
    
    <dependency>
       <groupId>com.github.pagehelper</groupId>
       <artifactId>pagehelper-spring-boot-starter</artifactId>
       <exclusions>
           <exclusion>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis</artifactId>
           </exclusion>
           <exclusion>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis-spring</artifactId>
           </exclusion>
       </exclusions>
    </dependency>