范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

修改mybatisgenerator中数据库类型和Java类型的映射关系

  使用 mybatis-generator 发现数据库类型是 tinyint(4) , 生成 model 时字段类型是 Byte ,使用的时候有点不便
  数据库的类型和 Model 中 Java 类型的关系是由 JavaTypeResolver 控制的, 查资料发现可以在生成配置中指定表中的某一个字段的 JavaType, 但不能全局配置.
  如果想改某一个表的话某个字段, 只需要在 table 标签下指定  即可
  如果想要改全局就没那么容易了.
  官方文档:http://www.mybatis.org/genera...
  查看配置文档发现有一个 javaTypeResolver 标签, 有一个生成器的默认实现package org.mybatis.generator.internal.types;  import java.math.BigDecimal; import java.sql.Types; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties;  import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.JavaTypeResolver; import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType; import org.mybatis.generator.config.Context; import org.mybatis.generator.config.PropertyRegistry; import org.mybatis.generator.internal.util.StringUtility;  /**  *   * @author Jeff Butler  */ public class JavaTypeResolverDefaultImpl implements JavaTypeResolver {      protected List warnings;      protected Properties properties;      protected Context context;      protected boolean forceBigDecimals;      protected Map typeMap;      public JavaTypeResolverDefaultImpl() {         super();         properties = new Properties();         typeMap = new HashMap();          typeMap.put(Types.ARRAY, new JdbcTypeInformation("ARRAY", //$NON-NLS-1$                 new FullyQualifiedJavaType(Object.class.getName())));         typeMap.put(Types.BIGINT, new JdbcTypeInformation("BIGINT", //$NON-NLS-1$                 new FullyQualifiedJavaType(Long.class.getName())));         typeMap.put(Types.BINARY, new JdbcTypeInformation("BINARY", //$NON-NLS-1$                 new FullyQualifiedJavaType("byte[]"))); //$NON-NLS-1$         typeMap.put(Types.BIT, new JdbcTypeInformation("BIT", //$NON-NLS-1$                 new FullyQualifiedJavaType(Boolean.class.getName())));                  等等等...
  可以发现是把数据库类型和 JavaType 使用 map 映射起来了, 要是能改这个东西就好了
  在网上搜索没有找到合适的扩展点, 在官方仓库中搜到了一点相关的东西
  参考:https://github.com/mybatis/ge...
  如果想控制映射关系, 有两个方案编写一个插件扩展 JavaTypeResolverDefaultImpl 并更改 calculateJavaType 方法, 在 TypeResolver 配置自己的实现
  显然第二个实现起来比较简单, 我们的要求不是很复杂, 不用修改 calculateJavaType, 所以可以直接覆盖 org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl#typeMap 中的映射关系
  首先把 mybatis-generator 源码拉下来 ,打开 org.mybatis.generator.internal.types 包新建一个类, 继承原有的 JavaTypeResolverDefaultImpl, 然后在构造中覆盖原有配置package org.mybatis.generator.internal.types;  import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;  import java.sql.Types;  public class MyJavaTypeResolverDefaultImpl extends JavaTypeResolverDefaultImpl {      public MyJavaTypeResolverDefaultImpl() {         super();         //把数据库的 TINYINT 映射成 Integer         super.typeMap.put(Types.TINYINT, new JdbcTypeInformation("TINYINT", new FullyQualifiedJavaType(Integer.class.getName())));     } }
  完成以后整体 install 到本地, 拉下来的版本号是 1.3.7-SNAPSHOT, 注意改一下自己项目依赖的版本号
  在生成配置文件中把 javaTypeResolver 修改成自己的实现类 
  这样的话生成代码时就会把数据库的 tinyint 变成 Java 中的 Integer

索尼Xperia1IV国行发布8499元起唯一连续光学变焦23日晚1900,索尼中国大陆发布会如期而至,正式发布了新一代旗舰索尼Xperia1IV国行版。国行版在配置上与海外版本完全保持一致,最大的亮点就是影像部分,其配备了120fps的别具一格的威马汽车M7,让你体会新能源车的发展从智能化新能源车第一次进入大众视野,到现在被大众普遍接纳,持续更新的乘驾感受可以说顺从了大量人的追求。威马汽车自创立至今,在信息科技行业持续深耕细作,首先占领人工智能技术在智能制造区块链数字版权管理的创新与挑战毕文轩上海交通大学凯原法学院博士研究生牛晓静上海交通大学凯原法学院博士研究生内容摘要在传统环境中,对数字版权的管理与保护仍然存在诸多难以解决的问题,例如对作品和作者信息缺乏公开透明RedmiNote11TPro搭载澎湃P1支持120W秒充IT之家5月23日消息,小米RedmiNote11T系列将于5月24日正式发布,该系列包含RedmiNote11TPro和RedmiNote11TPro两款手机,今天官方再次对新机摩托罗拉官宣骁龙8新机首发2亿像素主摄,7月发布集微网消息,摩托罗拉官方今日宣布,摩托罗拉全新骁龙8新机将开启2亿像素移动摄影时代,会在7月正式发布。此前有爆料称,开发代号为Frontier的摩托罗拉edge30Ultra将首发摩托罗拉Razr3正式确认,搭载Snapdragon8Gen1芯片组据传摩托罗拉正在开发一款可折叠手机,该手机将被称为MotoRazr3。这可能是第一款采用高通Snapdragon8Gen1芯片组的芯片,这意味着它将基于台积电的4nm工艺制造,因此摩托罗拉新骁龙8旗舰官宣7月发布,2亿像素主摄加持IT之家5月23日消息,高通刚刚推出了全新的骁龙8Gen1,基于台积电4nm工艺制造,CPU和GPU的主频都提升10,整体芯片功耗降低15,CPU大核主频提到3。2GHz。随后,一疯狂的矿石!5天5夜,暴涨600倍中国基金报记者南深近两年锂价狂飙之下,一座锂矿的拍卖创出天价。5月21日7时43分,历时五天五夜,经过3448次出价3418次延迟累计97万人围观,斯诺威矿业54。2857股权最终摩托罗拉edgeX40Max继续内卷,2亿主摄2K屏骁龙8Gen1Plus近几年的手机市场变化巨大,新机数量明显增加,为了增强市场占有率,各大手机厂商都使出了浑身解数,竞争异常激烈。有一家手机厂商非常特殊,虽然新机并不多,但却拥有极高的关注度,这就是摩托互联网降薪方式,光是薪资倒挂就逼退了不少老员工互联网降薪方式1高薪聘请应届生以此薪资倒挂逼往期员工离职2招一个应届生的同时也会裁掉同样的一个工作多年的高薪员工。比如一名应届生40w,那么裁掉5080w的老员工。以此降本增效。疑日本实体店能干翻电商,我国却不行?有四大原因大家都知道,进入21世纪之后,我国就已经生活在了互联网的社会,尤其是最近这些年,我国的互联网发展速度非常快,也催生了众多电商平台的产生。从最先成立的阿里和京东,再到2015年成立的
屏幕绝佳,质感上乘,OPPOK9Pro手机开箱目前这个时代里,新款手机可以说是层出不穷,一波接着一波。OPPOK系列的手机一直是以中端定位,不俗表现获得了很多小伙伴的青睐。最近面世的这款OPPOK9Pro手机在2K价位内为我们MicrosoftOneNote和Evernote你更喜欢哪一个,为什么?一定是Evenote,我已经用了6年多。一直是付费用户原因以下几点点OneNote国内同步使用卡的要死。(最重要)OneNote不够简单,记笔记我需要的是简单快捷。Evenote已为什么苹果手机把64G的版本取消了?让我来告诉你们吧,64G的利润比128G的利润少的多,但是手机里面128G内存成本只比64G成本高一点点,所以它不卖64G,苹果不像小米魅族华为等国产机,看人们需求来做,而是利润永如果淘宝支付宝倒闭了,对于我们的生活是利大于弊还是弊大于利?如果淘宝支付宝倒闭了,对我们的生活是利大于弊的!淘宝现在已经很少有人继续追捧了,很多中小商家退出充分说明在淘宝上已经挣不到钱了,流量大多已经被京东和拼多多抢走了,因为论便宜拼多多是苹果6s与苹果6Splus有什么差别?两款手机虽然都采用了苹果的A9处理器,但是制造工艺不一样,iphone6s采用了三星的14nm制造工艺,iphone6splus采用了台积电16nm的制造工艺,带来了功耗散热方面的您的车辆已被禁止高架通行,很多车主收到这条短信,咋回事?这种怪异的短信,明显有违常理,普通人不理它即可。一般都是骗取个人信息,或者电信诈骗的行为。如果你是较真的人,一定要知道怎么回事,你可以通过下面三种方法来确定是怎么回事。1百度求证最实时健康监控超长续航,OPPOWatchFree让你体验健康生活工作再忙也不要忽略身体健康,工作之余记得健身,正好这个时候缺一个能监测运动的东西,让你能随时记录自己的运动状态。OPPO在前段时间发布了OPPOWatchFree,相比OPPOWa为什么感觉好多人都黑比亚迪?现在黑比亚迪的一般不是国人,是取了中国网名的日本人。对一般家庭来说,房子车子是最重要,日本人在一般家电上已经败给中国,例如电视机洗衣机电饭煲而最赚钱的汽车,日本人还在领先。在北上广红帽linux系统与UOS命令对比1软件包管理系统目前在各Linux发行版中,比较著名的软件包管理系统有如下两种RPMRedHatFedora,Suse,Mandriva使用的是这类管理系统。DPKGDebian,如果有一天华为真的用上自己的自研系统,选手机时你会选择华为手机这个品牌吗?这问题问的!假如美国只针对华为,不允许华为使用安卓系统以及各类芯片,反而允许其他中国品牌继续使用。那么,中国政府只会加大对芯片生产制造也得投入,大力扶持华为!在这种局面下,我很难找新知丨人工智能从游戏背景人进阶失控玩家元宇宙畅想,虚实的边界在哪里来源交汇点新闻客户端交汇点讯活着,是一种怎样的感觉?自由城游戏世界里,日复一日穿着蓝色T恤,喝着同种咖啡,穿过枪林弹雨往返家和公司的非玩家角色(NPC)盖(Guy),在偶遇后真爱后