mybatis的修改怎么写

1.如何修改mybatis generator tinyint byte

首先说说上一篇最后提到的关于自定义注释的问题,想实现这个功能就需要修改org.mybatis.generator.internal.DefaultCommentGenerator这个类。

我将里面一些主要的方法讲下。addJavaFileComment(CompilationUnit compilationUnit)给Java文件加注释,这个注释是在文件的顶部,也就是package上面。

addComment(XmlElement xmlElement)给生成的XML文件加注释。大象将这个方法清空了,不生成注释。

addClassComment(InnerClass innerClass,IntrospectedTable introspectedTable)Java类的类注释。请注意红线的getRemarks()方法,这个remarks属性在原来的FullyQualifiedTable里面是没有的,这是大象自己加上去的,就是为了保存表的注释信息。

那是在哪里加进去的呢?请看org.mybatis.generator.internal.db.DatabaseIntrospector这个类,大概浏览下就会发现,数据库表以及列的信息读取,类型设置都是由它来完成的,定位到608行,正好这里是个空行,插入几行代码。如下:这样我们就取到了表的注释信息,看到这里应该就会明白了吧?另外我需要说明的是,想通过databaseMetaData.getTables()来获得表注释的童鞋,这个做法是没用的,大象已经试过了,这个结果集里面的rs.getString("REMARKS")得到的是一个空字符串,什么都木有。

而且大象还想吐槽下,网上一大堆说返回的这个结果集是10列,呵呵,是的么?我debug了好久发现它还是只有5列,不知道这10列是从哪来的,请打印出10列的童鞋告之是怎么做的,我用的mysql驱动是5.1.29addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn)Java属性注释。注释为空就不给属性添加。

addGetterComment(Method method,IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn)给getter方法加注释。这里添加注释的方法和Field一样,大象把这个方法以及addSetterComment方法都清空了,因为我比较习惯把注释加到属性上面,如果你习惯在getter方法上面加注释可以自行改一下。

上面这些修改做完后,记得要在org.mybatis.generator.codegen.mybatis3.model.BaseRecordGenerator的61行增加下面这行代码:commentGenerator.addClassComment(topLevelClass, introspectedTable);因为mybatis-generator源码中本来就是不加类注释的。大家都在不同的公司,要求肯定都不一样,大象没法满足所有人,只对该类做了一定程度的修改,姑且把它当做一个示例模板吧,主要是弄明白怎么改就成了。

mybatis-generator在1.3.2版里对生成xml的namespace作了修改,不再用表名当为namespace的值,而是用包结构+类名+Mapper后缀的形式设置,大象不喜欢这么复杂做法,所以这里需要改一改,只保留类名+Mapper的命名形式。去掉org.mybatis.generator.api.IntrospectedTable类的907行与908行代码。

接下来再来说说对大对象类型的处理,mybatis-generator默认会把所有jdbcType为:BINARY、BLOB、CLOB、LONGVARBINARY、LONGVARCHAR、VARBINARY这些类型都作为大对象,反应出来的效果就是生成的pojo类会多一个类名+WithBLOBs.java的文件(含有的大对象个数大于1时),而在XML里面也会增加一个id为ResultMapWithBLOBs的resultMap,它继承BaseResultMap,大象一向喜欢简单的风格,这看得太不爽了。如果你觉得无所谓,不需要修改,请跳过这段往下看。

表中的text或blob等类型,通过databaseMetaData.getColumns()取出来后,它的rs.getInt("DATA_TYPE")值是与java.sql.Types对应的。text类型的值:Types.LONGVARCHARblob类型是值:Types.LONGVARBINARY它用org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl解析java类型与jdbc类型,然后设置到org.mybatis.generator.api.IntrospectedColumn的jdbcTypeName属性里,最关键的地方到了,IntrospectedColumn类第156行有个isBLOBColumn()方法,它就是用来判断是否生成xxxWithBLOBs.java和ResultMapWithBLOBs的条件。

当然mybatis-generator不会这么直接用,它在里面定义了一个Rules接口,由它来统一进行调用。所以我们只需要把isBLOBColumn()里面的代码都去掉,直接返回false就可以了,再结合配置文件中的columnOverride属性就能达到目的。

