1.b.38 发行注记

Jul 10, 2017 10:38:44 AM

作者:zozohwendal

1.b.38 发行注记

Nutz 1.b.37 发布以来,时隔近3个月。为什么间隔这么时间涅? 因为我们做了很多重大的调整:

另外,如果你在 Github 上有帐号,欢迎随时 fork Nutz,请记住我们的口号就是:喜欢 Nutz,就 Fork 它

当然,Nutz 的下载地址仍然一直会是 Google Code 下载列表,并且 Nutz 在 Google Code 的项目主页 也会一直维护。

同时,我想提醒大家注意一下 Nutz 的官网,我们会不断的充实它的内容,比如最近做的

  • Nutz 的文档
  • Nutz 的小白测试
    说到小白测试,不得不提一下 Dao 重构。我们这次重构 Dao 后总是不放心,其实我们在今年 5 月初就重构完了,然后我们测试呀,测试,毕竟是重构 Dao 了嘛,但是我们还是不放心,于是又测试呀测试… 但是我们还是不放心…

于是 Juqkai 同学在我和 Wendal 的撺掇下痛下决心,写了这个应用:

Nutz 小白测试计划

我们希望这个计划,能让更多人方便的参与测试,提交测试结果,这样我们就能为更多的人提供更稳定的 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 之后,这个包没了。因为我们不再需要它了。你的建表可以用:

  1. dao.create(Pet.class, true); // true 表示如果存在,先 DROP 掉再建, false 表示如果存在就不建了

来完成。当然,删表,可以用:

  1. dao.drop(Pet.class);

除此之外,Nutz.Dao 不会有和之前不兼容的地方了。当然如果你发现了,请随时告诉我们,应该都不是大问题。

EL 兼容性问题

EL 作为比较新的一个功能,可能用的人比较少,我们之后会再各个模块里逐渐发掘 EL 的潜力。本次发布 EL 经过了重构,效率提升了将近1倍。当然,作为一个用反射实现的东东,它的还是很慢,但是我们设计 EL 的时候假定它的使用场景是配置文件,后台进程等一些不是非常需要效率的地方。它可以让你的程序更有弹性。如果非常需要效率的地方,恐怕它不是一个很好的选择。

重构后的 EL,eval 的结果不再是 ElValue,而是普通的 Object,这样,你使用的时候会更方便一些。

并且EL的预编译,不再是

  1. BinObj exp = El.compile("3+4");

而是

  1. 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计算)

1.b.38 发行注记 - 图1

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

另外,很多朋友都在:

欢迎访问官网,以获取 最新的快照版用户手册

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议GNU自由文档许可证下修改和再使用。

原文: http://nutzam.com/core/history/1_b_38.html