Mybatis Generator使用手册及若干问题


刚接触mybatis generator,边学边记录,本文持续更新中…

eclipse中安装mybatis generator插件

打开工具栏Help -> Eclipse Marketplace,搜索mybatis generator安装即可

编写generatorConfig.xml文件

配置数据源

location属性关联本地数据库驱动jar包

<classPathEntry location="D:\software\repo\mysql-connector-java-8.0.19.jar"/>

定义mybatis上下文

上下文中主要设置包括数据库链接信息、反向生成entity类&mapper&dao的存放位置,以及需要操作的table

数据库链接信息

<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
        connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&amp;serverTimezone=GMT%2B8&amp;useSSL=true"
        userId="username"
        password="password">
</jdbcConnection>

设置entity类存放位置

<javaModelGenerator targetPackage="com.demo.entity" targetProject="test/src/main/java"> 
    <property name="enableSubPackages" value="true"/>
    <property name="trimStrings" value="true"/>
</javaModelGenerator>

设置映射文件存放位置

<sqlMapGenerator targetPackage="mapper" targetProject="test/src/main/resources"> <property name="enableSubPackages" value="true"/></sqlMapGenerator>

设置Dao类存放位置

<javaClientGenerator type="XMLMAPPER" targetPackage="com.demo.mapper" targetProject="test/src/main/java"> <property name="enableSubPackages" value="true"/></javaClientGenerator>

设置需要操作的table列表

<table tableName="t_staff" domainObjectName="StaffEnity" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        
<table tableName="t_staff_employee" domainObjectName="StaffEmployeeEnity" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

完整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="D:\software\repo\mysql-connector-java-8.0.19.jar"/>
    
    <!-- mybatis上下文 -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        
        <!-- 数据库链接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
        connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&amp;serverTimezone=GMT%2B8&amp;useSSL=true"
                        userId="userId"
                        password="password">
        </jdbcConnection>
        
        <!--生成entity类存放位置-->
        <javaModelGenerator targetPackage="com.demo.entity" targetProject="test/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mapper" targetProject="test/src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        
        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.demo.mapper"
                             targetProject="test/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        
        <table tableName="t_staff" domainObjectName="StaffEnity" enableCountByExample="false" 
        	enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" 
        	selectByExampleQueryId="false"></table>
        
        <table tableName="t_staff_employee" domainObjectName="StaffEmployeeEnity" enableCountByExample="false" 
        	enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" 
        	selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

遇到的问题

XML Parser Error

xml解析错误,多半为特殊字符处理

The reference to entity “useSSL” must end with the ‘;’ delimiter

& 特殊字符应该变更为 &amp;

找不到targetProject中目录src

编写相对路径,需要带上项目名称

targetProject="project-name/src/main/java"

generator将一个表生成两个实体类

以下情况,generator会将一个表生成两个实体:

  • 表中有text字段
  • 有联合主键

属性defaultModelType

在mybatis上下文添加属性defaultModelType,并且赋值为flat方式

<context id="DB2Tables"  targetRuntime="MyBatis3" defaultModelType="flat">
</context>
defaultModelType取值
取值时候默认说明
conditional多个字段为联合主键则会生成单独的主键实体类;BLOB字段仍单独生成实体类
hierarchical只要表里有主键,就会生成单独的主键实体类,其余同上
flat只为一张表生成一个实体类,包含所有字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mybatis也能方向生成代码,能方向生成实体类(po)、mapper接口和Mapper接口映射文件,能减少我们代码的工作量。详细步骤如下 1、下载mybatis生成架包工具MyBatis_Generator_1.3.1.zip,解压架包把features、plugins文件夹下的架包分别拷贝到eclipse安装目录下的features、plugins文件夹。重启eclipse就行。 解压后图片如下: Eclipse路径如图: 拷贝替换如图: 2、创建generatorConfig.xml文件,安装好mybatis 就能创建generatorConfig.xml 3、配置generatorConfig.xml配置文件,详细如下 [html] view plain copy <?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="D:\\rep\\mysql\\mysql-connector-java\\5.1.19\\mysql-connector-java-5.1.19.jar" /> --> <classPathEntry location="D:\\repo\\com\\oracle\\ojdbc14\\10.2.0.1.0\\ojdbc14-10.2.0.1.0.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl4" userId="xxx" password="xxxx" /> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> </javaTypeResolver> <javaModelGenerator targetPackage="com.pcmall.domain.sale.order" targetProject="pos-service/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mybatis.mapper.sale.order" targetProject="pos-service/src/main/resources"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator targetPackage="com.pcmall.dao.sale.order" targetProject="pos-service/src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <table tableName="hs_zxzflx" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" selectByExampleQueryId="true" enableUpdateByExample="false"> <!-- <generatedKey column="ID" sqlStatement="oracle" identity="true" /> --> </table> </context> </generatorConfiguration> 4、右击generatorConfig.xml 点击Generate MyBatis/iBATIS Artifacts 生成对应接口、接口映射文件、实体类 5、查看结果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值