一对一关系数据库表 java类描述

一对一关系中 从表的主键是 主表的外键

sql语句


1 create table person(
2 id int primary key,
3 name varchar(100)
4 );
5 create table idcard(
6 id int primary key,
7 num varchar(20),
8 constraint person_id_fk foreign key(id) references person(id)
9 );

View
Code

domain

Person.java


 1 package cn.itcast.domain;
2
3 import java.io.Serializable;
4 /*
5 create table person(
6 id int primary key,
7 name varchar(100)
8 );
9 create table idcard(
10 id int primary key,
11 num varchar(20),
12 constraint person_id_fk foreign key(id) references person(id)
13 );
14 */
15 public class Person implements Serializable {
16 private Integer id;
17 private String name;
18 private IdCard idcard;
19 public Integer getId() {
20 return id;
21 }
22 public void setId(Integer id) {
23 this.id = id;
24 }
25 public String getName() {
26 return name;
27 }
28 public void setName(String name) {
29 this.name = name;
30 }
31 public IdCard getIdcard() {
32 return idcard;
33 }
34 public void setIdcard(IdCard idcard) {
35 this.idcard = idcard;
36 }
37
38 }

View
Code

IdCard.java


 1 package cn.itcast.domain;
2
3 import java.io.Serializable;
4
5 public class IdCard implements Serializable {
6 private Integer id;
7 private String num;
8 private Person person;
9 public Integer getId() {
10 return id;
11 }
12 public void setId(Integer id) {
13 this.id = id;
14 }
15 public String getNum() {
16 return num;
17 }
18 public void setNum(String num) {
19 this.num = num;
20 }
21 public Person getPerson() {
22 return person;
23 }
24 public void setPerson(Person person) {
25 this.person = person;
26 }
27
28 }

daoImpl.java


 1 package cn.itcast.dao.impl;
2
3 import java.sql.SQLException;
4
5 import org.apache.commons.dbutils.QueryRunner;
6 import org.apache.commons.dbutils.handlers.BeanHandler;
7
8 import cn.itcast.domain.IdCard;
9 import cn.itcast.domain.Person;
10 import cn.itcast.util.DBCPUtil;
11
12 public class PersonDaoImpl {
13 private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
14 public void addPerson(Person p) throws SQLException{
15 //保存人的基本信息
16 qr.update("insert into person (id,name) values(?,?)", p.getId(),p.getName());
17 //如果有身份证,保存身份证的基本信息
18 IdCard card = p.getIdcard();
19 if(card!=null){
20 qr.update("insert into idcard (id,num) values(?,?)", p.getId(),card.getNum());
21 }
22 }
23 //要不要查IdCard的内容。都要求查,因为Idcard是少的一方的
24 public Person findPerson(Integer id) throws SQLException{
25 Person p = qr.query("select * from person where id=?", new BeanHandler<Person>(Person.class), id);
26 if(p!=null){
27 IdCard idcard = qr.query("select * from idcard where id=?", new BeanHandler<IdCard>(IdCard.class), id);
28 p.setIdcard(idcard);
29 }
30 return p;
31 }
32 }

test测试


 1 package cn.itcast.test;
2
3 import static org.junit.Assert.fail;
4
5 import java.sql.SQLException;
6
7 import org.junit.Test;
8
9 import cn.itcast.dao.impl.PersonDaoImpl;
10 import cn.itcast.domain.IdCard;
11 import cn.itcast.domain.Person;
12
13 public class PersonDaoImplTest {
14 private PersonDaoImpl dao = new PersonDaoImpl();
15 @Test
16 public void testAddPerson() throws SQLException {
17 Person p = new Person();
18 p.setId(1);
19 p.setName("zql");
20
21 IdCard idcard = new IdCard();
22 idcard.setNum("110");
23
24 p.setIdcard(idcard);
25 dao.addPerson(p);
26 }
27
28 @Test
29 public void testFindPerson() throws SQLException {
30 Person p = dao.findPerson(1);
31 System.out.println(p.getName());
32 IdCard idcard = p.getIdcard();
33 System.out.println(idcard.getNum());
34 }
35
36 }

