• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

MyBatis-Generator反向生成器的使用(保姆级教程)

武飞扬头像
然要加油啊
帮助1

为什么要用MyBatis-Generator反向生成器?

在编写Mybatis的mapper层的xml文件时,如果pojo层和数据库中对应表的实体类数量过多,此时即使是利用MyBatis来做一些简单的查询,xml文件中大量的sql语句指令的编写也会使得开发的效率变低(简单的查询都是如此,更别说复杂的查询了)。而利用MyBatis-Generator反向生成器不仅可以自动生成pojo中的实体类,还可以生成dao层中的接口和mapper层中的xml文件。


MyBatis中-Generator反向生成器的使用步骤讲解

第一步在pom.xml文件中导入以下依赖(包括1和2和3都在pom.xml文件中完成)

1.导入generator生成的依赖

具体的目录结构是

<dependencies>
  <dependency>

  1.  
    <!--根据实体表反向生成实体类的插件-->
  2.  
    <dependency>
  3.  
    <groupId>org.mybatis.generator</groupId>
  4.  
    <artifactId>mybatis-generator-maven-plugin</artifactId>
  5.  
    <version>1.4.0</version>
  6.  
    </dependency>

2.导入反向生成器插件的依赖

具体的目录结构是

<build>
  <pluginManagement>
    <plugins>
      <plugin>

  1.  
    <!--mysql的驱动是给下面这个反向生成的插件使用的 -->
  2.  
    <plugin>
  3.  
    <groupId>org.mybatis.generator</groupId>
  4.  
    <artifactId>mybatis-generator-maven-plugin</artifactId>
  5.  
    <version>1.4.0</version>
  6.  
    <dependencies>
  7.  
    <dependency>
  8.  
    <groupId>mysql</groupId>
  9.  
    <artifactId>mysql-connector-java</artifactId>
  10.  
    <version>8.0.26</version>
  11.  
    <scope>runtime</scope>
  12.  
    </dependency>
  13.  
    </dependencies>
  14.  
    </plugin>

3.然后手动导入1和2中的这些依赖

做法:在pom.xml文件中 右键鼠标点击Maven 然后点击 reloadProject

学新通

 第二步:在webapp项目下创建对应的一些包(一步一步看不用急)

1.在webapp项目的src/main/java 下分别创建pojo 和 dao 和 vo 以及 bo 包(包名最好见名知意)

2.再在webapp项目的src/main/resources下创建mappers目录

3.然后在webapp项目的src/main/resources下新建文件generatorConfig.xml文件