jdbcType指定的值就是生成xml后result里面对应的类型,javaType与生成的pojo里面属性类型一致,这里其实可以不定义javaType,但是当数据库的表字段有的定义为tinyint时,如果不给它指定类型,那么默认生成的java类型就是java.lang.Byte,假如你想转换类型,而且保证不会超出字段类型的大小限制,那么你可以将它的javaType设为java.lang.Integer经过这么一番修改之后,输出结果已经比较理想了,但是xml文件看上去还是有点问题,元素与元素之间没空行,看起来好别扭。恩,这里要给它加上空行,所以请找到org.mybatis.generator.api.dom.xml.XmlElement类的getFormattedContent方法,这个方法有个参数:indentLevel,通过名字我们可以很直观的理解它的作用就是来控制缩进。

mybatis的修改怎么写

转载请注明出处育才学习网 » mybatis的修改怎么写

知识

矫字草书怎么写

阅读(181)

本文主要为您介绍矫字草书怎么写,内容包括骄字草书怎么写,姣字的草书怎么写,矫雪倩的草书怎么写。骄的草书写法:二、骄的释义:自高自大,看不起别人:戒~戒躁。胜不~,败不馁。2、猛烈;炎热:~阳。三、骄的组词:骄劣、骄恣、骄贵、骄易、

知识

小偷的贼怎么写

阅读(133)

本文主要为您介绍小偷的贼怎么写,内容包括关于小偷(贼)的故事,小偷怎么写,小偷的外貌描写。(1)建行一同志转送:今天经过一栋大楼门口,门口有一提款机。有一个老伯,一直看著我走过他身边,突然叫住我。他说他不识字,拿一张提款卡要我

知识

一年级星空怎么写

阅读(181)

本文主要为您介绍一年级星空怎么写,内容包括一年级看图说话“瞭望星空”怎么写,一年级看图写话星空宇航员,描写,夜晚,亮晶晶,星星,写一段话,一年级的。当我们抬头仰望星空,看到繁星点点:彗星、流星及恒星等。这些各式各样的星星组成了像太阳

知识

夫妻契约怎么写

阅读(167)

本文主要为您介绍夫妻契约怎么写,内容包括夫妻协议怎么写,夫妻协议书怎么写才有效,夫妻协议书怎么写才有效。婚姻协议书要依据原则:平等、自愿、合法、诚实信用,协商一致来制定,婚姻协议书的法律效力生效。首先,协议的签订需要双方当事人自愿平

知识

四季畅想曲怎么写

阅读(313)

本文主要为您介绍四季畅想曲怎么写,内容包括黄芪的四季畅想曲第三段画线句在描写中采用了怎样的修辞方法,融入,《黄芪的四季畅想曲》1.本文描绘黄芪的四季,为什么要提及以为被村,《夏日畅想》作文怎么写。生命如歌,演奏的是四季乐章。秋天收

知识

刑事附带民事诉讼怎么写

阅读(175)

本文主要为您介绍刑事附带民事诉讼怎么写,内容包括刑事诉讼附带民事诉讼申请怎么写,附带刑事民事诉讼状怎么写,刑事附带民事诉讼怎么写。要求被告人在承担刑事责任的同时还要进行民事赔偿,不是写刑事诉讼附带民事诉讼申请,而是写刑事附带民事

知识

满月繁体字怎么写

阅读(483)

本文主要为您介绍满月繁体字怎么写,内容包括七月繁体字怎么写,几的繁体字怎么写的,几字繁体字怎么写。月字的繁体字写法是它本身。七月的繁体字写法如下图:

知识

mybatis执行多条语句怎么写

阅读(179)

本文主要为您介绍mybatis执行多条语句怎么写,内容包括mybatis批量执行多条update语句,mybatis是不是不能执行多条sql语句,mybatis怎么一次执行多条sql。MySQL没有提供直接的方法来实现批量,但可以使用case when语法来实现这个功能。 UPDATE

知识

html表格居中代码怎么写

阅读(399)

本文主要为您介绍html表格居中代码怎么写,内容包括html表格居中代码,html居中代码怎么写,html表格居中代码。首先打开vscode编辑器,新建一个html文档,里面写入一个外层的div,再加入一行table表格:

知识

html表格文字代码怎么写

阅读(191)

本文主要为您介绍html表格文字代码怎么写,内容包括html表格代码怎么写的,用html标签做一个表格,用html代码编写表格代码该怎么写。用到拆分合并单元格,手写挺麻烦的,先用dw在设计视图片实现,然后再返回代码视图,复制即可.代码如下:1234567891011

知识

if满足两个条件怎么写

