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 转载请注明来源
© 著作权归作者所有
举报热门内容
更多精彩内容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 数在 8888一站式获取 PieCloudDB Database 产品、社区及数据库行业全动态扎克伯格:Meta 正在全力开发开源 AGI(通用人工智能)PHP 8.3.2 发布Android 版 Chrome 默认启用 WebGPUopenEuler 23.09 创新版本发布,基于 Linux Kernel 6.4 构建,深化全场景创新,加速AI训练推理面向OpenHarmony终端的密码安全关键技术世界第一!Nginx的HTTP模块与Stream模块:区别与应用场景PostgreSQL 16 正式登场,拓数派代码贡献揭示中国顶尖技术实力从来不懂K8s的人10分钟内将应用跑在了K8s中数字先锋 | 天翼云助力金州教育云平台智慧升级,让优质教育资源“活起来”!【项目实战】SpringBoot连接openGauss【开源三方库】Aki:一行代码极简体验JS&C++跨语言交互【用户实践】openGauss5.0在某省医保局实时数仓应用【精彩回顾】恒拓高科亮相第十一届深圳军博会免杀对抗-映射Ntdll.dll来取消挂钩EDR让数据要素合规高效流通!海南这么干!某985证书站挖掘记录safeguard—基于 KRSI (eBPF+LSM)的 Linux 安全防护系统TiDB 在全球头部物流企业计费管理系统的应用实践OpenTenBase首亮相,腾讯云数据库开源取得重大突破TiDB 多集群告警监控-初章-监控融合、自动告警处理ApsaraMQ Serverless 演进之路,助力企业降本【直播预告】编写Prompt的艺术,如何提高大语言模型的表现力Forrester首次面向中国的开源报告:阿里云在云原生领域开源布局最全面【关注】2023年度openEuler领先商业实践遴选征集工作正式启动超越钉钉与企业微信:如何选择一款更适合企业的私有化即时通讯软件有奖活动 | 以代码之名,写出对Ta的爱使用 OpenTelemetry 构建可观测性 04 - 收集器直击 2023 服贸会现场|英特尔以技术赋能千行百业,助力数实融合理想的监控系统到底是什么样的?Apache ActiveMQ 远程代码执行漏洞分析openEuler Summit 2023|邀您参观OpenInfra Foundation展台【直播合集】HDC.Together 2023 精彩回顾!收藏勿错过~开发指导—利用CSS动画实现HarmonyOS动效(一)中秋国庆花式玩法,用低代码DIY假日大屏“Vlog”项目捐给了开源基金会,作者手上还剩了什么?58集团携手华为启动58同城、安居客鸿蒙原生应用开发WorkPlus即时通讯,让沟通零障碍!企业协作更高效飞致云开源社区月度动态报告(2023年11月)Bytebase 2.5.0 - VCS 集成支持 Azure DevOps,支持达梦数据库渗透测试中的前端调试(一)CLion Nova 强势登陆 C 和 C++ 开发领域,使用 ReSharper C++/Rider C++ 语言引擎!Star History 九月开源精选 |开源 GitHub Copilot 替代KaiwuDB × 国网山东综能 | 分布式储能云边端一体化项目建设实践解析HPA各关联组件扭转关系五大院士领衔,欢迎参加2023计算产业生态大会守正出奇,穿越周期 - Bytebase 的 20232023 英特尔On技术创新大会中国站已正式上线,openEuler 作为本次大会的合作社区亮相基于 eBPF 构建下一代智能可观测系统【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试如何利用容器与中间件实现微服务架构下的高可用性和弹性扩展学而优则“创”!西电学子助力openGauss教学“破圈”,一举斩获金奖AutoMQ 社区双周精选第四期(12.18~12.29)中国联通联合openEuler:筑强联通云安全技术底座,谱写数字经济高质量发展新篇案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化飞致云及其旗下1Panel进入2023年第二季度最具成长性开源初创榜单一站式获取 PieCloudDB Database 产品、社区及数据库行业全动态openGauss Summit 2023 | Call for Sponsor、Speaker、Demo分布式批处理框架在大促场景下的设计与实现【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景PingCAP 入选 Gartner 《Hype Cycle for Data Management 2023》代表厂商企业为什么需要IM “定制化”?58技术沙龙第40期|基础架构专场:中间件&云原生10月,1Panel开源面板项目收到了这些评论开发者实战 | AI for Science:OpenVINO™ + 英特尔显卡解薛定谔方程TCP连接断开:为什么要挥手四次解锁Spring组件扫描的新视角高能有料 | 第二届OpenHarmony技术大会议程速递阿里云主导《Serverless 计算安全指南》国际标准正式立项!数仓中典型的几种不下推语句整改案例如何优化k8s中HPA的弹性速率123大模型与底层技术,技术人的 AI 机遇在哪?| 源创会基于组合优化的3D家居布局生成看千禧七大数学难题之NP问题WorkPlus局域网即时通信软件,打造高效协作的智能选择共享服务器的复杂性与核心原理Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库Apache Dubbo 云原生可观测性的探索与实践glibc2.35-通过tls_dtor_list劫持exit执行流程中国云数据仓库,双第一!如何评估计算机的算力:从 CPU 到 GPU 的演变KubeCon 2023回顾 | EulerPublisher精彩亮相全站热门评论
.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}好事,AOSP套壳那么久,终于出来了真正的鸿蒙...国家层面也确实需要一个自己的系统...生态的话,几年下来生态应该可以起来.... 就好像国内显卡一样,总归是要有自己的东西,慢慢发展起来,不能一直被卡着脖子....comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
i?鸿蒙内核,要不要这么玄学,感觉是一个营销概念。迄今为止能正儿八经的商用的也就BSD系,linux,WindowsNT,Darwin这几个。。。。这都是多少年的成果,微内核从上世纪至今也就mach,GNU/Hurb等少数几个项目,而且都没步入商用,或者使用了混合内核的工程实现例如WindowsNT与Darwin。.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)}
我看luajit首页的兼容性列表,是支持IOS的.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)}
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)}
S你确定人类几十年一直在结晶没有走错过原地踏步甚至倒退?更何况近百年的技术革新超过了前面两三千年,有什么不可以.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)}
其实一直像华为自己承认的:做成生态太难了,其实微软、阿里、腾讯都曾有过自己的 OS,但都失败了。很大问题就是生态问题,你能坚持N年投入吗?.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)}
看评论,国内美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)}
希望你们分得清什么是道德问题 什么是技术问题🙂.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
叨周鸿wei是河南人?难怪了.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)}
所以你为什么有这么多的精力来做这么多的东西?.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)}
谁c和lua共享内存的方式处理渲染。有意思。.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)}
360但凡不瞎弹广告也不至于被骂的狗血淋头.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)}
其实就是试用期辞退人家,满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)}
叨报J !秃子又出来嚯嚯人了.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)}
现在华为放弃AOSP,不兼容APK,对于常用应用来说没有问题,也就是说可以覆盖大多数人,但对于特别需求的人来说,可能无法覆盖。但如果连 linux kernel 都不放一个,全部自己开发,感觉有点浪费的味道。最后能否成功,还是看其他厂商能否全力支持,是否造成赚钱效应。不过,还是感觉中庸之道比较靠谱。.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)}
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)}
鸿蒙NEXT: 然后我的鸿蒙系统一堆右下角的弹窗, 推荐360全家桶? 浏览器强制安装,变成360浏览器? 鸿蒙变成了360全家桶广告安全鸿蒙??开机自动启动360全家桶,自动开机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)}
S当年大清也觉得自己不可战胜,内核并不是最难的,最难的是生态.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)}
卖开源软件收费没啥呀,就算是gpl也不限制重新分发 ..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)}
t-io是挺不错的,但作为底层群员的过来人表示,当年发现文档不能看就看其他组件去了,虽然现在也觉得文档收费是个可选的方案,但面向底层研发收费太难了,除非铁粉 😁,确实挺难的.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)}
大家都被假开源骗怕了,参考.net的那个框架,文档出尔反尔收费的事情,现在还一堆人给那个骗子洗白,信任就这么被消耗了,以后国内的开源只怕更难,唉😥.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)}
t-io是个很棒的网络通信框架,虽然文档稀烂且收费,但是文档也没一开始标榜完全免费,也没有随意修改协议,虽有遗憾但理解。百小僧就不同了,不仅撕毁协议,还律师函威胁用户。刷新中国开源界的下限.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)}
t很多软件都是检测到盗版,就随机出错的,当然了,最狠的还是江民,直接锁硬盘。.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吹牛不交税的人,营销无极限的玩意。.comments-box__list-news .osc-avatar{border-radius: 5px}.comments-box__list-news .comment-item:hover{background: rgba(201,201,201,0.1)}
一个操作系统首先要面对活下来的问题,然后才是生长,但这一步可能就像能否直接跳过资本zhuyi直接进入shehui主义一样,不可逾越,需要像其它OS一样自然生长十几年。.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)}
A你可别用命运石之门了 真恶心 真有脸啊.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)}
鸿蒙NEXT发布,华为请他去站台,怎么能算他蹭华为流量呢?选择专区和圈子:{{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 鸿蒙星河版(开发者预览)
Ruffle 2023 回顾 – Rust 实现的开源 Flash Player 模拟器
AI 将影响全球近 40% 的工作,加剧财富不平等
点击引领话题📣
发布并加入讨论🔥