Struts2一对多配置

在多表映射配置时,我们应该遵循以下不步骤:

  1. 确定两张表之间的关系
  2. 在数据库中实现两张表之间的关系建立
  3. 在实体类中描述出两个实体类之间的关系
  4. 在映射配置文件中建立两个实体和两张表之间的关系
    我们就按照上面的步骤做,我这里有一张联系人表和一张客户表,一对多关系,实体类代码如下:
/*** 客户的实体类* @author dengg**/
public class Customer {private Long custId;private String custName;private String custSource;private String custIndustry;private String custLevel;private String custAddress;private String custPhone;public Long getCustId() {return custId;}public void setCustId(Long custId) {this.custId = custId;}public String getCustName() {return custName;}public void setCustName(String custName) {this.custName = custName;}public String getCustSource() {return custSource;}public void setCustSource(String custSource) {this.custSource = custSource;}public String getCustIndustry() {return custIndustry;}public void setCustIndustry(String custIndustry) {this.custIndustry = custIndustry;}public String getCustLevel() {return custLevel;}public void setCustLevel(String custLevel) {this.custLevel = custLevel;}public String getCustAddress() {return custAddress;}public void setCustAddress(String custAddress) {this.custAddress = custAddress;}public String getCustPhone() {return custPhone;}public void setCustPhone(String custPhone) {this.custPhone = custPhone;}@Overridepublic String toString() {return "Customer [custId=" + custId + ", custName=" + custName + ", custSource=" + custSource+ ", custIndustry=" + custIndustry + ", custLevel=" + custLevel + ", custAddress=" + custAddress+ ", custPhone=" + custPhone + "]";}public Customer(Long custId, String custName) {super();this.custId = custId;this.custName = custName;}public Customer() {}}
/*** 联系人的实体类* @author dengg**/
public class LinkMan implements Serializable {private Long lkmId;private String lkmName;private String lkmPhone;private String lkmMobile;private String lkmEmail;private String lkmPosition;private String lkmMemo;public Long getLkmId() {return lkmId;}public void setLkmId(Long lkmId) {this.lkmId = lkmId;}public String getLkmName() {return lkmName;}public void setLkmName(String lkmName) {this.lkmName = lkmName;}public String getLkmPhone() {return lkmPhone;}public void setLkmPhone(String lkmPhone) {this.lkmPhone = lkmPhone;}public String getLkmMobile() {return lkmMobile;}public void setLkmMobile(String lkmMobile) {this.lkmMobile = lkmMobile;}public String getLkmEmail() {return lkmEmail;}public void setLkmEmail(String lkmEmail) {this.lkmEmail = lkmEmail;}public String getLkmPosition() {return lkmPosition;}public void setLkmPosition(String lkmPosition) {this.lkmPosition = lkmPosition;}public String getLkmMemo() {return lkmMemo;}public void setLkmMemo(String lkmMemo) {this.lkmMemo = lkmMemo;}@Overridepublic String toString() {return "LinkMan [lkmId=" + lkmId + ", lkmName=" + lkmName + ", lkmPhone=" + lkmPhone + ", lkmMobile="+ lkmMobile + ", lkmEmail=" + lkmEmail + ", lkmPosition=" + lkmPosition + ", lkmMemo=" + lkmMemo + "]";}}

第二步在数据库中实现两张表之间的关系建立,因为我用了hibernate,会自动创建,就不弄了
第三步在实体类中描述出两个实体类之间的关系:
首先我们在Customer类中配置LinkMan类的关系,一个客户对应多个联系人
我们在Customer加入如下代码:

private Set<LinkMan> likmans = new HashSet<LinkMan>(0);public Set<LinkMan> getLikmans() {return likmans;}public void setLikmans(Set<LinkMan> likmans) {this.likmans = likmans;}

主表应该包含从表实体的集合引用,用set集合来建立关系,再配置set和get方法,就行了。
接着配置LinkMan,加入代码如下:

private Customer customer;public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}

第四步在映射配置文件中建立两个实体和两张表之间的关系:
我们先打开Customer.hbm.xml文件,里面加入配置如下:

		<set name="likmans" table="cust_linkman"><key column="lkm_cust_id"></key><one-to-many class="LinkMan"/></set>

name:就是我们在Customer类中设置set集合的名字
table:指定从表的名字,也就是联系人表名
key:指定外键字段名
one-to-many:指定从表实体名称
然后打开LinkMan.hbm.xml文件,在里面加入如下代码:

<many-to-one name="customer" class="Customer" column="lkm_cust_id"></many-to-one>

name:从表实体引用主表实体对象引用的名称吗,就是在LinkMan类中设置Customer对象的名称
class:指定属性所对应的实体类名称,就是Customer路径
column:指定外键的名称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调整和改编赛车游戏——游戏屏幕

游戏屏幕 赛车游戏中有很多不同的游戏屏幕&#xff0c;这些都是由RacingGame类中的gameScreens堆栈管理的。本节介绍游戏中使用的大部分屏幕和对应的功能。大多数游戏屏幕相当简单&#xff0c;但其他的有点复杂并实现了一个单元测试&#xff0c;通过单元测试能更好地了解这个类…

mysql 锁 代码_MySQL中的锁实例

表结构&#xff1a;id&#xff1a;自增主键&#xff0c;a&#xff1a;无索引&#xff0c;b&#xff1a;普通索引CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,a int(4) NOT NULL DEFAULT 0,b int(4) NOT NULL DEFAULT 0,PRIMARY KEY (id),KEY b (b) USING BTREE) EN…

Linux文件属性之r、w、x

