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

小编 2026-07-15 阅读:783 评论:0
  使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通...

  使用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所以在该目录下运行.

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

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

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表