• 利用mybatis-generator自动生成数据持久化的代码


    MyBatis生成器简介

    MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器它将生成所有版本的MyBatis的代码,以及版本2.2.0之后的iBATIS。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件与数据库表交互的初始滋扰。MBG试图对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象。

    MyBatis Generator将会生成:

    • 与表结构匹配的Java POJO。这可能包括:
      • 一个类匹配表的主键(如果有一个主键)
      • 一个匹配表的非主键字段的类(BLOB字段除外)
      • 包含表的BLOB字段的类(如果表具有BLOB字段)
      • 一个类来启用动态选择,更新和删除

      这些类之间有适当的继承关系。请注意,生成器可能被配置为生成不同类型的POJO层次结构 - 例如,如果您愿意,您可以选择为每个表生成单个域对象。

    • MyBatis / iBATIS兼容的SQL地图XML文件。MBG为配置中的每个表上的简单CRUD函数生成SQL。生成的SQL语句包括:
      • 通过主键更新
      • 通过示例更新(使用动态where子句)
      • 通过主键删除
      • 通过示例删除(使用动态where子句)
      • 通过主键选择
      • 通过示例进行选择(使用动态where子句)
      • 以身作则

      根据表的结构,这些语句有不同的变体(例如,如果表没有主键,则MBG不会通过主键函数生成更新)。

    • 适合使用上述对象的Java客户端类。Java客户机类的生成是可选的。MBG将为MyBatis 3.x生成以下类型的Java客户端:
      • 与MyBatis 3.x映射器基础结构配合使用的映射器接口
      MBG将为iBATIS 2.x生成以下类型的Java客户端:
      • 符合Spring框架的DAO
      • 只使用iBATIS SQL映射API的DAO。这些DAO可以通过两种方式生成:通过构造函数或setter注入来提供SqlMapClient
      • 符合iBATIS DAO框架的DAO(这是iBATIS的一个可选部分,现在这个框架已经被废弃了,我们建议你改用Spring框架)

    MyBatis生成器被设计为在迭代开发环境中运行良好,并且可以作为Ant任务或Maven插件包含在持续构建环境中。迭代运行MBG时需要注意的重要事项包括:

    1. 如果存在与新生成的XML文件具有相同名称的现有文件,MBG将自动合并XML文件。MBG不会覆盖您对其生成的XML文件所做的任何自定义更改。您可以反复运行它,而不用担心丢失对XML的自定义更改。MBG将替换之前运行中生成的任何XML元素。
    2. MBG 不会合并Java文件,它可以覆盖现有文件或使用不同的唯一名称保存新生成的文件。如果对生成的Java文件进行更改并重复运行MBG,则必须手动合并更改。当作为Eclipse 插件运行时 ,MBG可以自动合并Java文件。

    运行Eclipse

    当作为Eclipse功能运行时,生成器还可以合并Java文件并将用户修改保存到生成的Java文件中。生成器使用Eclipse Java解析器和AST walker来完成此操作。Eclipse功能还具有一些用户界面增强功能,使生成器可以更容易地运行。最后,Eclipse功能为Eclipse帮助系统提供了生成器的完整用户手册。

    Eclipse功能可以在Eclipse市场上找到:https: //marketplace.eclipse.org/content/mybatis-generator

    依赖

    MBG除了JRE之外没有任何依赖关系。JRE 6.0或以上是必需的。此外,还需要实现DatabaseMetaData接口的JDBC驱动程序,尤其是getColumns和 getPrimaryKeys方法。

    支持

    通过MyBatis用户邮件列表提供对MyBatis生成器的支持。您可以通过Google代码在此处订阅或查看邮件列表:

    http://groups.google.com/group/mybatis-user

    如果您认为发现了错误,请在创建新工单之前先在用户列表中提出一个问题。如果您发现错误或者有新的功能请求,您可以在GitHub这里打开一个新的问题:

    https://github.com/mybatis/generator/issues

     

    如何使用MyBatis

    下载地址:腾讯微云传送门

    一、直接使用命令启动

    1.下载解压后的结构图

    2.配置连接 编辑generatorConfig文件

    <?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="mysql51.12.jar" />
      <context id="MBG" targetRuntime="MyBatis3">
          <!-- 去除自动生成的注释 -->
          <commentGenerator>
              <property name="suppressAllComments" value="true" />
              <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
          </commentGenerator>
        <!-- 数据库配置 -->
        <!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@192.168.1.179:1521:reward"
            userId="qxsomp"
            password="qixin20130802">-->
            <!--<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            connectionURL="jdbc:sqlserver://127.0.0.1:1433;
            DatabaseName=demo"
            userId="sa"
            password="sa">-->
          <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                          connectionURL="jdbc:mysql://127.0.0.1/platformdb"
                          userId="root"
                          password="root">
        </jdbcConnection>
    
        <javaTypeResolver >
          <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- model配置 -->
        <javaModelGenerator targetPackage="demo.model" targetProject="./src">
          <property name="enableSubPackages" value="true" />
          <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- xml配置文件 -->
        <sqlMapGenerator targetPackage="demo.mapperxml"  targetProject="./xml">
          <property name="enableSubPackages" value="true" />
          
        </sqlMapGenerator>
        <!--接口-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="demo.mapper"  targetProject="./src">
          <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
         <!-- 表名-->
          <table    tableName="s_users" domainObjectName="Users"
                  enableCountByExample="false" enableUpdateByExample="false"
                  enableDeleteByExample="false" enableSelectByExample="false"
                  selectByExampleQueryId="false">
          </table>
    
      </context>
    </generatorConfiguration>

     确认配置无误的时候将start中的命令在dos中执行,如果出现前言不允许有内容的错误时,将generatorConfig.xml文件用记事本另存为ANSI编码

    3.使用命令启动生成工具

    在mybatis generaotr工具跟目录下按下Shift并鼠标右键,在菜单键中找到“在此处打开命令窗口”并点击此项

    输入 start start.bat 并回车

    回车后会自动打开一个新的命令窗口:

    以下界面就是生成成功并无错误的提示

    以下界面就是生成成功但有错误提示:错误的原因是因为生成的之前有存在相同的文件在目录下了。这样虽然生成成功了,但是是吧两次生成结果追加为一个。这样的话将文件复制到项目中是会出现异常的,需要先修改在复制到项目。或者生成前先删除之前已生成的文件。

    以下界面就是生成失败并有异常提示:具体错误原因请根据反馈消息鉴别。这里的原因是因为xml配置文件中有问题。数据连接不存在。导致jdbc连接失败了。

    二、配合maven+IDEA开发工具使用

    1.在pom.xml中的 <build>标签中添加plugins标签

    <plugins>
    <plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
    <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
    <verbose>true</verbose>
    <overwrite>true</overwrite>
    </configuration>
    <executions>
    <execution>
    <id>Generate MyBatis Artifacts</id>
    <goals>
    <goal>generate</goal>
    </goals>
    </execution>
    </executions>
    <dependencies>
    <dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
    </dependency>
    </dependencies>
    </plugin>
    </plugins>

     注意事项:这里的configurationFile路径指的就是mybatis-generator中的配置文件路径,具体路径根据自己的项目决定

    2启动

    mvn mybatis-generator:generate 或者直接点击

  • 相关阅读:
    leetcode 之 Palindrome Partitioning
    虚拟机共享文件夹下tar
    leetcode 之 Excel Sheet Column Number
    AndroidHttpClient & jsoup 解析 正方教务系统
    查看android下的分区表
    ubuntukylin 下编译 android4.4
    android:layout_weight 和 android: weightSum的使用
    Intent 与Bundle的传值关系
    使用自定义的Toast
    SlideMenu例子解析2
  • 原文地址:https://www.cnblogs.com/david97/p/7883429.html
Copyright © 2020-2023  润新知