时间:2015-07-02 来源:

MyBatisGenerator生成DAO——序列化 【编程语言】

MyBatis Generator生成DAO 的时候div+css+js切图,生成的类都是没有序列化的.

哇咔咔,div+css+js切图太好用了.Example都加上了.

果然SerializablePlugin,已经给我们提供好了.

这次明显更刚才的套路不一样了.没有抱太大希望.

于是下载了SerializablePlugin的源码,页面div重构model可以有psd切图html,Example肯定也可以有.不出所料稍作修改就加上了.(直接用原来的源码添加了自己的代码)

<plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> 马上高端大气了起来.每个model对象都乖乖的带上了Serializable接口.

版权声明:本文为博主原创文章,手机div+css未经博主允许不得转载.

无奈只有model对象是不够的web外包,做分布式开发的话,web外包Example对象也必须要序列化.

不过问题还没有完网页切图制作,Example里还有内部类,div页面如果不序列化还是会报错.

import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.java.*; import java.util.List; import java.util.Properties; /** * Created by tiantao on 15-7-1. */ public class SerializablePlugin extends PluginAdapter { private FullyQualifiedJavaType serializable; private FullyQualifiedJavaType gwtSerializable; private boolean addGWTInterface; private boolean suppressJavaInterface; public SerializablePlugin() { super(); serializable = new FullyQualifiedJavaType("java.io.Serializable"); //$NON-NLS-1$ gwtSerializable = new FullyQualifiedJavaType("com.google.gwt.user.client.rpc.IsSerializable"); //$NON-NLS-1$ } public boolean validate(List<String> warnings) { // this plugin is always valid return true; } @Override public void setProperties(Properties properties) { super.setProperties(properties); addGWTInterface = Boolean.valueOf(properties.getProperty("addGWTInterface")); //$NON-NLS-1$ suppressJavaInterface = Boolean.valueOf(properties.getProperty("suppressJavaInterface")); //$NON-NLS-1$ } @Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, introspectedTable); return true; } @Override public boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass, introspectedTable); return true; } @Override public boolean modelRecordWithBLOBsClassGenerated( TopLevelClass topLevelClass, introspectedTable); return true; } /** * 添加给Example类序列化的方法 * @param topLevelClass * @param introspectedTable * @return */ @Override public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, introspectedTable); return true; } protected void makeSerializable(TopLevelClass topLevelClass, introspectedTable); topLevelClass.addField(field); } } }

import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.java.*; import java.util.List; import java.util.Properties; /** * Created by tiantao on 15-7-1. */ public class SerializablePlugin extends PluginAdapter { private FullyQualifiedJavaType serializable; private FullyQualifiedJavaType gwtSerializable; private boolean addGWTInterface; private boolean suppressJavaInterface; public SerializablePlugin() { super(); serializable = new FullyQualifiedJavaType("java.io.Serializable"); //$NON-NLS-1$ gwtSerializable = new FullyQualifiedJavaType("com.google.gwt.user.client.rpc.IsSerializable"); //$NON-NLS-1$ } public boolean validate(List<String> warnings) { // this plugin is always valid return true; } @Override public void setProperties(Properties properties) { super.setProperties(properties); addGWTInterface = Boolean.valueOf(properties.getProperty("addGWTInterface")); //$NON-NLS-1$ suppressJavaInterface = Boolean.valueOf(properties.getProperty("suppressJavaInterface")); //$NON-NLS-1$ } @Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, introspectedTable); return true; } @Override public boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass, introspectedTable); return true; } @Override public boolean modelRecordWithBLOBsClassGenerated( TopLevelClass topLevelClass, introspectedTable); return true; } /** * 添加给Example类序列化的方法 * @param topLevelClass * @param introspectedTable * @return */ @Override public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, introspectedTable); for (InnerClass innerClass : topLevelClass.getInnerClasses()) { if ("GeneratedCriteria".equals(innerClass.getType().getShortName())) { //$NON-NLS-1$ innerClass.addSuperInterface(serializable); } if ("Criteria".equals(innerClass.getType().getShortName())) { //$NON-NLS-1$ innerClass.addSuperInterface(serializable); } if ("Criterion".equals(innerClass.getType().getShortName())) { //$NON-NLS-1$ innerClass.addSuperInterface(serializable); } } return true; } protected void makeSerializable(TopLevelClass topLevelClass, introspectedTable); topLevelClass.addField(field); } } }

还以为要手工添加(开始是手工添加的),今天遇到分页的问题,div+css+js切图才发现生成的时候可以添加插件.既然分页可以有插件承接网站前端,序列化是不是也有呢.

无意间发现了另一个插件类,页面div重构也是包里自带的.发现了宝藏psd切图html,这里竟然有对内部类的操作.

哇咔咔,手机div+css成功了.

import java.util.List; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType; import org.mybatis.generator.api.dom.java.InnerClass; import org.mybatis.generator.api.dom.java.JavaVisibility; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.Parameter; import org.mybatis.generator.api.dom.java.TopLevelClass; import org.mybatis.generator.codegen.ibatis2.Ibatis2FormattingUtilities; /** * This plugin demonstrates adding methods to the example class to enable * case-insensitive LIKE searches. It shows hows to construct new methods and * add them to an existing class. * * This plugin only adds methods for String fields mapped to a JDBC character * type (CHAR, etc.) * * @author Jeff Butler * */ public class CaseInsensitiveLikePlugin extends PluginAdapter { /** * */ public CaseInsensitiveLikePlugin() { super(); } public boolean validate(List<String> warnings) { return true; } @Override public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, find the Criteria inner class for (InnerClass innerClass : topLevelClass.getInnerClasses()) { if ("GeneratedCriteria".equals(innerClass.getType().getShortName())) { //$NON-NLS-1$ criteria = innerClass; break; } } if (criteria == null) { // can't find the inner class for some reason, "value")); //$NON-NLS-1$ StringBuilder sb = new StringBuilder(); sb.append(introspectedColumn.getJavaProperty()); sb.setCharAt(0, "and"); //$NON-NLS-1$ sb.append("LikeInsensitive"); //$NON-NLS-1$ method.setName(sb.toString()); method.setReturnType(FullyQualifiedJavaType.getCriteriaInstance()); sb.setLength(0); sb.append("addCriterion(\"upper("); //$NON-NLS-1$ sb.append(Ibatis2FormattingUtilities .getAliasedActualColumnName(introspectedColumn)); sb.append(") like\", \""); //$NON-NLS-1$ sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ criteria.addMethod(method); } return true; } } 把原来的方法再优化一下下.

点击次数:11373
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日【云分析】之五《如何选择适合你的“云”》 【编程语言】2015年04月13日与WIFI操作相关的工具类 【编程语言】2015年04月02日利用远程注册表加强系统安全2014年01月29日ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能【Web前端】2015年05月11日iOSUIScrollView的代理的使用及缩放时代理监听的几个方法 【移动开发】2015年04月13日jquery事件对象属性小结2014年01月29日探索中国软件的智造之路【系统运维】2015年08月29日Java容器HashMap与HashSet的学习 【移动开发】2015年06月05日关于C++中虚拟继承的一些总结分析2014年01月30日阿里巴巴2015实习笔试题分布式系统中的RPC请求经常出现乱序的情况 【移动开发】2015年05月13日hdu1022TrainProblemI【综合】2015年04月28日Hdu1172猜数字【编程语言】2014年11月17日【POJ2114】Boatherds树分治 【移动开发】2015年03月17日函数指针 【Web前端】2015年07月24日第一章工欲善其事必先利其器—AndroidSDK工具(5)【综合】2014年12月29日swift调用webservice 【编程语言】2014年12月25日HDUACM1007QuoitDesign分治法求最近点对 【数据库】2015年06月05日iOS开发——仿淘宝添加到购物车的动画效果实现 【架构设计】2015年01月04日文件打开过多(Toomanyopenfiles)下 【移动开发】2015年03月26日IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)2017年05月10日【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序 【综合】2015年07月06日myeclipse安装jQuery插件的方法2014年01月29日poj3696TheLuckiestnumber欧拉函数在解a^x=1modm的应用 【移动开发】2015年06月05日PAT(BasicLevel)Practise(中文)1023.组个最小数(20) 【编程语言】2015年08月30日开源解压缩工具7-Zip9.24alpha ,,2016年06月29日图像识别算法能甄别美丽 1,收藏 ,,2016年07月24日LAMP环境搭建4-整合 【编程语言】2015年06月17日chrome跨域【数据库】2015年03月02日7个去伪存真的JavaScript面试题【移动开发】2015年08月29日使用CSS3画出一个叮当猫(超级可爱!) 【移动开发】2015年08月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)