1 前言
在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题就是自动生成代码之后,我们还要自己去类文件中把注释加上,如果生成的类较少还好,如果有生成很多类文件,自己加注释是一件繁琐的工作。
通过重写Mybatis Generator的CommentGenerator接口,可以方便地生成自己想要的注释,减少重复工作。
2 使用Java方式执行Mybatis Generator
2.1 IDEA中新建Maven项目
pom.xml中引入jar包
xml version="1.0" encoding="UTF-8"?>
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.example
MyGenerator
1.0-SNAPSHOT
8
8
mysql
mysql-connector-java
8.0.16
org.mybatis.generator
mybatis-generator-core
1.3.7
2.2 创建generatorConfig.xml
随便找个目录放,我放在src/main/resources目录下
xml version="1.0" encoding="UTF-8"?>
"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple" >
name="javaFileEncoding" value="UTF-8"/>
name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
name="suppressAllComments" value="false" />
driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="URL"
userId="user" password="password">
name="useInformationSchema" value="true" />
targetPackage="com.jd.bulk"
targetProject="src/main/java">
name="enableSubPackages" value="true"/>
targetPackage="com.jd.bulk"
targetProject="src/main/resources">
name="enableSubPackages" value="true"/>
type="XMLMAPPER"
targetPackage="com.jd.bulk"
targetProject="src/main/java">
name="enableSubPackages" value="true"/>
tableName="worker" domainObjectName="Worker"/>
2.3 创建main方法,运行Generator
public class Generator {
public static void main(String[] args) throws Exception {
ListString> warnings = new ArrayList(2);
ConfigurationParser cp = new ConfigurationParser(warnings);
File configFile = new File("src/main/resources/generatorConfig.xml");
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(true);
MyBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
运行main方法,生成默认注释如下,并不是我们想要的注释,所以一般会配置为注释不生成:
2.4 实现CommentGenerator接口
重写以下方法,自定义注释
public class MySQLCommentGenerator implements CommentGenerator {
private final Properties properties;
public MySQLCommentGenerator() {
properties = new Properties();
}
@Override
public void addConfigurationProperties(Properties properties) {
// 获取自定义的 properties
this.properties.putAll(properties);
}
/**
* 重写给实体类加的注释
*/
@Override
public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
String author = properties.getProperty("author");
String dateFormat = properties.getProperty("dateFormat", "yyyy-MM-dd");
SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat);
// 获取表注释
String remarks = introspectedTable.getRemarks();
topLevelClass.addJavaDocLine("/**");
topLevelClass.addJavaDocLine(" * " + remarks);
topLevelClass.addJavaDocLine(" *");
topLevelClass.addJavaDocLine(" * @author " + author);
topLevelClass.addJavaDocLine(" * @date " + dateFormatter.format(new Date()));
topLevelClass.addJavaDocLine(" */");
}
/**
* 重写给实体类字段加的注释
*/
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
// 获取列注释
String remarks = introspectedColumn.getRemarks();
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + remarks);
field.addJavaDocLine(" */");
}
/**
* 重写给实体类get方法加的注释
*/
@Override
public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
// 获取表注释
String remarks = introspectedColumn.getRemarks();
method.addJavaDocLine("/**");
method.addJavaDocLine(" * " + method.getName());
method.addJavaDocLine(" */");
}
2.5 修改generatorConfig.xml配置
将generatorConfig.xml文件中的commentGenerator做如下修改,type属性选择自己的实现类
type="com.generator.MySQLCommentGenerator">
name="author" value="Your Name"/>
name="dateFormat" value="yyyy/MM/dd"/>
运行main方法,生成注释如下:
3 使用Maven方式执行Mybatis Generator
Pom.xml文件中增加以下配置,需要引入generator插件时,依赖实现CommentGenerator接口的jar包,要先把自己的jar包install到本地仓库。
否则会报com.generator.MySQLCommentGenerator找不到,其他配置同上。
compile
org.mybatis.generator
mybatis-generator-maven-plugin
1.4.0
src/main/resources/generatorConfig.xml
true
true
mysql
mysql-connector-java
8.0.16
org.example
MyGenerator
1.0-SNAPSHOT
4 源码分析
查看执行Mybatis Generator的main方法,主要分为两部分,解析指定的配置文件与调用生成java文件和Mapper文件的方法
4.1 解析指定的xml配置文件
跟踪解析xml文件的方法cp.parseConfiguration(configFile)发现,底层以Document形式读取xml文件,根据标签名解析各标签属性,保存到Configuration实例中。
其中解析commentGenerator标签的方法parseCommentGenerator(context, childNode)中,会获取commentGenerator标签的type属性值,也就是自定义的”com.generator.MySQLCommentGenerator”类,放到Context实例中。
4.2 调用生成java文件和Mapper文件的方法
xml配置文件解析完成,得到Configuration实例,后面生成文件的工作都会从Configuration实例中获取所需数据。生成文件的方法主要步骤为:1.连接数据库,查询表信息与列信息,2.生成文件内容,3.写入生成文件。
其中生成文件内容时,会根据Context的type属性反射创建MySQLCommentGenerator实例,然后调用自定义的生成注释方法。
如:生成实体类文件的注释,调用addModelClassComment方法
生成字段注释,调用addFieldComment方法
生成Get方法注释,调用addGetterComment方法
在调用addModelClassComment,addFieldComment,addGetterComment等生成注释的方法时,执行的都是MySQLCommentGenerator类的方法,这样就实现了生成自定义注释的功能。
5 总结
通过使用自定义实现CommentGenerator接口,让自动生成的代码加上我们想要的注释,可以省去自己加注释的麻烦。
与一般使用Mybatis Generator生成代码的方式一样,多实现个接口即可。
使用Maven方式运行时,需要在pom.xml引入插件时,依赖自己jar包。作者:京东物流 王建乐
来源:京东云开发者社区 自猿其说 Tech 转载请注明来源
© 著作权归作者所有
举报热门内容
更多精彩内容回顾 2023,NebulaGraph 的这一年的变化奔图加入 openKylin,助力社区打印生态建设LinkWeChat V5.1.1 版本发布,同时恭喜入选“2023开源创新榜”优秀开源项目给科研人的 ML 开源发布工具包curl 项目已被接受为 CVE 编号机构 (CNA)Tianji v1.4.3 发布, 聚合网站流量分析、监控、服务器状态NTP(网络时间协议)设计者 David L. Mills 去世韩国 Kakao 开源多模态大语言模型 HoneybeeICLR 2024 Oral | MetaGPT: LLM Agent 领域第一高分论文,全网 Star 数最高的多智能体框架:tada::tada: wmproxy 0.2.5 发布,新增 websocket 代理,支持负载均衡,内网穿透Calibre 7.4 发布,功能强大的开源电子书工具ModStartCMS v8.0.0 列表自定义字段过滤,用户账号安全升级OurBMC 首个版本 1.0.0 正式发布!CudaText 1.208.5 发布,跨平台的文本编辑器对标 LangChain,一个使用 Java 开发的 LLM(大语言模型)应用开发框架Python 3.13 Alpha 3SecBench:首个网络安全大模型评测平台发布ReiserFS 作者在狱中就被 Linux 内核弃用发表评论周鸿祎回应坚定支持华为:因为 360 也被制裁了写在 t-io star 数在 8888OpenTiny Vue 组件库3.12.0 发布:文档大优化!增加水印和二维码两个新组件where字句中,表达式"age between 20 and 30"等同于:PostgreSQL业务不停机数据迁移!一文搞懂得物前端监控OurBMC社区介绍AIGC技术在淘淘秀场景的探索与实践使用Java 17中的record替代Lombok的部分功能OpenHPC 社区宣布正式支持 openEuler【最佳实践】利用OpenNJet实现灰度发布多云系列|10个关键的多云战略:云计算成本的完整可视性数智化时代,亚信安慧AntDB邀您一起复盘年度100个值得学习的好案例OurBMC社区贡献指南之U-Boot开发指南全套数据库学习PPT浙商银行全栈财务管理系统完成操作系统迁移,对金融行业财务系统建设具有示范作用免费下载 | MySQL 运维操作手册定义现代化实时数据仓库,SelectDB 全新产品形态全面发布C# 主要趋势:新版本 C# 得到持续采用,C# 11 占比 42% | 2023 开发者生态系统SpinalHDL的使用和开发经验研讨会图文结合丨带你轻松玩转MySQL Shell for GreatSQL资料干货 | 数据库十大等待事件Apache SeaTunnel Web 安装部署指南TDengine + WhaleStudio =?试试用Markdown来设计表单MQTT的java客户端AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库如何在短视频中合成“虚拟数字人”?生鲜电商十年老将食行生鲜 通过火山引擎数智平台提升15%下单用户Apache Doris 2.0 如何实现导入性能提升 2-8 倍MySQL等保三调整OpenCloudOS + 英特尔第四代至强处理器:完美适配,加速未来活动回顾|OpenTiny 参与线下大会:共创开源未来,助力低代码技术创新MagicOS 8.0,焕新升级。构建易于运维的 AI 训练平台:存储选型与最佳实践15.3K Star,超好用的开源协作式数字白板:tldraw推出 RustRover – JetBrains 出品的独立 Rust IDEzone.js由入门到放弃之二——zone.js API大练兵亚信安慧AntDB携核心业务系统数据库升级改造方案亮相“2023年国有企业应用场景发布会”JeecgBoot低代码平台 v3.6.0大版本发布—1024 程序员节快乐~议题征集|Flink Forward Asia 2023 正式启动基于 openEuler 构建轻量、极致性能的 DPU-OS ,打造 DPU 软件生态底座生态兼容性进一步提升!白鲸开源 WhaleStudio 与火山引擎ByteHouse完成产品互认AntDB数据库将携创新性解决方案亮相2023可信数据库发展大会JDBC Vertica Source Connector 使用文档openEuler RISC-V 操作系统开发实习生招聘(BJ106)cache 应用加速2023 GitHub年度排行榜,JEECG上榜第三名,势头依然很猛~GitOps实践指南:GitOps能为我们带来什么?音视频数字化进行时,MediaBox重新定义「高易用」【实战经验】如何动态配置NGINX Map?这份“十倍程序员”进阶指南在 TOP100Summit 引发热议高效实时!麒麟信安操作系统(嵌入式版)V3来了,为工业领域数智化转型夯实安全底座DatenLord前沿技术分享No.34GPU共享调度技术调研报告(下篇)【云栖2023】王峰:开源大数据平台3.0技术解读报名开启!8月25日创新技术分享Meetup北京站快速认识什么是:Docker如何用 Apache DolphinScheduler 实现自动配置自定义变量?eBPF 是实现可观测性的关键技术复现RPC中继NTLM身份验证openEuler郑州用户组成立!openEuler与超聚变携手建设河南区域用户生态安第斯智能云助力一加 Ace 3发布,三大功能亮眼Oracle中,下面那些参数被NLS_LANGUAGE控制?ToolLearning Eval:CodeFuse发布首个中文Function Call的大语言模型评测基准!🚀产品更新|Proton的JDBC和ODBC驱动程序现已开源,可支持高基数GROUP BY荣耀主题设计师邀请有礼ASF 生成式工具指南禅道创始人王春生:关于开源软件的七大错误认知淘宝再夺顶级技术比赛CVPRNTIRE冠军,背后是这些提升用户体验的内容技术时序数据库 TDengine 与腾讯云多个产品线完成兼容性互认证明使用 Apache DolphinScheduler 进行 EMR 任务调度Airtest结合Poco对控件实施精准截图,学起来!RocketMQ on openEuler 提供高性能消息队列的稳定性解决方案OpenAI首席科学家:通向无监督学习之路专访 | openEuler麦艮廷:勇于踏出第一步NCCL源码解析⑥:Channel搜索GreatSQL社区与Amazon、Facebook、Tencent共同被MySQL致谢开源之夏2023中选结果公示,504名高校生将投入开源项目贡献20篇NeurIPS论文精选:语言大模型的六大趋势在Oracle数据库中检索给定表的索引列表,可以使用?全站热门评论
.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}23721.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
你还有脸出来发布新闻我是没有料到.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F我知道你没有做完.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
删个屁,自己想想,你程序启动的时候拿HTTP干了啥,直连的。早期版本。🤢🤢作为一个网络工具,自己用自己的HTTP工具连一个用户不知道的网址,真的6,真的恶心.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
违法成本为0,干嘛不违法.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
这位江湖人士,从你前后几条评论来看,我是不是可以做出如下判断: 1、你是知道早期t-io是有检查版本的功能的 2、你没看懂一个版本检查为什么发了两次http,亦或是故意装作没看懂(如果看懂了,麻烦说下为什么发了两次;如果没有看懂就说这个是在恶意刷流量,也请解释一下,这个流量有什么用?) 3、你在知道这个http是在做版本检查的情况,说t-io在恶意刷流量 4、你一条评论说这个http连的是t-io官网,另一条评论却说这个http连了一个用户不知道的网址。你想要表达什么?想要带哪个节奏? 在此我也必须说明几点 1、这个版本检查功能当年是公开的,t-io群都是说明过的 2、这个做法的灵感来自早年ehcache 3、这个版本检查的背景是:t-io早期版本api没稳定,文档和案例缺失,t-io版本更新极快,许多人问问题时还停留在用一个月或几个月前的版本。为了减少问题解决时间,统一做了版本检查和提醒更新的功能 4、随着t-io的稳定,约在5年前就取消了该检查功能 我就说这么多,你自己再琢磨你的几条评论,是在事实求是地评论,还是带着恶意吐槽?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
巨星陨落,星辰大海.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
p正式版从67开始支持Windows on ARM, https://www.mozilla.org/en-US/firefox/67.0/releasenotes/#note-788020.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F等正式版,会出.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
但凡看一眼oh源码都说不出这种话.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
个人一律很刑,企业统统很行.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
gozi 你那么干啥呢?你这牛气的,不得Linus都要叫你papa?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
是打野的那个Kakao吗?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
蓝也是黑得够明显,日文里面有很多中文,敢不敢去喷一下?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
我不删啊,删什么,你早前版本不就是这么干的?一个检查版本连了官网2次,真的6。一个网络工具,自己用HTTP连了用户都不知道的地址,还2次🤢.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
加油.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
o加油.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
A你可别用命运石之门了 真恶心 真有脸啊.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
在侮辱“开源”这俩字.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
现在造谣都不用马甲了吗?这条评论我是不会删的,要留在这里,希望你也不要删😀.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
看评论,国内美tian很多啊,在这帮美tian看来,国内别人做什么都是错的,都是比不上美国高大上,哎,民族的悲哀!.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
蓝有些人可能跪久了站不起来,送他们一句:尔曹身与名俱灭,不废江河万古流.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
先不说别的,就这女的嘴脸就恶心,感觉就是在钻《laodong法》空子,《laodong法》对公司来说违法成本太低了,才有了这样的一幕;至于是不是清华,清华咋了,有才无德,真给清华丢脸.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
其实就是试用期辞退人家,满6个月,但是又不想多给一个月的赔偿金,于是互撕开始了.... 国内大部分公司辞退员工,都不想给赔偿金,各种操作逼着员工"自愿"走... 仲裁耗时间,要实质的证据,赢了也就拿回自己的那一份,对于公司来说0违法成本... 质疑"学历简历造假",其实可能知道对方是函授学历,想在这里搞事情,咬死不承认对方没有说自己函授的学历,或者是公司看舆论不对,先质疑对方本身违法,公司是合法的炒鱿鱼.... 不管什么原因,工作满6个月,确实要给一个月的赔偿金,不想给,员工肯定要合法闹事了.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
别的不说,就看这女人讲话时,那地皮流氓般嚣张的嘴脸,还有那些下三烂的言辞,这就是我们的清华帮民族企业家的素质。同为打工仔的我们,实在想不通为什么还是有一些弱智在寻找完美受害者,说什么这位爆料的员工「感觉好像也没那么无辜」,真是应了鲁迅先生的那句话:哀其不幸,恕其不争。底层打工仔也太不团结了。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
请不要侮辱狼和狈这两种动物.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F上一代搞两个版本的鸿蒙混淆视听,手机版就是安卓EMUI换个名,到现在我的华为mate40手机切换成英文,鸿蒙系统会变成android系统的BUG还在呢,以后我不会再评论了,很多人看不清现状,只能说好言难劝该死的鬼,点到为止,你们骂我的人好自为之.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
相互撕吧.你撕他学历,简历造假,他撕你偷税漏税,社保人数,金额缴纳不足,使用盗版软件...........comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
@Francesca 这么狗急跳墙,传志粉吗?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
我是多么可悲,才让我刷到这个,恶心啊.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S还做技术都懂,怕做的是hello world技术吧?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
用了别人的创意,大大方方感谢不行吗,人家开源了,又不是不给你用。炒还炒得这么理直气壮,看看上面那些评论,都什么嘴脸?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
你对开源的认知可能有点浅.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F“抛弃了传统的Linux内核以及AOSP安卓开放源代码项目等代码”,“鸿蒙内核超越传统内核,鸿蒙系统是真正的操作系统,从编程语言到编译器都是全栈自研。”,大嘴真的懂技术吗,这几句话我看一次笑一次,还是那句话做人要低调,务实一点,linux内核是全世界人类的智慧结晶,你这就超越了?鸿蒙是真正的操作系统,那其他的都不算系统了?还有一个到目前为止世界上还没有一个真正的微内核系统,上一代那个就吹是微内核了,也就糊弄一些不懂的,结果整个内核就是一个IOT10KB的东西,据说还“借鉴了”NuttX,然后就是吹语言和编译器都是自研,llvm、gcc、typescript:?真的看不下去了,真能吹,死的都能说成活的,真给我们丢脸.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F确实看不惯大嘴,不是看不惯华为,这人前一段时间还各种怼其他厂商,奈何大部分消费者甚至业内人士不懂技术的太多,就听他吹吧,反正他们都信了,还不如信我是秦始皇。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
两大幻神, 狼狈为奸.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F你就不要自报家门了,我知道你丧考妣了,笑死.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
Solon 有企业版 2.8万起步价(多一个,开发票+企业专属群)。不需要靠文档收钱的 😂。。。自由选择:想免费用社区版本,想要合同发票用企业版:).comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
死以周鸿祎的立场,只要他屁股不歪、脑筋正常,他就必须也只能战队华为,没有其他选择,所以没什么好褒贬的。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
t曝光这帮自以为是的所谓高管是要举双手赞同的。但“因为盗版设计出的芯片可能有Bug,质量无法保证”,这不是扯的吗?画蛇添足。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
Linus主要是做code review的,C++这种充满了自作聪明的省代码和隐晦特性的语言,写时一时爽,review火葬场,他是不可能允许进Linux内核的。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
又涨价了,唉!待宰羔羊一只。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S华为不会像你一样rz,360在鸿蒙里敢这么搞会让他上架?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
总有人想害。。。。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
加油.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
又造了个轮子.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
“鸿蒙内核超越传统内核”。这就超越啦?厉害厉害😂.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S继续黑,看到做出来了狗急跳墙了哈哈.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
大家都被假开源骗怕了,参考.net的那个框架,文档出尔反尔收费的事情,现在还一堆人给那个骗子洗白,信任就这么被消耗了,以后国内的开源只怕更难,唉😥.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
果然 一堆 阴阳怪气的 哈啤.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S继续黑,小丑,不要藏着掖着自己的黑子身份.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F现在肯说实话的人不多了,有人说我是喷是黑,是不是喷是不是黑我比你们清楚,我都是实话实说,而且我希望你们也关注一下其他的国产品牌,他们都很低调而且务实专心做技术,我又没有收他们钱,我何必帮他们做宣传呢,是吧,有人说华为的研发资金占比很高,确实高不过都是硬件,软件方面真的还不如其他几家,纯忽悠.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S小丑继续,都不用别人来溜你自己出来溜了.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F360流氓软件,早期做3721的公司,杀毒软件杀不了病毒,全是广告是真的,严重拖慢系统运行速度.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
C++会带来一些好处,和无穷的混乱.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
与好处相比 带来的困难和风险更高 支持 Rust.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S怎么没收钱,这早餐钱不就赚到了?.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
t很多软件都是检测到盗版,就随机出错的,当然了,最狠的还是江民,直接锁硬盘。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
S搞的好像这些开源的工具不是社区的人一起添砖加瓦弄上去的一样,有本事别开源自己搞啊.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
F我不告诉你 hap里面有个apk,api不兼容也是故意的选择专区和圈子:{{title}}{{o.name}}{{m.name}}©OSCHINA(OSChina.NET)工信部开源软件推进联盟
指定官方社区社区规范
深圳市奥思网络科技有限公司版权所有粤ICP备12009483号
.codeBlock:hover .oscCode{display: block !important;} .codeBlock{z-index: 2;position: fixed;right: 20px;bottom: 57px; overflow: hidden; margin-bottom: 4px;padding: 8px 0 6px;width: 40px;height: auto;box-sizing: content-box;cursor: pointer;border: 1px solid #ddd;background: #f5f5f5;text-align: center;transition: background 0.4s ease;}
@media only screen and (max-width: 767px){ .codeBlock{display: none;}}/*
html{
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
_filter:none;
}
*/
if(window.location.href.indexOf("www.oschina.net/group")!=-1 && window.location.href.indexOf("/admin/")!=-1){
document.querySelector("#mainScreen > div > div.group-admin-container > div.admin-body-box.box-card > div > div.menu-box > div > div:nth-child(4)").remove()
}顶部(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();var _hmt = _hmt || [];
_hmt.push(['_requirePlugin', 'UrlChangeTracker', {
shouldTrackUrlChange: function (newPath, oldPath) {
return newPath && oldPath;
}}
]);
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?a411c4d1664dd70048ee98afe7b28f0b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();{
"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
"@id": "https://my.oschina.net/u/4090830/blog/10887860",
"appid": "1653861004982757",
"title":"把Mybatis Generator生成的代码加上想要的注释 - 京东云开发者的个人空间",
"images": ["https://img1.jcloudcs.com/developer.jdcloud.com/c61ced1f-94ec-4ca7-ab69-d3df94f7a5d820220811194013.png"],
"description":"1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生...",
"pubDate": "2024-01-19T14:16:25+08:00",
"upDate":"2024-01-19T14:16:25+08:00",
"lrDate":""
}<!--
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());gtag('config', 'G-TK89C9ZD80');
-->
window.goatcounter = {
path: function(p) { return location.host + p }
}(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?2f2c965c87382dadf25633a3738875e5ccd132720338e03bf7e464e2ec709b9dfd9a9dcb5ced4d7780eb6f3bbd089073c2a6d54440560d63862bbf4ec01bba3a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
SpringBoot 2.x 正式停更了。Java 8 由 Solon 接收!
从分享一个小工具到首个 GitHub 1K Star 小成就
Linux 内核被冬季风暴“封印”
Git 开发人员讨论引入 Rust 的可能性
LG 洗衣机每日使用的数据流量高达 3.6GB?
Linus“温馨提示”:Intel Xe 驱动代码严重缺乏测试
2024 技术招聘状况:AI 工具被视为作弊,Python 需求最大
华为发布 HarmonyOS NEXT 鸿蒙星河版(开发者预览)
云风宣布开源基于 Lua 的自研游戏引擎 Ant Engine
Ruffle 2023 回顾 – Rust 实现的开源 Flash Player 模拟器
点击引领话题📣
发布并加入讨论🔥