一对一关系数据库表 java类描述
一对一关系中 从表的主键是 主表的外键
sql语句
create table person(
id int primary key,
name varchar(100)
);
create table idcard(
id int primary key,
num varchar(20),
constraint person_id_fk foreign key(id) references person(id)
);
domain
Person.java
package cn.itcast.domain; import java.io.Serializable;
/*
create table person(
id int primary key,
name varchar(100)
);
create table idcard(
id int primary key,
num varchar(20),
constraint person_id_fk foreign key(id) references person(id)
);
*/
public class Person implements Serializable {
private Integer id;
private String name;
private IdCard idcard;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCard getIdcard() {
return idcard;
}
public void setIdcard(IdCard idcard) {
this.idcard = idcard;
} }
IdCard.java
package cn.itcast.domain;
import java.io.Serializable;
public class IdCard implements Serializable {
private Integer id;
private String num;
private Person person;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
daoImpl.java
package cn.itcast.dao.impl; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler; import cn.itcast.domain.IdCard;
import cn.itcast.domain.Person;
import cn.itcast.util.DBCPUtil; public class PersonDaoImpl {
private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
public void addPerson(Person p) throws SQLException{
//保存人的基本信息
qr.update("insert into person (id,name) values(?,?)", p.getId(),p.getName());
//如果有身份证,保存身份证的基本信息
IdCard card = p.getIdcard();
if(card!=null){
qr.update("insert into idcard (id,num) values(?,?)", p.getId(),card.getNum());
}
}
//要不要查IdCard的内容。都要求查,因为Idcard是少的一方的
public Person findPerson(Integer id) throws SQLException{
Person p = qr.query("select * from person where id=?", new BeanHandler<Person>(Person.class), id);
if(p!=null){
IdCard idcard = qr.query("select * from idcard where id=?", new BeanHandler<IdCard>(IdCard.class), id);
p.setIdcard(idcard);
}
return p;
}
}
test测试
package cn.itcast.test; import static org.junit.Assert.fail; import java.sql.SQLException; import org.junit.Test; import cn.itcast.dao.impl.PersonDaoImpl;
import cn.itcast.domain.IdCard;
import cn.itcast.domain.Person; public class PersonDaoImplTest {
private PersonDaoImpl dao = new PersonDaoImpl();
@Test
public void testAddPerson() throws SQLException {
Person p = new Person();
p.setId(1);
p.setName("zql"); IdCard idcard = new IdCard();
idcard.setNum("110"); p.setIdcard(idcard);
dao.addPerson(p);
} @Test
public void testFindPerson() throws SQLException {
Person p = dao.findPerson(1);
System.out.println(p.getName());
IdCard idcard = p.getIdcard();
System.out.println(idcard.getNum());
} }
一对一关系数据库表 java类描述的更多相关文章
- 多对一关系表 java类描述
少的一方把它查询出来,多的一方看需求把它查出来 涉及java对象涉及到多个对象相互引用,要尽量避免使用一对多,或多对多关系,而应使用多对一描述对象之间的关系(或使用延迟加载的方式). 下个例子empl ...
- 数据表-java类的映射
1.一个数据表对应一个java类 2.数据表的字段对应java类的属性 3.一对多的数据表关系 一方用一个java对象表示 多方用一个java对象数组表示 4.多对多的数据表关系:采用中间表,将多对多 ...
- 多对多关系数据库表 java描述
多对多关系 需要建立一张新表存放它们的对应数据 sql语句 create table teacher( id int primary key, name ), ,) ); create table s ...
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- Java类WebServer及中间件拿webshell方法总结
0.序 原文名称:Tomcat.Weblogic.JBoss.GlassFish.Resin.Websphere弱口令及拿webshell方法总结 原文from:http://www.hack80.c ...
- Java 类反射机制分析
Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...
- 专题笔记--Java 类集框架
Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
随机推荐
- NSArray与NSMutableArray 数组与可变数组的创建和遍历 复习
1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组. 2.NSArray的创建 NSArray * array = [[NSArray alloc]initWi ...
- 使用OData快速构建REST服务
OData是微软支持的一种查询标准,它的第四版使用了REST规范,看起来简洁多了.它的最大的特点是可以在客户端自行配制查询条件,使用它构建REST服务时再也不用担心查询的扩展性问题了. 如下是几个简单 ...
- Windows下配置Git服务器和客户端
http://www.cnblogs.com/lwme/archive/2012/12/25/configuring-git-server-and-client-on-windows.html] 选择 ...
- mOByDiC E90C2600 EOBD/OBDII to RS232 gateway
http://www.ozenelektronik.com/downs/pdf/oe90c2600.pdf Features • Compatible with EOBD/OBDII standard ...
- C# 读取EXCEL文件出现数据丢失问题,数据不完整
将EXCEL数据导出的时候如果同一列数据中既有文字,又有数字!读取时一列中要么文字丢失只剩下数字,要么数字丢失,只剩下文字,这是由第一行的数据类型决定的.出现这种问题是由于数据类型不统一造成的. 原来 ...
- 解决 Operation must use an updateable query
在asp.net 开发环境下,用jet 4.0连接access数据库, 有时会产生Operation must use an updateable query,这是由于相关用户mdb文件没有Modif ...
- Unity 国际化 多语言设置
很多游戏中都有语言设置选项,NGUI插件中自带了国际化脚本,但是灵活性较低,而且目前项目是UGUI,以下是修改后,以便记录. Localization和NGUI中用法一样,挂在在一个不销毁的游戏物体上 ...
- eclipse安装Run-Jetty-Run插件,修改实时生效
http://marketplace.eclipse.org/content/run-jetty-run 1.直接拖拽到eclipse安装(7/8/9版本都安装) 2.以调试的方式启动jetty( ...
- python对字符串的操作
去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sS ...
- Debian+Pure-ftpd+MySQL+User manager for PureFTPd
1. 安装pure-ftpd.MySQL apt-get purge vsftpd apt-get purge pure-ftpd apt-get purge pure-ftpd-common apt ...