generatorConfig.xml文件内容如下(文件中包含各个标签和其对应属性的解释)

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <!DOCTYPE generatorConfiguration
  3.  
    PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4.  
    "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5.  
     
  6.  
    <!--https://blog.csdn.net/weixin_45433031/article/details/121759041 详解见此路径-->
  7.  
    <!--反向把数据库对象生成java对象 反射(获取字段) io(写数据) jdbc(查数据)-->
  8.  
    <generatorConfiguration>
  9.  
    <!-- 读取jdbc配置文件-->
  10.  
    <properties resource="jdbc.properties"></properties>
  11.  
    <!--targetRuntime:设置生成的文件适用于那个 mybatis 版本-->
  12.  
    <context id="myGenerator" targetRuntime="MyBatis3">
  13.  
    <!--去除注释-->
  14.  
    <commentGenerator>
  15.  
    <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  16.  
    <property name="suppressAllComments" value="true"/>
  17.  
    </commentGenerator>
  18.  
    <!--jdbcConnection中的EL表达式的取值的文件为jdbc.properties 在后面的步骤中会提及-->
  19.  
    <jdbcConnection driverClass="${jdbc.driver}"
  20.  
    connectionURL="${jdbc.url}"
  21.  
    userId="${jdbc.username}"
  22.  
    password="${jdbc.password}">
  23.  
    </jdbcConnection>
  24.  
    <!--不使用BigDecimal类型 java类型解析器-->
  25.  
    <!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->
  26.  
    <javaTypeResolver >
  27.  
    <!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->
  28.  
    <!-- 不是 double 和 long 类型 -->
  29.  
    <!-- 使用常用的基本类型代替 sql 包下的引用类型 -->
  30.  
    <property name="forceBigDecimals" value="true" />
  31.  
    </javaTypeResolver>
  32.  
    <!--生成的东西放哪 pojo-->
  33.  
    <javaModelGenerator targetPackage="org.example.pojo" targetProject="src/main/java">
  34.  
    <property name="trimStrings" value="true" />
  35.  
    </javaModelGenerator>
  36.  
    <!--自动生成xml-->
  37.  
    <!-- targetPackage:生成的实体类所在的包 -->
  38.  
    <!-- targetProject:生成的实体类所在的硬盘位置 -->
  39.  
    <!--使用注解开发时不需要sql的xml文件 所以不需要此标签 -->
  40.  
    <sqlMapGenerator targetPackage="/mappers/" targetProject="src/main/resources">
  41.  
    <property name="enableSubPackages" value="true" />
  42.  
    </sqlMapGenerator>
  43.  
    <!--自动生成dao-->
  44.  
    <!-- targetPackage 和 targetProject:生成的 interface 接口文件的包和位置 -->
  45.  
    <!--ANNOTATEDMAPPER使用注解开发 XMLMAPPER使用sqlxml的注解开发 -->
  46.  
    <javaClientGenerator type="XMLMAPPER" targetPackage="org.example.dao" targetProject="src/main/java">
  47.  
    </javaClientGenerator>
  48.  
     
  49.  
    <!-- tableName是数据库中的表名,domainObjectName是生成的JAVA pojo模型(即对应的pojo包下和数据库中表对应的实体类的类)名,后面的参数不用改,要生成更多的表就在下面继续加table标签 -->
  50.  
    <table schema="TZRDB" tableName="NEWS" domainObjectName="News" enableCountByExample="false" enableUpdateByExample="false"
  51.  
    enableDeleteByExample="false" enableSelectByExample="false"
  52.  
    selectByExampleQueryId="false">
  53.  
    </table>
  54.  
    <table tableName="NEWSTYPE" domainObjectName="NewsType" schema="TZRDB"
  55.  
    enableCountByExample="false" enableUpdateByExample="false"
  56.  
    enableDeleteByExample="false" enableSelectByExample="false"
  57.  
    selectByExampleQueryId="false">
  58.  
    </table>
  59.  
     
  60.  
    </context>
  61.  
    </generatorConfiguration>
学新通

jdbc.properties文件内容如下(主要配置数据库的连接信息)

  1.  
    # 每个配置后一定不要加分号 且参数一定要加. 不然取不到值
  2.  
    # 加载驱动的类
  3.  
    jdbc.driver=com.mysql.cj.jdbc.Driver
  4.  
    # url固定格式 jdbc:mysql://域名(如果为本机就是localhost):端口号/连接的数据库名?(后面的三个参数可以不加 加了后的意思为 使用unicode编码 支持的编码格式为UTF-8)
  5.  
    jdbc.url=jdbc:mysql://192.168.0.0:3306/UserDB?useUnicode=TRUE&characterEncoding=utf8&useSSL=TRUE
  6.  
    # 数据库连接的用户名
  7.  
    jdbc.username=root
  8.  
    # 数据库连接的密码
  9.  
    jdbc.password=123456

以上1、2、3小步完成后的目录结构如下

学新通

第三步:执行以下操作(按顺序执行),生成反向生成器,自动生成pojo中的实体类以及dao中的接口和mappers下的映射文件

注意里面有一条命令为mybatis-generator:generate

 学新通

 学新通

学新通 

学新通 

学新通填写的命令为mybatis-generator:generate  

学新通

第四步:修改 webapp项目下src/main/resources下的mybatis的核心配置文件mybatis.xml的sqlxml映射名(也即mappers下的xml名字)

