程序员

JAVA中MyBatis Generator配置

2018-02-06  本文已影响0人  1994_老叶

在日常的Java程序编写中,我们经常与数据库打交道,然而原生的JDBC库对数据库进行增删查改太过繁琐,需要手动设置参数和提取参数,mybatis是一个优秀的持久层的框架,用注解和xml文件基本上能搞定业务需要的增删查改。
在这里,我主要介绍一个MyBatis生成Java代码的自动化插件。
我使用的是IntelliJ IDEA这个编译器。

1.idea中安装插件

基本流程是:File>>setting>>plugins>>搜索mybatis


mybatis.PNG

图中显示的插件是我已经安装好了的。一般情况下会提示:"no plugins found,Search in repositories.",后面的一句话是超链接,点击即可看到mybatis相关的插件,安装我们需要的插件即可,如果安装不下来,那么就需要你“翻墙”。或者自行百度下载插件安装。

2.pom中引入依赖

我主要引入这个几个依赖:

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

还有在plugins标签内加入Generator的插件

  <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

完整的pom文件内容我在文章最下方展示,其中的一些依赖是我其他代码所需要的。

3.generator的配置文件

<?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:数据库的JDBC驱动的jar包地址 -->
    <classPathEntry
            location="C:\Users\87728\.m2\mysql\mysql-connector-java\5.1.43\mysql-connector-java-5.1.43.jar"/>
    <!--id中的属性随便取,targetRuntime:MyBatis3是默认值,一般不会改变,defaultModelType属性比较多,应该百度一下 -->
    <context id="mysql" targetRuntime="MyBatis3"
             defaultModelType="flat">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
            <!-- <property name="suppressDate" value="true" /> -->
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        </commentGenerator>
        <!--数据库连接的属性,一个context中只能有一个-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/user"
                        userId="root" password="123456">
        </jdbcConnection>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 数据库表对应的实体类生成的位置 targetProject:自动生成代码的位置 -->
        <javaModelGenerator targetPackage="MySql.entity"
                            targetProject="D:\myworkplace\MyUtil\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--mapper的xml文件生成的位置-->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="D:\myworkplace\MyUtil\src\main\resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!--mapper类生成的位置-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="MySql.mapper" targetProject="D:\myworkplace\MyUtil\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <!-- <property name="rootInterface" value="BaseSngPKMapper" /> -->
        </javaClientGenerator>
        <!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->


        <table tableName="user_info" domainObjectName="User"
               enableDeleteByExample="false" enableCountByExample="false"
               enableDeleteByPrimaryKey="false" enableSelectByExample="false"
               enableUpdateByExample="false"
        >
        </table>
    </context>

</generatorConfiguration>

这是完整的配置文件的内容,其中需要注意的几点是:
(1)在generatorConfiguration的大标签内,其实有三个主要的标签(properties,classPathEntry,context),我的文件中只使用到后两个,三个标签中,前两个都可以不用配置,properties主要包含resource和url属性,但是两个属性不能同时使用,主要是用来引入相关的properties文件,classPathEntry标签还可以配置多个,context至少配置一个。这三个标签在使用时要注意顺序,按照列举的顺序写。
(2)在使用我列举的配置文件时,主要改动<jdbcConnection>,<javaModelGenerator>,<sqlMapGenerator>,<javaClientGenerator>,<table>五个标签内的内容,jdbcConnection主要是连接是数据库的位置,用户名和密码的修改,javaModelGenerator,sqlMapGenerator,javaClientGenerator主要是targetPackage和targetProject修改,table主要是表名和对应实体类的名字,其中五个方法最好设为false,当不设定时,默认为true,因此会生成一个xxxExample的实体类(我的例子中就生成userExample),table可以设置多个。
可以参考一下我的项目目录:其中的Excel和Http是我写的其他工具类,请忽略。entity,mapper,resource.mapper中的类和文件是我下一步生成的。


4.执行配置文件

在idea右侧的maven project中有Plugins,找到生成器的插件,双击或者右键选择使用都可;当然,还可以写一个使用的配置的类进行插件的使用,百度即可。


插件使用.PNG

我完整的pom文件内容:

<?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>Util</groupId>
    <artifactId>com.dm</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.13</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.30</version>
        </dependency>
    </dependencies>
</project>

多进行尝试,多查询资料,很快能掌握的。

上一篇 下一篇

猜你喜欢

热点阅读