mybatis generator为什么会生成withblobs

 我来答
波谷很忙
推荐于2016-10-21 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2540
采纳率:88%
帮助的人:1506万
展开全部
1.设置mapper文件重复生成时覆盖旧的文件
将GeneratedXmlFile中isMergeable设置为false,实现方式:修改IntrospectedTableMyBatis3Impl.getGeneratedXmlFiles方法构造xml文件时传入参数false。
GeneratedXmlFile gxf = new GeneratedXmlFile(document,
getMyBatis3XmlMapperFileName(), getMyBatis3XmlMapperPackage(),
context.getSqlMapGeneratorConfiguration().getTargetProject(),
false, context.getXmlFormatter());
2.oracle主键生成方式直接将sql写在generatedKey的statement中。

3.控制是否生成PrimaryKeyClass

IntrospectedTable中的rules属性(接口Rules)中有三个方法:generatePrimaryKeyClass()、generateBaseRecordClass()、generateRecordWithBLOBsClass()控制是否生成三种Model文件。
mybatis提供了三种ModelType: HIERARCHICAL("hierarchical")、FLAT("flat"),CONDITIONAL("conditional");对应三种modelRule:HierarchicalModelRules、FlatModelRules、ConditionalModelRules。
通过在mybatis generator配置文件增加属性defaultModelType=“hierarchical”可以控制不生成PrimarykeyClass。
这种配置会导致只包含联合主键的表不能生成Model,可以通过修改HierarchicalModelRules方法中的generateBaseRecordClass()改为返回true,则可生成对应Model。
曬太陽
2018-05-14 · TA获得超过344个赞
知道小有建树答主
回答量:530
采纳率:0%
帮助的人:89.6万
展开全部
(萌新一枚,我也不是太确定)。。数据库里面对应的某一列属性,如果不是char,varchar常用字符类型,而是text大文本类型,就会针对该条属性的操作后追加WithBlobs,关于实际上使用,我目前还没有感到差别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxh4567
2014-12-29 · TA获得超过6.1万个赞
知道大有可为答主
回答量:2.2万
采纳率:83%
帮助的人:1.3亿
展开全部
本文将简要介绍怎样利用mybatis generator自动生成mybatis 的相关代码:
一、构建一个环境: 
1. 首先创建一个表:
 
sql代码  
create table pet (name varchar(20), owner varchar(20), species varchar(20), sex char(1), birth date, death date); 
2. 然后注入数据
sql代码  
insert into pet values('fluffy', 'harold', 'cat', 'f', '1993-02-04', null); 
insert into pet values('claws', 'gwen', 'cat', 'm', '1994-03-17', null); 
insert into pet values('buffy', 'harold', 'dog', 'f', '1989-05-13', null); 
insert into pet values('fang', 'benny', 'dog', 'm', '1990-08-27', null); 
insert into pet values('bowser', 'diane', 'dog', 'm', '1979-08-31', '1995-07-29'); 
insert into pet values('chirpy', 'gwen', 'bird', 'f', '1998-09-11', null); 
insert into pet values('whistler', 'gwen', 'bird', null, '1997-12-09', null); 
insert into pet values('slim', 'benny', 'snake', 'm', '1996-04-29', null); 
 
注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html
3. 在 mybatis 主页 http://code.google.com/p/mybatis / 上下载 mybatis mybatis -generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis -generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关其他数据库 的 jdbc [本文中使用的是mysql的jdbc] 。
 
二、运行 mybatis -generator 
1. 要运行 generator ,需要给 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="mysql-connector-java-5.1.6-bin.jar" /> 
 
    <context id="db2tables" targetruntime="mybatis 3"> 
 
        <commentgenerator> 
            <property name="suppressdate" value="true" /> 
        </commentgenerator> 
 
        <jdbcconnection driverclass="com.mysql.jdbc.driver" 
            connectionurl="jdbc:mysql://localhost/test" userid="qgd" password ="123456"> 
        </jdbcconnection> 
 
        <javatyperesolver> 
            <property name="forcebigdecimals" value="false" /> 
        </javatyperesolver> 
 
        <javamodelgenerator targetpackage="test.model" 
            targetproject="../src/main/java"> 
            <property name="enablesubpackages" value="true" /> 
            <property name="trimstrings" value="true" /> 
        </javamodelgenerator> 
 
        <sqlmapgenerator targetpackage="test.dao" 
            targetproject="../src/main/java"> 
            <property name="enablesubpackages" value="true" /> 
        </sqlmapgenerator> 
 
        <javaclientgenerator type="xmlmapper" 
            targetpackage="test.dao" targetproject="../src/main/java"> 
            <property name="enablesubpackages" value="true" /> 
        </javaclientgenerator> 
 
        <table tablename="pet" domainobjectname="pet"> 
        </table> 
 
    </context> 