MyBatis核心配置文件mybatis.xml文件的内容如下

  1.  
    <?xml version="1.0" encoding="UTF-8" ?>
  2.  
    <!DOCTYPE configuration
  3.  
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4.  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5.  
    <configuration>
  6.  
    <!--读取jdbc.properties配置文件-->
  7.  
    <properties resource="jdbc.properties"></properties>
  8.  
    <settings>
  9.  
    <!--延迟加载开关: 如false,那么查询就直接调用子查询 如果为true则在需要的时候再去调用子查询-->
  10.  
    <setting name="lazyLoadingEnabled" value="true"/>
  11.  
    <!--true是调用自身查询的结果字段也会去执行子查询 所以调成false只有在查询子查询中的字段才会去调用子查询-->
  12.  
    <setting name="aggressiveLazyLoading" value="false"/>
  13.  
    </settings>
  14.  
    <typeAliases>
  15.  
    <!--将所有的此包中的类转为驼峰命名 如将Emp转为emp等 适用于一个包中有多个类的情况-->
  16.  
    <package name="org.example.pojo"/>
  17.  
    <package name="org.example.vo"/>
  18.  
    <package name="org.example.bo"/>
  19.  
    </typeAliases>
  20.  
    <!--这种方式也可以配置别名 适用于包中类的数量较少的情况 为类配置别名 -->
  21.  
    <!--<typeAliases>
  22.  
    <typeAlias alias="Author" type="domain.blog.Author"/>
  23.  
    <typeAlias alias="Blog" type="domain.blog.Blog"/>
  24.  
    <typeAlias alias="Comment" type="domain.blog.Comment"/>
  25.  
    <typeAlias alias="Post" type="domain.blog.Post"/>
  26.  
    <typeAlias alias="Section" type="domain.blog.Section"/>
  27.  
    <typeAlias alias="Tag" type="domain.blog.Tag"/>
  28.  
    </typeAliases>-->
  29.  
     
  30.  
    <!--默认使用哪个环境-->
  31.  
    <environments default="development">
  32.  
    <!--配置不同的数据库环境 -->
  33.  
    <environment id="development">
  34.  
    <!--JDBC(常用,使用JDBC管理事务) MANAGED (不常用,容器管理事务)-->
  35.  
    <transactionManager type="JDBC"/>
  36.  
    <!---->
  37.  
    <dataSource type="POOLED">
  38.  
    <!--这里一定要加jdbc. 不然取不到值-->
  39.  
    <property name="driver" value="${jdbc.driver}"/>
  40.  
    <property name="url" value="${jdbc.url}"/>
  41.  
    <property name="username" value="${jdbc.username}"/>
  42.  
    <property name="password" value="${jdbc.password}"/>
  43.  
    </dataSource>
  44.  
    </environment>
  45.  
    </environments>
  46.  
    <!--加载pojo的sql映射文件(由于是注解开发所以和dao在同一个包中)-->
  47.  
    <!--<mappers>
  48.  
    <package name="org.example.dao"/>
  49.  
    </mappers>-->
  50.  
    <!--加载pojo的sqlxml映射文件-->
  51.  
    <mappers>
  52.  
    <!--使用Mybatis-generator反向生成器生成代码后记得修改mybatis.xml中的mapper的映射路径(即sqlxml的映射路径)-->
  53.  
    <!--默认前面加了左斜杆 自己不能加左斜杆不然会报错 为编译后的根路径-->
  54.  
    <mapper resource="mappers/NewsMapper.xml"/>
  55.  
    <mapper resource="mappers/NewsTypeMapper.xml"/>
  56.  
    <mapper resource="mappers/HUserMapper.xml"/>
  57.  
    <mapper resource="mappers/HDeptMapper.xml"/>
  58.  
    <mapper resource="mappers/SStudentMapper.xml"/>
  59.  
    <mapper resource="mappers/STeacherMapper.xml"/>
  60.  
    </mappers>
  61.  
    </configuration>
学新通

至此反向生成器便会成功在第二步创建的包下生成类和接口以及xml映射文件


关于MyBatis-Generator 反向生成器的一些额外的补充

//使用mybatis-generator反向生成器可以自动生成pojo中对应数据库中表的实体类以及dao中对应sql映射文件的接口以及mapper中的sql映射文件
//但是自动生成sql映射文件后 需要在mybatis.xml文件中配置sqlxml的新路径,其实路径没变只是名字变了 (xmlmapper开发)
//注解开发 ANNOTATEDMAPPER 不需要sqlxml了所以mybatis.xml中的mapper的source配置去掉 改为mapper的package告诉dao的位置
//且注解开发不需要generatorConfig.xml中的sqlMapGenerator标签
//使用mybatis-generator反向生成器一定要使用targetRuntime配置mybatis的版本

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcaheb
系列文章
更多 icon
同类精品
更多 icon
继续加载