一、Mybatis逆向工程生成的文件:
BlogMapper.xml : mapper映射文件
BlogMapper.java:mapper接口文件
Blog.java:实体类
BlogExample.java:实体类对应的example。用于添加条件,相当于where后面的部分。
BlogWithBLOBs.java:继承了实体类Blog。同时在BlogMapper.xml中继承了BaseResultMap,有自己特殊的字段,对应数据表的text、longvarchar等长类型,如果数据库没有长数据类型则不会生成该文件。
检索大字段时,则需要使用selectByExampleWithBLOBs ,一般情况则使用selectByExample 即可。
二、BlogExample.java 和 BlogWithBLOBs.java的区别:
进行逆向工程的数据表如下,可以看出该表包含了text和longtext类型。
逆向生成的Blog和BlogWithBLOBs 实体类,BlogWithBLOBs继承了Blog类,可以看出text和longtext这两个长类型是单独在BlogWithBLOBs类中实现的。
//Blog.java的代码
package com.online.domain;
public class Blog {
private Integer id;
private String title;
private String summary;
//省略get和set方法
}
//BlogWithBLOBs.java的代码
package com.online.domain;
public class BlogWithBLOBs extends Blog {
private String content;
private String htmlcontent;
//省略get和set方法
}
在mapper.xml中可以看出ResultMapWithBLOBs继承于BaseResultMap:
<mapper namespace="com.online.dao.BlogMapper" >
<resultMap id="BaseResultMap" type="com.online.domain.Blog" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="title" property="title" jdbcType="VARCHAR" />
<result column="summary" property="summary" jdbcType="VARCHAR" />
</resultMap>
<resultMap id="ResultMapWithBLOBs" type="com.online.domain.BlogWithBLOBs" extends="BaseResultMap" >
<result column="content" property="content" jdbcType="LONGVARCHAR" />
<result column="htmlContent" property="htmlcontent" jdbcType="LONGVARCHAR" />
</resultMap>
当然也可以去除BlogWithBLOBs.java类,解决方法是在generatorConfig.xml中对text等类型的字段进行类型转换,然后删除之前生成的文件,重新逆向生成,BlogWithBLOBs类就消失了:
<!-- 指定数据库表 数据库表名:tableName 对应的实体类名:domainObjectName -->
<table tableName="blog" domainObjectName="Blog">
<columnOverride column=