在Java一对多的数据关系中,需要遵循以下设计原则:
Java类的名称 = 实体表的名称
一个用户拥有多个订单,所以 用户是一的一方, 订单是多的一方
<2> User类
/** * 用户表 对应 User类 * `uid` VARCHAR(32) NOT NULL, * `username` VARCHAR(20) DEFAULT NULL, * `password` VARCHAR(20) DEFAULT NULL, * `telephone` VARCHAR(20) DEFAULT NULL, * `birthday` DATE DEFAULT NULL, * `sex` VARCHAR(10) DEFAULT NULL, * */ public class User { private String uid; private String username; private String password; private String telephone; private String birthday; private String sex; //提供 get set toString方法 }
<3> Orders类
/** * 订单表 * `oid` VARCHAR(32) NOT NULL, * `ordertime` DATETIME DEFAULT NULL, * `total` DOUBLE DEFAULT NULL, * `name` VARCHAR(20) DEFAULT NULL, * `telephone` VARCHAR(20) DEFAULT NULL, * `address` VARCHAR(30) DEFAULT NULL, * `state` INT(11) DEFAULT NULL, * `uid` VARCHAR(32) DEFAULT NULL, * * */ public class Orders { private String oid; //订单号 private String ordertime; //下单时间 private double total; //订单的总金额 private String name; //收货人姓名 private String telephone; //收货人电话 private String address; //收货人地址 private int state; //订单状态 1 代表已支付 , 0 代表未支付 //订单属于哪个用户呢 ? //提供 get set toString方法 }
<4> Orders类设计分析
第一种方式
根据两张表关系的描述 我们可以在 订单类中, 添加一个uid 成员变量,表示订单属于哪个用户
private String uid;
但是这样设计会存在一些问题,比如,我要查询的是订单是属于哪个用户的用户名 ? 但是我们只有一个uid
第二种方式
Java类表示一对多关系,可以在多的一方添加一个成员变量,这个成员变量的类型,就是一的一方的类型.
再在订单表中,添加一个 User对象,User对象中 ,保存该订单关联的用户的所有信息
private String uid; private User user;
public class Orders { private String oid; //订单号 private String ordertime; //下单时间 private double total; //订单的总金额 private String name; //收货人姓名 private String telephone; //收货人电话 private String address; //收货人地址 private int state; //订单状态 1 代表已支付 , 0 代表未支付 //订单属于哪个用户呢 ? private String uid; //表示外键 private User user; //用来保存订单对应的详细的用户信息 //提供 get set toString方法 }