在Nutz[1.b.38]中使用视图对关联数据表的操作
在上一篇《使用Nutz[1.b.38]对关联数据表的一对一/一对多操作?》中提到对象关联的排序问题,如下:
--------------------------------------------------
发现了dao中有一个问题目前还没有解决,即Nutz中关联查询的排序问题,假如我在查询用户列表时,无法通过departmentInfo.departmentName字段来排序,即无法使用以下代码获取:
List<UserInfo> uiList = this.userInfoService.query(Cnd.orderBy().asc("departmentInfo.departmentName"), null);
---------------------------------------------------
已咨询过灰太狼,目前暂不支持,以后是否支持,需视大家的呼吁强度而定。详情请进>>>
那么,在Nutz支持此功能之前,我们可以通过视图来解决此问题。
OK,进入主题!!
关于一些环境、数据源和dao对象、web.xml的配置,请移步上一篇查看。
其中使用的nutz-1.b.38-jdk6.jar是有更改过的,不是当时最早发布的包,因存在bug,无法使用视图,后来灰太狼修复好了,本文提供的源代码中是更改过的jar包。当然,大家使用最新的1.b.39也是可以的。
一、数据库
?
此demo涉及两个表DepartmentInfo和UserInfo,和一个视图UserInfoView,SQL如下:
-- ----------------------------
-- Table structure for `departmentinfo`
-- ----------------------------
DROP TABLE IF EXISTS `departmentinfo`;
CREATE TABLE `departmentinfo` (
??`departmentInfoId` int(11) NOT NULL AUTO_INCREMENT,
??`departmentName` varchar(50) DEFAULT NULL,
??PRIMARY KEY (`departmentInfoId`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of departmentinfo
-- ----------------------------
INSERT INTO `departmentinfo` VALUES ('1', 'IT部');
INSERT INTO `departmentinfo` VALUES ('2', '人力资源');
INSERT INTO `departmentinfo` VALUES ('3', '财务部');
INSERT INTO `departmentinfo` VALUES ('4', '市场部');
?
-- ----------------------------
-- Table structure for `userinfo`
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
??`userInfoId` int(11) NOT NULL AUTO_INCREMENT,
??`trueName` varchar(20) DEFAULT NULL,
??`departmentInfoId` int(11) DEFAULT NULL,
??`addDate` datetime DEFAULT NULL,
??`addIp` varchar(15) DEFAULT NULL,
??PRIMARY KEY (`userInfoId`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES ('1', 'Gevin', '1', '2011-07-25 19:28:50', '127.0.0.1');
INSERT INTO `userinfo` VALUES ('2', 'Wendal', '1', '2011-07-25 19:29:07', '127.0.0.1');
INSERT INTO `userinfo` VALUES ('3', '小宝', '2', '2011-07-25 19:29:55', '127.0.0.1');
INSERT INTO `userinfo` VALUES ('4', '灰太狼', '3', '2011-07-25 19:30:11', '127.0.0.1');
INSERT INTO `userinfo` VALUES ('5', 'E-Hunter', '3', '2011-07-25 19:30:38', '127.0.0.1');
INSERT INTO `userinfo` VALUES ('8', 'k-wait', '4', '2011-07-26 15:54:01', '127.0.0.1');
---------------------------------- UserInfoView--------------------------------CREATE?VIEW `UserInfoView`AS?Select ui.*, di.departmentNamefrom userinfo as ui, departmentinfo as di?where ui.departmentInfoId = di.departmentInfoId ;
二、结构图
![在Nutz[1.b.38]中施用视图对关联数据表的操作](http://img.reader8.net/uploadfile/jiaocheng/20140140/2738/201401271538431644.jpg)
![在Nutz[1.b.38]中施用视图对关联数据表的操作](http://img.reader8.net/uploadfile/jiaocheng/20140140/2738/201401271538431645.jpg)
?
二、Model类
DepartmentInfo.java
?
其中获取部门名称的代码是${ui.departmentName}
?
?
五、重启Tomcat,访问以下地址:
http://127.0.0.1:204/UserManageSystemView/userinfo/showUserInfoList.shtml
?
?
效果图如下:
showUserInfoList.jsp
?
?
OK,第三篇教程搞定了。希望对大家有用。
?
?
大家在使用Nutz对象关联时,若遇到上述的排序问题,有没有比较好的解决方法呢?若有,希望告诉一声!thx~~
因为不想在项目中一边使用对象关联,一边又使用视图!在未解决此问题前,本人还是继续在项目中只使用视图了。
?
?
?
![在Nutz[1.b.38]中施用视图对关联数据表的操作](http://img.reader8.net/uploadfile/jiaocheng/20140140/2738/201401271538431646.jpg)