zoukankan      html  css  js  c++  java
  • 使用Mapper专用的MyBatis Generator插件

    使用Maven执行MBG

    这里有一个完整的例子,Mybatis-Spring,下面讲解的内容出自这个例子。

    使用Maven插件的一个好处是可以将Maven中的属性使用${property}形式在generatorConfig.xml中引用。

    先看Maven的pom.xml文件(只显示有关的部分内容):

    <properties>
        <!--  MyBatis Generator  -->
        <!--  Java接口和实体类  -->
        <targetJavaProject>${basedir}/src/main/java</targetJavaProject>
        <targetMapperPackage>tk.mybatis.mapper.mapper</targetMapperPackage>
        <targetModelPackage>tk.mybatis.mapper.model</targetModelPackage>
        <!--  XML生成路径  -->
        <targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
        <targetXMLPackage>mapper</targetXMLPackage>
        <!--  依赖版本  -->
        <mapper.version>1.0.0</mapper.version>
        <mysql.version>5.1.29</mysql.version>
    </properties>
    

    上面是pom.xml中properties配置的部分内容。这里配置了MBG配置文件中常用到的几个路径以及包名。还包含了通用Mapper的版本和数据库JDBC驱动的版本。

    下面是MBG的Maven插件配置:

    <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>
            <overwrite>true</overwrite>
            <verbose>true</verbose>
        </configuration>
        <dependencies>
            <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
            </dependency>
            <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>${mapper.version}</version>
            </dependency>
        </dependencies>
    </plugin>
    

    这里配置了MBG插件,并且配置了generatorConfig.xml配置文件的路径。另外还有两个依赖,分别是JDBC驱动以及通用Mapper(提供了MBG插件)。

    下面我们在看看这个generatorConfig.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>
        <properties resource="config.properties"/>
    
        <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
            <property name="beginningDelimiter" value="`"/>
            <property name="endingDelimiter" value="`"/>
    
            <plugin type="${mapper.plugin}">
              <property name="mappers" value="${mapper.Mapper}"/>
            </plugin>
    
            <jdbcConnection driverClass="${jdbc.driverClass}"
                            connectionURL="${jdbc.url}"
                            userId="${jdbc.user}"
                            password="${jdbc.password}">
            </jdbcConnection>
    
            <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
    
            <sqlMapGenerator targetPackage="${targetXMLPackage}"  targetProject="${targetResourcesProject}"/>
    
            <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" type="XMLMAPPER" />
    
            <table tableName="%" >
              <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>
    

    可以看到这个配置文件中的大多数属性都使用${}形式替代了。使用<properties resource="config.properties"/>引入了config.properties属性配置,该文件内容如下:

    # 数据库配置
    jdbc.driverClass = com.mysql.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:3306/test
    jdbc.user = root
    jdbc.password =
    
    #c3p0
    jdbc.maxPoolSize=50
    jdbc.minPoolSize=10
    jdbc.maxStatements=100
    jdbc.testConnection=true
    
    # 通用Mapper配置
    mapper.plugin = tk.mybatis.mapper.generator.MapperPlugin
    mapper.Mapper = tk.mybatis.mapper.common.Mapper
    

    使用配置文件的目的是因为系统多处地方使用了这种配置,因而使用一个属性文件可以方便的保持一致。

    除了引用配置文件中的属性外,部分还使用了pom.xml中的属性。这种方式使用起来更灵活。

    运行

    配置好之后如何运行呢?

    在pom.xml这一级目录的命令行窗口执行mvn mybatis-generator:generate即可(前提是配置了mvn)。

    生成的代码

    下面是自动生成的代码的例子,这些例子可以在Mybatis-Spring这里找到。

    一、实体类UserInfo

    package tk.mybatis.mapper.model;
    
    import javax.persistence.*;
    
    @Table(name = "user_info")
    public class UserInfo {
        @Id
        @Column(name = "Id")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
    
        /**
         * 用户名
         */
        private String username;
    
        /**
         * 密码
         */
        private String password;
    
        /**
         * @return Id
         */
        public Integer getId() {
            return id;
        }
    
        /**
         * @param id
         */
        public void setId(Integer id) {
            this.id = id;
        }
    
        /**
         * 获取用户名
         *
         * @return username - 用户名
         */
        public String getUsername() {
            return username;
        }
    
        /**
         * 设置用户名
         *
         * @param username 用户名
         */
        public void setUsername(String username) {
            this.username = username;
        }
    }
    

    代码过长,省略了一部分,完整查看:UserInfo

    可以看到这里生成的注释是有意义的内容,注释来源于数据库表字段的注释。

    这里还自动生成了几项注解的内容。

    二、Mapper接口UserInfoMapper

    package tk.mybatis.mapper.mapper;
    
    import tk.mybatis.mapper.common.Mapper;
    import tk.mybatis.mapper.model.UserInfo;
    
    public interface UserInfoMapper extends Mapper<UserInfo> {
    }
    

    接口自动继承配置的通用Mapper接口,自动包含泛型实体。

    三、Mapper.xml文件UserInfoMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="tk.mybatis.mapper.mapper.UserInfoMapper" >
        <resultMap id="BaseResultMap" type="tk.mybatis.mapper.model.UserInfo" >
            <!--
                WARNING - @mbggenerated
            -->
            <id column="Id" property="id" jdbcType="INTEGER" />
            <result column="username" property="username" jdbcType="VARCHAR" />
            <result column="password" property="password" jdbcType="VARCHAR" />
            <result column="usertype" property="usertype" jdbcType="VARCHAR" />
            <result column="enabled" property="enabled" jdbcType="INTEGER" />
            <result column="realname" property="realname" jdbcType="VARCHAR" />
            <result column="qq" property="qq" jdbcType="VARCHAR" />
            <result column="email" property="email" jdbcType="VARCHAR" />
            <result column="tel" property="tel" jdbcType="VARCHAR" />
        </resultMap>
    </mapper>
    

    xml文件只包含了实体的resultMap映射配置。

    注意:如果是在eclipse 中,选择pom.xml文件,击右键先择Run AS——>Maven Build… ——>在Goals框中输入:mybatis-generator:generate 

    如果在命令行输入Maven命令即可,注意:一定是当前项目目录下运行该命令:

    mvn mybatis-generator:generate

    代码生成完,大功告别成。

  • 相关阅读:
    进程控制
    文件、目录操作相关函数
    Linux 系统IO函数 复制文件内容
    gdb调试
    makefile的使用
    GCC编译器
    vim命令的使用
    Linux Ubuntu笔记(常用命令)
    博客搬家(CSDN->博客园)
    level 4
  • 原文地址:https://www.cnblogs.com/linjiaxin/p/6104984.html
Copyright © 2011-2022 走看看