一对一关系数据库表 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类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
随机推荐
- Windows UWP开发系列 – MessageDialog 和 ContentDialog
MessageDialog 在Metro程序中,没有传统的窗口,当我们要用需要交互的消息提示时,在Win8时代,引入了一个MessageDialog来取代常用的MessageBox.使用方法如下: p ...
- delphi tcp/ip IdTCPServer1实例一
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form ...
- android 广告平台 keymob
访问地址: http://www.keymob.com/
- 【java】弃用System.out.println(),迎接log
展示性能差异: 1.System.out.println()输出 package com.sxd.swapping.test; import org.junit.Test; public class ...
- ReflectionToStringBuilder使用
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3 ...
- HTML+CSS网站开发兵书
<HTML+CSS网站开发兵书> 基本信息 作者: 高洪涛 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121212369 上架时间:2013-8-26 出版日期:2 ...
- vc预处理
VC 编译命令开关 vc可以可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关 /C:在预处理输出中保留注释语句 /c:只编译, ...
- 数学图形(1.20)N叶草
有N个叶子的草 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 vertices = t = to (*PI) r = n ...
- go语言基础之类型别名
1.类型别名 示例: package main //必须有一个main包 import "fmt" func main() { //给int64起一个别名叫bigint type ...
- C# 轻松实现对窗体(Form)换肤[转]
一直想写一个比较完整的.容易扩展的窗体换肤的方案,由于时间问题,都没去实现这个想法.现在有朋友提出需要,就把以前写的重新拿出来看了一篇,花了些时间,做出了现在的这个换肤的方案.实现的过程中遇到了不少问 ...