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

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

sql语句

一对一关系数据库表 java类描述
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

一对一关系数据库表 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

一对一关系数据库表 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 }
View Code

daoImpl.java

一对一关系数据库表 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 }
View Code

test测试

一对一关系数据库表 java类描述
 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 }
View Code

 

你可能感兴趣的:(java)