Jul 10, 2017 10:38:44 AM
作者:wendal
1.b.38 发行注记
自 Nutz 1.b.37 发布以来,时隔近3个月。为什么间隔这么时间涅? 因为我们做了很多重大的调整:
- 重构了 Dao — 兑现了我们之前的承诺
- 重构了 EL
- Nutz 的源码管理迁移到了 上
以后,希望大家报 Issue 到 Nutz Github 的问题列表 中。还有66个 Issue 没有处理,我们会在后续的版本中尽快修复。如果都修复了,我们就会关闭 Google Code 的问题列表,只维护 Github 的问题列表。
另外,如果你在 Github 上有帐号,欢迎随时 ,请记住我们的口号就是:喜欢 Nutz,就 Fork 它
当然,Nutz 的下载地址仍然一直会是 ,并且 Nutz 在 Google Code 的项目主页 也会一直维护。
同时,我想提醒大家注意一下 ,我们会不断的充实它的内容,比如最近做的
- 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 之后,这个包没了。因为我们不再需要它了。你的建表可以用:
来完成。当然,删表,可以用:
除此之外,Nutz.Dao 不会有和之前不兼容的地方了。当然如果你发现了,请随时告诉我们,应该都不是大问题。
EL 兼容性问题
EL 作为比较新的一个功能,可能用的人比较少,我们之后会再各个模块里逐渐发掘 EL 的潜力。本次发布 EL 经过了重构,效率提升了将近1倍。当然,作为一个用反射实现的东东,它的还是很慢,但是我们设计 EL 的时候假定它的使用场景是配置文件,后台进程等一些不是非常需要效率的地方。它可以让你的程序更有弹性。如果非常需要效率的地方,恐怕它不是一个很好的选择。
重构后的 EL,eval 的结果不再是 ElValue,而是普通的 Object,这样,你使用的时候会更方便一些。
而是
看起来更清爽一些不是吗? 同学的设计 ^_^
问题修复
- dao: support JPA Annotation byzozoh
- Issue 85 NutDao 中需要提供批量更新操作的方法. byming300
- 数据库操作是否可以增加对Blob类型的支持 byToni.xutao
- Issue 155 Dao 的 注解可否标注在getter函数上 byjinghui70
- Issue 192 NutDao性能问题:关于批量操作,使用PreparedStatement的Batch功能 byhzzdong
- 关于nutz dao能否动态根据tables.dod 更新表结构 byshao0707
- Issue 267 NutzDao能否提供设置fetchSize的方法 bysuperxlm1985
- Nutz Dao 大量数据插入效率问题 byfjayblue
- Issue 332 sqlserver2005 nutz Junit测试 byhaoyoushuai1986
- Issue 416 建议nutz提供一个拼接复杂的查询条件的方法 byliuxiaogang1987
- Sqls.create语句中包含'@'会出错。 bywangyingdong
- Issue 426 Condition Cnd.where + orderBy bymuyushi85
- MVC的代码覆盖率实在太低,很多都没测试用例! bywendal
- Issue 437 SqlLiteral中的@过滤 byzhuyingxi
- Json:增加字段映射方式 bywendal
- Issue 458 ActionChainMakerConfiguration类名拼写错误 byjentrees2008
- 使用MySQL数据库,使用Nutz.dao的自定义SQL报错 bymamacmm
- Issue 469 Json.toJson 对char类型没有加引号 bylwk0571
- Dao: 添加对Hsql数据库的支持 bywendal
- Issue 473 使nutz兼容OSGi bywindywany
- 1.b.38 的新 Dao 应该忽略 Column 不存在的情况 — by Jay byzozoh
- Issue 479 38 update 问题 byfjayblue
- 将Nutz打成jar, 2 个 Scans 的测试过不了 byzozoh
- Issue 485 EL表达式引擎在某些情况下会出现错误 byywjno.dev
- ioc中某个属性的值是Map时,如果是null偶尔报:String can not cast to java.util.Map bysuperhanliu
- Issue 489 AnnotationIocLoader类对set方法处理 有bug byfeiyan
- Issue 493 Lang的str2number方法在某些情况下会出错 byywjno.dev
- 自定义SQL wiki bysuperhanliu
- Issue 497 Nztz.Dao 注释没写全,和注释重写 byhongchongyuan
- nutz.Json 应扩展一下@JsonField注解 byconanca
质量
共通过了 697 个单元测试用例,代码覆盖率达到 (按line计算)
Nutz.Dao 经测试在如下数据库上可以工作正常
文档
修改了很多文档 …
主要贡献者名单
贡献的种类:
- 问题: 给项目的问题列表汇报一个上的问题,并且该问题被本次发布包括
- 博客: 在本版本开发期间,写过关于 Nutz 的文章,并被 收录
- 代码: 提交过至少一个修订
- Demo: 为 NutzDemo 提交过代码
- 文档: 提交过文档,在讨论区发帖或者通过文档上的留言指出现有文档存在的问题
- 测试: 发布前,参与测试周发布人给出的任务
如有遗漏,请提醒我们 ^_^
贡献列表,我已经写了一个小程序,根据 Issue 列表来自动统计…
另外,很多朋友都在:
- Nutz & XBlink (58444676 超级群)
- Nutz ② 群 (68428921)超级群
- GTalk 聊天群 添加帐号 为好友,然后发送 @join 指令
- Nutz的聊天室
回答新手的问题,我们现在只能根据印象草草统计,贡献列表非常不完善。我们正在想办法,争取在不远的将来,能记录下来大家每一点一滴的付出 ^_^!
欢迎访问,以获取 最新的快照版 和
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和下修改和再使用。