目录
- 1. 一对一关系
- 2. 一对一外键关联查询配置
1. 一对一关系
数据库中的一对一关系 – 主键关联和外键关键
如person表和身份证表card
1、主键关联
create table person (pid int primary key auto_increment,pname varchar(40) not null,pgender varchar(10) not null
)
create table card (cid int not null, -- 引用person表的主键(由程序控制)cnumber varchar(18) not null
)
2、外键关联
person表不变,新增card表外键列
create table card (cid int not null primary key auto_increment,cnumber varchar(18) not null,pid int,foreign key(pid) references person(pid)) -- person的主键(应该程序控制)
)
2. 一对一外键关联查询配置
- sql 以用户表和订单表为例,订单与用户一对一
create table `users1` (`userId` int (11),`userName` varchar (60),`userPassword` varchar (120),`birthday` bigint (255)
); create table `orders` (`order_id` int (11),`order_time` datetime ,`order_money` Decimal (11),`uid` int (11)
);
package cn.bitqian.entity;import java.sql.Timestamp;/*** 用户订单表 一对一* 一个订单对应一个用户...* @author echo lovely* @date 2020/9/13 10:26*/
public class Order {private Integer orderId;private Timestamp orderTime;private Double orderMoney;// 当前订单对应的用户.. 面向对象表示private User user;// constructor.. set/get toString..
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.OrderMapper"><!-- 给Order封装数据 --><resultMap id="orderMap" type="Order"><id property="orderId" column="order_id"/><result property="orderTime" column="order_time"/><result property="orderMoney" column="order_money"/><!-- 封装order里面的user --><!--<result property="user.userId" column="userid"/><result property="user.userName" column="username"/><result property="user.userPassword" column="userpassword"/><result property="user.birthday" column="birthday"/>--><!-- user属性 User类型--><association property="user" javaType="User"><id property="userId" column="userid"/><result property="userName" column="username" /><result property="userPassword" column="userpassword" /><result property="birthday" column="birthday" /></association></resultMap><!-- 返回的是order --><select id="queryAllOrder" resultMap="orderMap">SELECT *, u.`userId` AS userid FROM orders o LEFT JOIN users1 uON o.`uid` = u.`userId`</select></mapper>