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

来源:互联网 发布:找淘宝推广团队 编辑:程序博客网 时间:2024/06/05 04:48

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

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

0 0
原创粉丝点击