时间: 2024-11-09 00:45:11

一对一关系数据库表 java类描述的相关文章

多对一关系表 java类描述

涉及java对象涉及到多个对象相互引用,要尽量避免使用一对多,或多对多关系,而应使用多对一描述对象之间的关系(或使用延迟加载的方式). 下个例子employee是多,而department是一 的关系 sql语句 1 create table department_table( 2 id int primary key, 3 name varchar(100) 4 ); 5 create table employee_table( 6 id int primary key, 7 name var

数据表-java类的映射

1.一个数据表对应一个java类 2.数据表的字段对应java类的属性 3.一对多的数据表关系 一方用一个java对象表示 多方用一个java对象数组表示 4.多对多的数据表关系:采用中间表,将多对多转为多对一进行处理 eg:Student类

多对多关系数据库表 java描述

多对多关系 需要建立一张新表存放它们的对应数据 sql语句 1 create table teacher( 2 id int primary key, 3 name varchar(100), 4 money float(8,2) 5 ); 6 create table student( 7 id int primary key, 8 name varchar(100), 9 grade varchar(10) 10 ); 11 create table teacher_student( 12

java 类的匿名类和封装

/* 匿名对象:没有引用类型变量指向的对象称作为匿名对象. 需求: 使用 java类描述一个学生类. 匿名对象要注意的事项: 1. 我们一般不会给匿名对象赋予属性值,因为永远无法获取到. 2. 两个匿名对象永远都不可能是同一个对象. 匿名对象好处:简化书写.可以尽快释放对象的堆内存空间 匿名对象的应用场景: 1. 如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这时候可以使用 匿名对象. 2. 可以作为实参调用一个函数. */ //学生类 class Stude

Java语言描述顺序表类,顺序表类的基本操作实现

数据结构(Java版)ch2 线性表的顺序存储(顺序表) 线性表的抽象数据Java接口描述如下: package ch2; /** * 线性表的抽象数据接口,用Java语言描述线性表的这些功能! * @author 房廷飞 * */ public interface IList { public void clear(); //将线型表置成空表 public boolean isEmpty(); //判断是不是空表 public int length(); //返回线性表的长度 public O

【数据结构】之顺序表(Java语言描述)

之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中,为我们提供了专门的顺序表的数据结构API-- ArrayList . Java中的ArrayList的基本存储思路和C语言中的思路相似,即将所有元素存储在一个数组中,当数组中的元素个数达到某种标准时,就要扩容.由于顺序表中的其他操作在Java和C中的实现方式大同小异,因此,本文不再详细介绍这些操作

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

java类文件结构(字节码文件)

[0]README 0.1)本文部分文字描述转自 "深入理解jvm",旨在学习类文件结构  的基础知识: 0.2)本文荔枝以及荔枝的分析均为原创: 0.3)下面的截图中有附注t*编号,不关乎博文内容: [1]类文件概述 1)各种不同平台的虚拟机与所有平台都统一使用存储格式--字节码,他是构成平台无关性的基石: 2)时至今日,商业机构和开源机构已经在 java语言外发展出一大批在 jvm 上运行的语言,如 Groovy, JRuby, Jython,Scala等: 3)实现语言无关性的基

Java类文件结构

Java类文件结构 阅读目录 一.概述 二.Class类文件的结构 三.字节码指令 四.参考资料 回到顶部 一.概述 实现语言无关性的基础是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,只与"Class文件"这种特定的二进制文件所关联,Class文件中包含了Java虚拟机指令集合符号表以及若干其它辅助信息.Java虚拟机作为一个通用的.机器无关的执行平台,任何其他语言都可以将其作为语言的产品交付媒介. 回到顶部 二.Class类文件的结构 Class文件是一