使用mybatis-generator在自动生成Model类和Mapper文件

使用mybatis-generator在自动生成Model类和Mapper文件

使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应对不同的需求,最近做公司新开的一个项目就是使用到了它,简单粗暴.

  下面介绍详细的使用步骤和注意事项,我的项目环境是idea+maven+ssm,但是我新建了一个空的maven项目专门用来生成java代码,然后再把它有选择的copy到自己的项目环境中.

  1.新建一个空的webapp类型的maven项目.

  2.在pom.xml文件中加入mybatis-generator插件的配置:

复制代码

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

复制代码

  3.在resources包下新建一个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>
  <!-- 指定数据库驱动的地址 这是我mac下的绝对路径-->
  <classPathEntry location="/Users/wyg/personal/视频教程/generatorSqlmapCustom/lib/mysql-connector-java-5.1.28-bin.jar" />
  <!--一个数据库 对应一个context-->
  <!--
  context:生成一组对象的环境
  id:必选,上下文id,用于在生成错误时提示
  defaultModelType:指定生成对象的样式
      1,conditional:类似hierarchical;
      2,flat:所有内容(主键,blob)等全部生成在一个对象中;
      3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class)
  targetRuntime:
      1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
      2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
  introspectedColumnImpl:类全限定名,用于扩展MBG
-->
  <context id="testTables" targetRuntime="MyBatis3">
      <commentGenerator>
          <!-- 是否去除自动生成的注释 true:是 : false:否 -->
          <property name="suppressAllComments" value="true" />
      </commentGenerator>
      <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
      <jdbcConnection driverClass="com.mysql.jdbc.Driver"
          connectionURL="jdbc:mysql://localhost:3306/shop" userId="root"
          password="123">
      </jdbcConnection>
      <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
          NUMERIC 类型解析为java.math.BigDecimal -->
      <javaTypeResolver>
          <property name="forceBigDecimals" value="false" />
      </javaTypeResolver>

      <!-- targetProject:生成PO类的位置 -->
      <javaModelGenerator targetPackage="com.ximalaya.shop.data1"
          targetProject="src/main/java" >
          <!-- enableSubPackages:是否让schema作为包的后缀 -->
          <property name="enableSubPackages" value="false" />
          <!-- 从数据库返回的值被清理前后的空格 -->
          <property name="trimStrings" value="true" />
      </javaModelGenerator>
      <!-- targetProject:mapper映射文件生成的位置 -->
      <sqlMapGenerator targetPackage="com.ximalaya.shop.mapper1"
          targetProject="src/main/java">
          <!-- enableSubPackages:是否让schema作为包的后缀 -->
          <property name="enableSubPackages" value="false" />
      </sqlMapGenerator>
      <!-- targetPackage:mapper接口生成的位置 -->
      <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
              type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
              type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
              type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
      -->
      <javaClientGenerator type="ANNOTATEDMAPPER"
          targetPackage="com.ximalaya.shop.mapper1"
          targetProject="src/main/java">
          <!-- enableSubPackages:是否让schema作为包的后缀 -->
          <property name="enableSubPackages" value="false" />
      </javaClientGenerator>
      <!-- 指定数据库表 -->
      <table schema="" tableName="tb_order">
          <property name="modelOnly" value="false"/>
      </table>
      <table schema="" tableName="tb_order_product">
          <property name="modelOnly" value="false"/>
      </table>
      <table schema="" tableName="tb_order_status">
          <property name="modelOnly" value="false"/>
      </table>
  </context>
</generatorConfiguration>

复制代码

  这里需要注意的有两点,第一个就是配置好自己的数据库驱动,我本来将mysql-connector-java-5.1.28-bin.jar直接引入到项目中,然后就忽略了这个标签,但是运行失败,找不到数据库驱动,然后我加上该标签,指向文件中的mysql-connector-java-5.1.28-bin.jar的绝对路径,就好了.第二个就是javaClientGenerator标签里的type,在注释中有详细解释,这里可以根据你实际的需求生成不同类型的java代码.

  配置完之后,直接在当前项目下输入命令行:mvn mabatis-generator:generate,注意我的项目名称是shopTest所以在该目录下运行.

img  

  如果能看到BUILD SUCCESS,那就证明操作成功了,去你指定的src目录下查看生成的代码即可.

posted @ 2020-10-21 02:35  墨染念颖  阅读(227)  评论(0编辑  收藏  举报