MyBatis Generator组件学习(反向生成) - 20181126

一.引言

  • MyBatis-Plus(简称MP)是MyBatis增强工具,在原来基础上不做改变,为简化开发、提高效率而生。
  • MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper、dao、entity 的框架,让我们省去规律性最强的一部分最基础的代码编写。
  • 使用方式:命令行、Maven、Ant任务、Java代码;推荐Maven,因为集成和使用简单

二.使用示例

  1. 添加依赖
    配置pom.xml文件,增加依赖和配置生成文件(“generatorConfig.xml” 个性化配置)路径
    依赖:
    org.mybatis.generator:根据数据库中的表 反向生成实体,dao,mapper(也可使用oracle驱动)
<!-- mybatis-generator-core 反向生成java代码-->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
    </dependency>

插件:
注意,如果本地库中没有驱动jar包,需要先放到依赖下载,再挪到插件下边

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    </dependencies>
      <configuration>
        <!--允许移动生成的文件 -->
        <verbose>true</verbose>
        <!-- 是否覆盖 -->
        <overwrite>true</overwrite>
        <!-- 自动生成的配置、配置文件的路径 -->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
    </configuration>
</plugin>
  1. 添加配置文件
    根据上面在pom里的配置,我们需要添加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>

    <!--数据库驱动-->
    <!--<classPathEntry location="D:\maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>-->

    <context id="mysql" targetRuntime="MyBatis3">
        <!--自动生成一些东西hashcode、序列化、tostring-->
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>

        <commentGenerator>
            <!--是否支持日期格式 -->
            <property name="suppressDate" value="true"/>
            <!--是否去除自动生成注释 true关闭自动生成注释 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/abc"
                        userId="root"
                        password="root"></jdbcConnection>

        <!--java类型解析,用于一些比较特殊的数据类型-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--生成Model类存放位置包名和位置(生成实体类的包)-->
        <javaModelGenerator targetPackage="com.abc.entity" targetProject="./src/main/java">
            <!--是否合并包:类和包建立联系-->
            <property name="enableSubPackages" value="true"/>
            <!--去String类型中的空格-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--生成映射文件存放位置(生成mapper.xml文件)-->
        <sqlMapGenerator targetPackage="com.abc.mapper" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--生成Dao类存放位置(生成dao接口,其实dao接口也称mapper)-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.abc.dao"
                             implementationPackage="com.abc.mapper" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--生成对应表及类名-->
        <!--
            是否生成enableCountByExample  查询条数
            是否生成根据条件更新 enableUpdateByExample="false"
             enableDeleteByExample="false"
             enableSelectByExample="false"
             selectByExampleQueryId="false"
        -->
        <!--生成哪些表、生成的实体类名称名,多个表就多个table-->
        <table tableName="abc_admin" domainObjectName="Admin"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">

        </table>
    </context>
</generatorConfiguration>
  1. 启动插件
    右侧的Maven中,Pligins — mybatis-generator — 启动 bulidsuccess
  2. 生成的接口内容
public interface AdminMapper {
    //根据id删除
    int deleteByPrimaryKey(String id);

    //插入(空插入为null)
    int insert(Admin record);
    //插入(空则不插入)
    int insertSelective(Admin record);

    //根据id查一个
    Admin selectByPrimaryKey(String id);

    //根据id修改(null则不会修改)
    int updateByPrimaryKeySelective(Admin record);
    //根据id修改(null也会修改)
    int updateByPrimaryKey(Admin record);

    //注意:官方不提供查询所有操作
}

三.其他补充

  • 设置实体和表的字段映射(起别名)
<table标签中加:
<!--起别名:列名,实体属性名(自定义成驼峰命名)-->
            <columnOverride column="" property=""/>
  • MyBatis通用mapper开发,对mybatis进一步封装【 https://www.oschina.net/news/94347/mapper-4-0-released
  • 建议安装一款免费的IDEA插件“Free MyBatis plugin”,可以实现dao到mapper xml对应方法的快速映射,点击任意一个快速调整到相应的方法,提高工作效率。(绿色箭头,对应跳转)

猜你喜欢

转载自blog.csdn.net/weixin_42838993/article/details/84575668