zoukankan      html  css  js  c++  java
  • Mybatis自动化生成代码

    Mybatis是Java EE中比较主流的一种持久化orm框架,其缺点是不够灵活,需要写的代码较多,包括:

    • 一个sql-map-config.xml
    • 对应每个表的xml文件
    • 对应每个表的实体POJO
    • DAO(数据访问对象)

    好在官方提供了mybatis-generator这个组件,经过对官方例子的学习,已经正式在项目中应用了自动化代码,腰不酸腿不疼了,大大提高了生产效率。

    如何使用

    首先需要准备三个东西:

    • mybatis-generator-core.jar 自动化需要的jar包
    • mybatis-generator.xml 文件,里面需要配置数据源和一系列的自动化规则
    • 执行脚本

    一项一项说,mybatis-generator-core.jar 这个jar包,官网上可以下载,作者使用的是1.3.2版本。
    做个网盘方便懒人吧:http://pan.baidu.com/s/1dFDhWxN

    mybatis-generator.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="/Users/xxxx/workspace/xxx/lib/mysql-connector-java-5.1.5-bin.jar" />
        <context id="MysqlContext" targetRuntime="Ibatis2Java2" defaultModelType="flat">
            <property name="beginningDelimiter" value="`"/>
            <property name="endingDelimiter" value="`"/>
    
            <commentGenerator>
                <property name="suppressDate" value="true"/>
            </commentGenerator>
    
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx"
                            userId="your_account"
                            password="your_password">
            </jdbcConnection>
            <javaTypeResolver >
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <javaModelGenerator targetPackage="generate.model" targetProject="/Users/xxxx/workspace/xxxx/src/main/java">
                <property name="trimStrings" value="true" />
                <property name="enableSubPackages" value="true" />
            </javaModelGenerator>
    
            <sqlMapGenerator targetPackage="generate"  targetProject="/Users/xxxx/workspace/xxxx/src/main/resources/db">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
    
            <javaClientGenerator type="SPRING" targetPackage="generate.dao"  targetProject="/Users/xxxx/workspace/xxxx/src/main/java"/>
    
            <table tableName="open_user" domainObjectName="OpenUser"
                   enableSelectByPrimaryKey="true"
                   enableSelectByExample="false"
                   enableDeleteByPrimaryKey="true"
                   enableDeleteByExample="false"
                   enableCountByExample="false"
                   enableUpdateByPrimaryKey="true"
                   enableUpdateByExample="false"
                   selectByExampleQueryId="false"
                   selectByPrimaryKeyQueryId="false"
            >
                <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>
    
    

    略微做一些解释:其中项目地址和数据源很清楚,需要正确配置。javaModelGenerator和sqlMapGenerator标签中的targetPackage是需要把自动生成的代码放到什么位置。我的做法是先统一放到一个地方generate文件夹,然后根据需要挪到目标文件夹,这样不用每次修改这个targetPackage。每次只需要修改tableName即可。

    其次就是table中的一系列属性如enableSelectByPrimaryKey,含义是是否需要某某方法。这里如果全部是true,将会生成一个非常长的sqlmap文件,很不清晰,我这里只把最基本的CRUD操作放了出来,复杂查询还是后续自己手工写。

    另外,项目使用的是Spring+Mybatis,所以使用的是Spring的SqlMapClientTemplate,所以javaClientGenerator是type="SPRING"。

    还有context中targetRuntime这儿是跟你的Mybatis版本有关,作者使用的是古老的ibatis2.3.4,比较稳定(后来的Mybatis会有一些新引入的问题,这里不赘述了),所以这里用的是Ibatis2Java2。

    最后,执行脚本的话是这样的:

    java -jar ~/workspace/xxxx/lib/mybatis-generator-core-1.3.2.jar -configfile ~/workspace/xxxx/src/main/resources/db/generator.xml -overwrite



    作者:纳达丶无忌
    链接:https://www.jianshu.com/p/11e7629938c1
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    ThinkPHP框架返回插入记录的id号
    TP框架中关于if、else 分支结构逻辑错误
    SVN 快速入门!
    TP框架中如何使用SESSION限制登录?
    TP框架M方法 create方法丢失字段问题
    .NET Framework 工具
    X86-64寄存器和栈帧
    微软开源资源 NET Foundation Projects
    Import 元素 (MSBuild)
    C#开源资源项目
  • 原文地址:https://www.cnblogs.com/DreamRecorder/p/9257697.html
Copyright © 2011-2022 走看看