首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

施用Nutz[1.b.38]对关联数据表的一对一/一对多操作

2012-11-09 
使用Nutz[1.b.38]对关联数据表的一对一/一对多操作本文在上一篇《使用Nutz[1.b.38]对数据库表的CRUD操作》的

使用Nutz[1.b.38]对关联数据表的一对一/一对多操作

本文在上一篇《使用Nutz[1.b.38]对数据库表的CRUD操作》的基础上进行扩展,有兴趣的话可以先阅读一下。

?

在完成此demo的过程中,发现DAO中有某些需求目前还无法完成,文章末尾会提到,只能待灰太狼解决了。

?

好了,直接上教程,关于一些环境、数据源和dao对象、web.xml的配置,请移步上一篇查看。

?

?

进入主题:

?

一、此demo涉及两个表DepartmentInfo和UserInfo,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');

?

?

二、结构图


施用Nutz[1.b.38]对关联数据表的一对一/一对多操作


施用Nutz[1.b.38]对关联数据表的一对一/一对多操作

?

二、Model类

DepartmentInfo.java

?

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

?

?

?

showUserInfoList2.jsp:体现一对多的关系

?

?其中使用

?

?

来循环列出该部门的所有用户。

?

?

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

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

?

?

效果图如下:

showUserInfoList.jsp

施用Nutz[1.b.38]对关联数据表的一对一/一对多操作

?

?

?

showUserInfoList2.jsp

施用Nutz[1.b.38]对关联数据表的一对一/一对多操作

----------------------------------------------

?

?

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

?

在此demo中,发现了dao中有一个问题目前还没有解决,即Nutz中关联查询的排序问题,假如我在查询用户列表时,无法通过departmentInfo.departmentName字段来排序,即无法使用以下代码获取:

List<UserInfo> uiList = this.userInfoService.query(Cnd.orderBy().asc("departmentInfo.departmentName"), null);

?

此需求已提交给灰太狼,待解决。

?

目前要解决此问题,可以不使用对象关联,而是通过Nutz提供的视图来解决。

?

Nutz中提供的视图功能还是蛮给力的!只不过后期维护的时候,如增加字段、删除字段,要记得更新视图才行。

?

关于Nutz如何使用视图,会在下一篇《在Nutz[1.b.38]中使用视图对关联数据表的操作》讲到。

?

好了,最后把源代码奉上!!!

?

?

?

1 楼 kaywood 2011-11-21   员工信息列表界面,要使用部门名称来模糊查询,并且需要分页,用NUTZ该怎么做? 2 楼 gevin 2011-12-22   kaywood 写道员工信息列表界面,要使用部门名称来模糊查询,并且需要分页,用NUTZ该怎么做?
已跟Nutz管理员沟通过,他表示暂时不打算让Nutz支持关联对象的属性查询或排序。目前要解决此问题,可以通过视图来解决。可参考在Nutz[1.b.38]中使用视图对关联数据表的操作

热点排行