r&#xff1a; 对于文件来说&#xff0c;具有读取文件内容的权限&#xff1b;对于目录来说&#xff0c;具有浏览目录内文件的权限 w&#xff1a; 对于文件&#xff0c;具有修改文件内容的权限&#xff1b;对于目录&#xff0c;具有新建、删除、移动、修改文件目录内的权限 …

trie树--详解

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 文章作者&#xff1a;yx_th000 文章来源&#xff1a;Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明&#xff0c;谢谢合作。关键词&#xff1a;trie trie树 数据结构前几天学习了并查集和trie树&am…

yii mysql gii_Yii Gii使用

准备数据库第1步 - 创建一个新的数据库。数据库可以通过以下两种方式进行。在终端运行 mysql -u root –p登录数据后&#xff0c;通过执行 CREATE DATABASE mystudy CHARACTER SET utf8 COLLATE utf8_general_ci; 创建一个新的数据库;第2步 - 在 config/db.php 文件中配置数据库…

通过OracleDataReader来读取BLOB类型的数据 (转载)

通过OracleDataReader来读取BLOB类型的数据 在实际的应用过程中&#xff0c;需要把大块的二进制数据存储在数据库中。读取这些大块的数据&#xff0c;可以通过强制类型转换成为byte数组&#xff0c;但是当这个二进制数据体够大时&#xff08;几十兆或者上百兆&#xff09;&…

PHP简介

PHP原始为Personal Home Page的缩写&#xff0c;已经正式更名为 “PHP: Hypertext Preprocessor”。PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言&#xff0c;与C语言类似&#xff0c;是常用的网站编程语言。PHP独特的语法混合了…

java 事务_Java中事务总结详解(精华)

1.什么是JAVA事务&#xff1f;通常的观念认为&#xff0c;事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性&#xff1a;表示事务执行过程中的任何失败都…

ellen 纽奥良大学演讲

英 文 中 文 Thank you, President Cowan, Mrs. President Cowen; distinguished guests, undistinguished guests - you know who you are, honored faculty and creepy Spanish teacher. And thank you to all the graduating class of 2009, I realize most of you are hu…

xampp启动Apache端口被占用,修改端口

apache启动端口被占用有可能是80端口被占用&#xff0c;也用可能是443端口被占用。修改这两个端口方法如下&#xff1a; 首先打开xampp&#xff0c;点击下图的config 如果是80端口被占用&#xff0c;选择httpd,conf,会自动打开这个文件&#xff0c;然后在文件里查找80 找到以…

java怎么获取当前日期_JAVA中获取当前系统时间

一. 获取当前系统时间和日期并格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] args) {SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.o…

Microsoft SharePoint Server 2010 的新增功能

Microsoft SharePoint Server 2010 包括几个关键的增强和新增功能。重新设计的用户界面中的功能区通过将命令放置到更易于导航的基于任务的选项卡上&#xff0c;来帮助您更快地完成工作。可以跨多个 Internet 浏览器工作&#xff0c;例如 Microsoft Internet Explorer 7.0 和 8…

php四种定界符

1.标准风格 <?php//代码 ?>2.短标记风格 <?//代码 ?>默认情况下是不可以这样写的&#xff0c;我们要到php.ini文件里修改一个配置 找到php.ini文件,我用的是xampp,所以就是以他为例&#xff0c;其他找到php.ini文件方法百度一下就知道了 点击Apache的config&…

周易Java_周易API接口_免费数据接口 - 极速数据

package api.jisuapi.zhouyi;import java.net.URLEncoder;import api.util.HttpUtil;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Search {public static final String APPKEY "your_appkey_here";// 你的appkeypublic static final …

SharePoint SiteCollection 和SubWeb之间的迁移

因为各种不同的原因&#xff0c;项目里可能碰到需要将一个Site Collection迁移为一个子站点的情况。 实现这种需求只能用 内容部署功能中的导出和导入〉 SiteCollectoin to sub web 示例&#xff1a; cd C:\Program Files\Common Files\Microsoft Shared\web server extensions…

php中文乱码问题

访问我的php文件&#xff0c;出现了乱码 解决方法如下&#xff1a; 方法1&#xff1a;加上meta标签&#xff0c;设置字符格式 例如&#xff1a; <?phpecho <meta charset"utf-8">;echo "小河流水人家"; ?>访问就不会乱码了&#xff0c;注…

java 文件转换字符串_java字符串文件互相转换

Java字符串与文件的互转Java中有时候需要读取一个文本类的文件,将其转换为字符串&#xff0c;然后做进一步处理。Java中没有现成的API方法&#xff0c;自己手动实现一个&#xff0c;大家来分享。一、字符串转换为文件/*** 将字符串写入指定文件(当指定的父路径中文件夹不存在时…

使用SQL SERVER 2000的全文检索功能

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 使用SQL SERVER 2000的全文检索功能 步骤&#xff1a; 1、 打开NorthWind数据库&#xff0c;右键Products表&#xff0c;选择“全文索引表”&#xff0c;“在表上定义全文索引”&…

php中的echo、print,print_r、var_dump

我们用代码的运行结果来说明 1、echo <?phpheader(content-type:text/html;charsetutf-8);echo "小河流水人家",<br>;echo 10,<br>;echo true,<br>;echo false,<br>;echo array(8),<br>; ?>运行结果 可以输出字符串和数字…

js数字最多保留两位小数_8085微处理器中最多两个8位数字

js数字最多保留两位小数Problem statement: 问题陈述&#xff1a; To find maximum of two 8bit numberusing 8085 microprocessor. 使用8085微处理器查找最多两个8位数字。 Algorithm: 算法&#xff1a; Load the accumulator with the first data. 向累加器加载第一个数据…