1.b.38 发行注记
Jul 10, 2017 10:38:44 AM
1.b.38 发行注记
自 Nutz 1.b.37 发布以来,时隔近3个月。为什么间隔这么时间涅? 因为我们做了很多重大的调整:
- 重构了 Dao — 兑现了我们之前的承诺
- 重构了 EL
- Nutz 的源码管理迁移到了 Github 上
以后,希望大家报 Issue 到 Nutz Github 的问题列表 中。Google Code 的问题列表还有66个 Issue 没有处理,我们会在后续的版本中尽快修复。如果都修复了,我们就会关闭 Google Code 的问题列表,只维护 Github 的问题列表。
另外,如果你在 Github 上有帐号,欢迎随时 fork Nutz,请记住我们的口号就是:喜欢 Nutz,就 Fork 它
当然,Nutz 的下载地址仍然一直会是 Google Code 下载列表,并且 Nutz 在 Google Code 的项目主页 也会一直维护。
同时,我想提醒大家注意一下 Nutz 的官网,我们会不断的充实它的内容,比如最近做的
- Nutz 的文档
- Nutz 的小白测试
说到小白测试,不得不提一下 Dao 重构。我们这次重构 Dao 后总是不放心,其实我们在今年 5 月初就重构完了,然后我们测试呀,测试,毕竟是重构 Dao 了嘛,但是我们还是不放心,于是又测试呀测试… 但是我们还是不放心…
于是 Juqkai 同学在我和 Wendal 的撺掇下痛下决心,写了这个应用:
我们希望这个计划,能让更多人方便的参与测试,提交测试结果,这样我们就能为更多的人提供更稳定的 Jar 包。同时,我们也能更准确的统计贡献者名单。
当然如果没有人参与这个测试计划,最差的结果就是维持现状。令人欣慰的是,还是有4位同学(包括我)参加了1.b.38测试的小白测试
那么,让我们看看,以后的版本参加的人是会越来越多,还是越来越少 ^_^!
Dao 兼容性问题
作为一篇发行注记,这次我们要上点干货了
1.b.38 的 Dao 与之前的 Dao 使用上的主要区别
- 更快的批量操作 — 比如大数据量的插入
- 提供了 Criteria 接口,扩展了 Condition 接口,这样查询的时候,可以用 PreparedStatement 参数
- 同时 Criteria 接口也非常方便你组织更复杂的 SQL 条件
- 自定义 SQL 可以设置 fetchSize,但是依然不能支持 pager,你还得自己用 SQL 方言来翻页
- 重新设计的 Entity ,可以方便的扩展,这样有些偏爱 JPA 或者配置文件的同学,可以扩展自己的实体配置方式
- 重新设计的 LOG,可以让 SQL 打印的更清晰
- 你甚至可以 dao.insert 或者 dao.update 一个 Map
- 支持 dao.create/dao.drop 方式来建表和删表
- org.nutz.dao.Dao 原有的接口函数统统保持不变,从而保证了兼容性不会有太大问题。
为了上述的优点,我们放弃了一点点兼容性,你的项目如果用 Nutz.1.b.38 可能需要少量修改几行代码。
Cnd 类的兼容问题
当然,如果你直接实现 Condition 接口也不会有问题。
- Cnd.exp 的返回值类型变成了 SqlExpression
- Cnd.exps 的返回值类型变成了 SqlExpressionGroup
Entity 接口的兼容问题
极个别很有 Hacking 精神的同学使用 Nutz 的时候,使用了 Entity 类,但是不幸的是现在 Entity 已经变成一个接口并且某些方法已经变了名字,但是原来 Entity 类所有的功能,现在 Entity 接口都能提供。如果你发现某些方法找不到了,耐心看看新的 Entity 接口的定义,我想你很快就能找到你要找的方法。
最重要的一个改变,就是原来的 entity.fields() 方法,变成了 entity.getMappingFields()。这个是有同学向我抱怨过,因此觉得有必要在这里特别提一下。
org.nutz.dao.tool 包的兼容问题
某些很有探索精神的同学可能偶然发现了 Nutz 还隐藏了一个 Dao 工具类的包,里面的方法可以跨数据库的建表,所以很有可能在自己的项目里也这么应用了。但是不幸的是,1.b.38 之后,这个包没了。因为我们不再需要它了。你的建表可以用:
dao.create(Pet.class, true); // true 表示如果存在,先 DROP 掉再建, false 表示如果存在就不建了
来完成。当然,删表,可以用:
dao.drop(Pet.class);
除此之外,Nutz.Dao 不会有和之前不兼容的地方了。当然如果你发现了,请随时告诉我们,应该都不是大问题。
EL 兼容性问题
EL 作为比较新的一个功能,可能用的人比较少,我们之后会再各个模块里逐渐发掘 EL 的潜力。本次发布 EL 经过了重构,效率提升了将近1倍。当然,作为一个用反射实现的东东,它的还是很慢,但是我们设计 EL 的时候假定它的使用场景是配置文件,后台进程等一些不是非常需要效率的地方。它可以让你的程序更有弹性。如果非常需要效率的地方,恐怕它不是一个很好的选择。
重构后的 EL,eval 的结果不再是 ElValue,而是普通的 Object,这样,你使用的时候会更方便一些。
并且EL的预编译,不再是
BinObj exp = El.compile("3+4");
而是
El exp = new El("3+4");
看起来更清爽一些不是吗? Juqkai 同学的设计 ^_^
问题修复
- Issue 34 dao: support JPA Annotation byzozoh
- Issue 85 NutDao 中需要提供批量更新操作的方法. byming300
- Issue 121 Nutz是否有根据实体上的注解来自动创建数据库表等对象的计划? byhzzdong
- Issue 137 数据库操作是否可以增加对Blob类型的支持 byToni.xutao
- Issue 155 Dao 的 @Column注解可否标注在getter函数上 byjinghui70
- Issue 192 NutDao性能问题:关于批量操作,使用PreparedStatement的Batch功能 byhzzdong
- Issue 230 关于nutz dao能否动态根据tables.dod 更新表结构 byshao0707
- Issue 267 NutzDao能否提供设置fetchSize的方法 bysuperxlm1985
- Issue 294 Nutz Dao 大量数据插入效率问题 byfjayblue
- Issue 332 sqlserver2005 nutz@google Junit测试 byhaoyoushuai1986
- Issue 416 建议nutz提供一个拼接复杂的查询条件的方法 byliuxiaogang1987
- Issue 420 Sqls.create语句中包含'@'会出错。 bywangyingdong
- Issue 426 Condition Cnd.where + orderBy bymuyushi85
- Issue 433 MVC的代码覆盖率实在太低,很多都没测试用例! bywendal
- Issue 437 SqlLiteral中的@过滤 byzhuyingxi
- Issue 457 Json:增加字段映射方式 bywendal
- Issue 458 ActionChainMakerConfiguration类名拼写错误 byjentrees2008
- Issue 466 使用MySQL数据库,使用Nutz.dao的自定义SQL报错 bymamacmm
- Issue 469 Json.toJson 对char类型没有加引号 bylwk0571
- Issue 471 Dao: 添加对Hsql数据库的支持 bywendal
- Issue 473 使nutz兼容OSGi bywindywany
- Issue 478 1.b.38 的新 Dao 应该忽略 Column 不存在的情况 — by Jay byzozoh
- Issue 479 38 update 问题 byfjayblue
- Issue 482 将Nutz打成jar, 2 个 Scans 的测试过不了 byzozoh
- Issue 485 EL表达式引擎在某些情况下会出现错误 byywjno.dev
- Issue 487 ioc中某个属性的值是Map时,如果是null偶尔报:String can not cast to java.util.Map bysuperhanliu
- Issue 489 AnnotationIocLoader类对set方法处理@Inject 有bug byfeiyan
- Issue 490 38的Dao,在DB2下,使用@Column('abc')的话,insert会报错 bywendal
- Issue 493 Lang的str2number方法在某些情况下会出错 byywjno.dev
- Issue 494 自定义SQL wiki bysuperhanliu
- Issue 497 Nztz.Dao 注释没写全,和注释重写 byhongchongyuan
- Issue 500 nutz.Json 应扩展一下@JsonField注解 byconanca
质量
共通过了 697 个单元测试用例,代码覆盖率达到 (按line计算)
Nutz.Dao 经测试在如下数据库上可以工作正常
文档
修改了很多文档 …
主要贡献者名单
贡献的种类:
- 问题: 给项目的问题列表汇报一个上的问题,并且该问题被本次发布包括
- 博客: 在本版本开发期间,写过关于 Nutz 的文章,并被 推荐列表收录
- 代码: 提交过至少一个修订
- Demo: 为 NutzDemo 提交过代码
- 文档: 提交过文档,在讨论区发帖或者通过文档上的留言指出现有文档存在的问题
- 测试: 发布前,参与测试周发布人给出的任务
如有遗漏,请提醒我们 ^_^
贡献列表,我已经写了一个小程序,根据 Issue 列表来自动统计…
贡献者 | 问题 | 博客 | 支持 | 代码 | 示例 | 文档 | 测试 |
Toni.xutao | O | - | - | - | - | - | - |
caji.net | O | - | - | - | - | - | - |
conanca | O | - | - | - | - | - | - |
feiyan | O | - | - | - | - | - | - |
fjayblue | O | - | - | - | - | - | - |
haoyoushuai1986 | O | - | - | - | - | - | - |
hongchongyuan | O | - | - | - | - | - | - |
hzzdong | O | - | - | - | - | - | - |
jentrees2008 | O | - | - | - | - | - | - |
jinghui70 | O | - | - | - | - | - | - |
juqkai | O | - | O | O | - | O | O |
liuxiaogang1987 | O | - | - | - | - | - | - |
lwk0571 | O | - | - | - | - | - | - |
mamacmm | O | O | - | - | - | - | O |
ming300 | O | - | - | - | - | - | - |
muyushi85 | O | - | - | - | - | - | - |
shao0707 | O | - | - | - | - | - | - |
shine | - | - | - | - | O | - | - |
superhanliu | O | - | - | - | - | - | - |
superxlm1985 | O | - | - | - | - | - | - |
wangyingdong | O | - | - | - | - | - | - |
wendal | O | O | O | O | O | O | O |
windywany | O | - | - | - | - | - | - |
ywjno.dev | O | - | - | - | - | - | - |
zhuyingxi | O | - | - | - | - | - | - |
zozoh | O | - | O | O | O | O | O |
Jay 蓝色幽默 | O | - | - | O | - | - | O |
另外,很多朋友都在:
- Nutzam 讨论区
- Nutz & XBlink (58444676 超级群)
- Nutz在微笑 (60504323)超级群
- Nutz ② 群 (68428921)超级群
- GTalk 聊天群 添加帐号 nutzam@chatterous.com 为好友,然后发送 @join 指令
- Nutz的新浪微群
- Nutz的豆瓣小组
- Nutz的聊天室
回答新手的问题,我们现在只能根据印象草草统计,贡献列表非常不完善。我们正在想办法,争取在不远的将来,能记录下来大家每一点一滴的付出 ^_^!
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。