</generatorconfiguration> 
 
这个配置文件提供了 mybatis -generator所需要的参数信息:
  * 其中classpathentry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;   * commentgenerator 是用来除去时间信息的,这在配合类似subversion的代码管理开发工具时使用很有效,因为可以减少没有必要的注释迁入;   * jdbcconnection是指定的jdbc的连接信息;   * javatyperesolver式类型转换的信息,这里并没有用到;   * javamodelgenerator是模型的生成信息,这里将指定这些java model类的生成路径;   * sqlmapgenerator是mybatis 的sqlmapper xml文件的生成信息,包括生成路径等;   * javaclientgenerator是应用开发接口的生成信息;   * table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。
2. mybatis -generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相

此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
应的配置文件的路径即可:
java代码  
java -jar mybatis -generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite 
 
运行后生成的代码包括模型类 test.model.pet 和 test.model.petexample , test.dao.petmapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。
三、使用 mybatis -generator 生成的代码 
1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】
xml代码  
<?xml version="1.0" encoding="utf-8" ?> 
<!doctype configuration 
    public "-//mybatis .org//dtd config 3.0//en" 
    "http://mybatis .org/dtd/mybatis -3-config.dtd"> 
<configuration> 
    <environments default="development"> 
        <environment id="development"> 
            <transactionmanager type="jdbc" /> 
            <datasource type="pooled"> 
                <property name="driver" value="com.mysql.jdbc.driver" /> 
                <property name="url" value="jdbc:mysql://localhost/test" /> 
                <property name="username" value="qgd" /> 
                <property name="password " value="123456" /> 
            </datasource> 
        </environment> 
    </environments> 
    <mappers> 
        <mapper resource="test/dao/petmapper.xml" /> 
    </mappers> 
</configuration> 
2. 另外还要使用然后我们还需要一个main示例开发方法 来调用这些已生成的代码:
java代码  
package test; 
 
import java.io.reader; 
import java.util.list; 
 
import org.apache.ibatis .io.resources; 
import org.apache.ibatis .session.sqlsession; 
import org.apache.ibatis .session.sqlsessionfactory; 
import org.apache.ibatis .session.sqlsessionfactorybuilder; 
 
import test.dao.petmapper; 
import test.model.pet; 
import test.model.petexample; 
 
public class test { 
 
    public static void main(string[] args) throws exception { 
        string resource = "mapperconfig.xml"; 
        reader reader = resources.getresourceasreader(resource); 
        sqlsessionfactory sqlmapper = new sqlsessionfactorybuilder().build(reader); 
        sqlsession sqlsession = sqlmapper.opensession(); 
 
        petexample pet = new petexample(); 
        pet.or().anddeathisnotnull(); 
        try { 
            petmapper mapper = sqlsession.getmapper(petmapper.class); 
            list<pet> allrecords = mapper.selectbyexample(pet); 
            for (pet s : allrecords) 
                system.out.println(s); 
        } finally { 
            sqlsession.close(); 
        } 
    } 

 
这样就可以打印出相应的查询结果信息了。
四、小结 
该示例的完整的eclipse工程见附件mybatis -generator-usage.zip,其中已经包含了示例需要使用的jar包。
本文中只是用到了mybatis -generator 的一部分功能,mybatis -generator 生成代码的方式还包括ant或maven脚本,或者直接使用java api生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。
这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis -generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。

搜索此文相关文章:Mybatis Generator生成代码
此文链接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%83%AD/28621.shtml
转载请注明出处:Mybatis Generator生成代码 - 博客园
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式