利用mybatis-generator生成ORM

mybatis是非常流行的持久化框架,自动化虽然没有hibernate那么高,但是灵活性更高些,可以手动写一些执行效率较高的SQL语句。对于持久层dao还有sqlmap和entity(model)我们更希望关注在业务上而不是框架的书写规则上,因此,这次介绍这个generator工具就是提供了自动完成持久层的装配,我们只要定义好了表结构,利用xml文件配置一下,这个工具自动帮我们装配生成持久层相关的模块。
首先工具的结构是这样的。
这里写图片描述
src是可以自定义的。
genteratorConfig.xml 存放了相关的数据库的配置也要生成的目标路径和表还有具体的相关配置。还存在很多jar包,因为在连接数据库和生成过程中会使用到相关的工具会引用很多jar包,可以引用其他位置的jar包,此处都包含在此文件夹内便于管理。
首先我们的数据库建立了四张表:
这里写图片描述

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>  
<!-- 这里需要引用jdbc jar包-->  
    <classPathEntry  location="mysql-connector-java-5.1.25-bin.jar"/>  
    <context id="test"  targetRuntime="MyBatis3">  
        <commentGenerator>  
            <property name="suppressDate" value="true"/>  
            <!-- 是否生成注释 -->  
            <property name="suppressAllComments" value="true"/>  
        </commentGenerator>  
        <!--这里是驱动 -->  
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/hq_db" userId="root" password="root">  
        </jdbcConnection>  
        <javaTypeResolver>  
            <property name="forceBigDecimals" value="false"/>  
        </javaTypeResolver>  
        <!-- 这里生成对应文件夹路径配置-->  
        <javaModelGenerator targetPackage="com.micro.entity" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
            <property name="trimStrings" value="true"/>  
        </javaModelGenerator>  
        <!-- sqlmap路径配置-->  
        <sqlMapGenerator targetPackage="com.micro.sqlmap" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
        </sqlMapGenerator>  
        <!--dao接口的路径配置-->  
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.micro.dao" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
        </javaClientGenerator>  
        <!-- 分别配置对应的表名还可以配置是否生成example,默认是true-->  
        <table tableName="user" domainObjectName="User" ></table>
    <table tableName="house" domainObjectName="House" ></table>
    <table tableName="house_type" domainObjectName="HouseType" ></table>
    <table tableName="region" domainObjectName="Region" ></table>

    </context>  
</generatorConfiguration>  

配置完成,可能你还注意到了路径下还有个execute.bat。里面是cmd命令:

Java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

cmd 在该路径下,然后执行该bat文件:
这里写图片描述

显示成功。打开对应目录(这里以entity目录为例):
这里写图片描述

其他文件也对应生成了配置好的模块。

2016/5/15补充:这个并没有对于分页给与支持,我们应该还要加上插件。jar里都有。因此不需要引入新的jar包。添加下面两个:

<plugin type="org.mybatis.generator.plugins.PaginationPlugin"/>

<plugin type="org.mybatis.generator.plugins.AutoIncIdPlugin"/>

完整的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>

    <classPathEntry location="mysql-connector-java-5.1.25-bin.jar" />
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 这里声明插件 -->
        <plugin type="org.mybatis.generator.plugins.PaginationPlugin" />

        <plugin type="org.mybatis.generator.plugins.AutoIncIdPlugin" />


        <commentGenerator>
            <property name="suppressDate" value="true" />

            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1/financial_system" userId="root"
            password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <javaModelGenerator targetPackage="com.platform.model"
            targetProject="src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="com.platform.sqlmap"
            targetProject="src">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.platform.dao" targetProject="src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <table tableName="user" domainObjectName="User"></table>
        <table tableName="project" domainObjectName="Project"></table>
        <table tableName="enterprise" domainObjectName="Enterprise"></table>
        <table tableName="user_project_relation" domainObjectName="UserProjectRelation"></table>
        <table tableName="enterprise_project_relation" domainObjectName="EnterpriseProjectRelation"></table>

    </context>
</generatorConfiguration>  

即可添加分页查询等功能的支持。

总结:我们主要做了两件事,第一就是建立好了数据库,第二就是配置了xml文件。然后执行脚本,自动生成持久层模块。大大降低了数据库java对象关系映射的重复工作。

注:博主资源里免积分提供generator工具。

MyBatis-Code-GeneratorMyBatis-Plus 都是 Java 中使用的 ORM 框架,在开发中都具有其独特的优点和缺点。 MyBatis-Code-Generator 是基于 MyBatis 的代码自动生成工具,可以自动生成 Java Bean、Dao、Mapper.xml、DTO 等层代码。它的优点是能够方便地生成基础的代码,减少了手动编写代码的时间和成本;同时,由于它是 MyBatis 的官方工具,因此使用和学习起来比较容易。 然而,MyBatis-Code-Generator 也有一些缺点。首先,它的自动生成代码不够智能,生成出来的代码质量可能不是非常高。其次,当数据表数量较多时,一次性生成所有的代码会比较耗时。还有,生成的代码往往不能满足个性化的需求,需要手动修改。 MyBatis-Plus 也是一个基于 MyBatisORM 框架,它在 MyBatis 的基础上进行了一系列改进,提供了更加易用、高效、安全的编程体验。它的优点是支持大量的 CRUD 操作、自动填充、乐观锁、通用 Mapper 等功能,能够极大地提高编码效率。同时,由于它的代码注解比较明确,因此也能提高代码可读性和可维护性。 然而,MyBatis-Plus 也存在一些缺点。它的文档和教程相对来说比较单一,学习难度可能比 MyBatis 更高。而且,其对于复杂查询的支持不如 MyBatis 灵活,需要结合 SQL 支持才能实现。 总的来说,MyBatis-Code-GeneratorMyBatis-Plus 都是比较不错的 ORM 框架,在使用方面需要结合自己的情况进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值