阅读(182)

本文主要为您介绍if满足两个条件怎么写,内容包括Excelif条件,同时满足2个条件怎么写,逻辑函数if如果同时满足两个条件怎样写,excel中IF公式中同时满足2个条件的如何设置。下图是包含姓名、笔试成绩、面试成绩的工作表,现在想在找出笔试和面

知识

仓库申请报告怎么写

阅读(165)

本文主要为您介绍仓库申请报告怎么写,内容包括仓库报告怎么写,仓库维修申请报告怎么写,仓管员工作报告怎么写。仓库工作报告范文时光飞逝一转眼到科曼司已5个月有余了,记得新春伊始进入科曼时还是一个对公司产品相对陌生的新手,经过几个月的

知识

体育英文怎么写的

阅读(204)

本文主要为您介绍体育英文怎么写的,内容包括体育的英语单词怎么写,体育用英语怎么说,体育的英语怎么写。体育PE (Physical Education) 赛跑 race 滑冰 skating 跳水 diving 游泳 swim 举重 we

知识

excel中怎么写平方

阅读(207)

本文主要为您介绍excel中怎么写平方,内容包括Excel中如何输入平方,在EXCEL如何输入求平方的公式,excel中平方怎么输入。Excel中输入平方的方法,以Excel2010为例,具体操作如下:输入数字“32”,选中数字,右击选择【设置单元格格式】,在“数字页面

知识

修改附件怎么写

阅读(167)

本文主要为您介绍修改附件怎么写,内容包括word文档,显示“附件描述”的代码怎么改(已解决),已收邮件中的附件能够修改吗怎么改啊。我国党政机关通行的公文字体格式要求如下:文件标题,字号用二号,居中排列,可以根据标题句意进行适当断行,比较正式的

知识

对论文的修改情况说明怎么写

阅读(524)

本文主要为您介绍对论文的修改情况说明怎么写,内容包括论文修改说明怎么写,修改说明怎么写,论文修改说明写在哪里。尊敬的编辑您好:首先,感谢您和审稿专家的审稿意见。根据您和专家的意见,逐一说明修改如下。1.2.为了便于您的复审,现将修改部分

知识

论文老师修改意见怎么写

阅读(236)

本文主要为您介绍论文老师修改意见怎么写,内容包括请老师修改论文怎么写,毕业论文指导老师意见怎么写,毕业论文指导老师意见怎么写。该生的论文比较符合当前的实际,有一定的理论价值和实践意义,但在结构上不够合理,希望进行修改,同意开题。6261

知识

论文修改申请怎么写

阅读(253)

本文主要为您介绍论文修改申请怎么写,内容包括毕业论文题目修改的申请书怎么写,论文修改说明怎么写,研究生学位论文修改认定书怎么写。申请人应在通过全部课程考试后的一年内提交学位论文。申请专业所属院、系(所)应指定指导教师对申请人的论

知识

mybatis的配置文件怎么写

阅读(219)

本文主要为您介绍mybatis的配置文件怎么写,内容包括mybatis的配置文件怎么写,mybatis的配置文件怎么写,mybatis主配置文件怎么写。在src/main/resource中创建MyBatis配置文件:mybatis-config.xml。typeAliases标签:给类

知识

开题报告修改意见怎么写

阅读(399)

本文主要为您介绍开题报告修改意见怎么写,内容包括毕业论文开题报告指导老师意见怎么写,课题开题报告所在单位意见怎么写,课题开题报告指导老师意见怎么写。学生xx的选题,紧扣专业方向、紧扣现实,做到理论与实践结合、与实习体会结合,有现实意

知识

论文修改情况说明怎么写

阅读(2905)

本文主要为您介绍论文修改情况说明怎么写,内容包括修改说明怎么写,论文修改说明怎么写,论文修改说明写在哪里。尊敬的编辑您好:首先,感谢您和审稿专家的审稿意见。根据您和专家的意见,逐一说明修改如下。1.2.为了便于您的复审,现将修改部分用蓝

知识

用dw怎么修改网页代码怎么写

阅读(269)

本文主要为您介绍用dw怎么修改网页代码怎么写,内容包括如何将网页代码导入dw里修改,如何将网页代码导入dw里修改,如何用dreamweaver修改网站的源代码,修改后怎么上传怎么在DM。用记事本修改 或者 editplus(这个比较强大)一个ASPX页面由两部分

[/e:loop]