读书人

在Nutz[1.b.38]中施用视图对关联数据表

发布时间: 2012-11-03 10:57:43 作者: rapoo

在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]中施用视图对关联数据表的操作


在Nutz[1.b.38]中施用视图对关联数据表的操作

?

二、Model类

DepartmentInfo.java

?

其中获取部门名称的代码是${ui.departmentName}

?

?

五、重启Tomcat,访问以下地址:

http://127.0.0.1:204/UserManageSystemView/userinfo/showUserInfoList.shtml

?

?

效果图如下:

showUserInfoList.jsp


在Nutz[1.b.38]中施用视图对关联数据表的操作

?

?

OK,第三篇教程搞定了。希望对大家有用。

?

?

大家在使用Nutz对象关联时,若遇到上述的排序问题,有没有比较好的解决方法呢?若有,希望告诉一声!thx~~

因为不想在项目中一边使用对象关联,一边又使用视图!在未解决此问题前,本人还是继续在项目中只使用视图了。

?

?

?

读书人网 >编程

热点推荐