在现实的项目中进行数据库建模时,我们要遵循数据库设计范式的要求,会对现实中的业务模型进行拆分,封装在不同的数据表中,表与表之间存在着一对一、一对多或是多对多的对应关系。
实例:一个人只有一个身份证,一个身份证只能给一个人使用。一对一使用唯一外键关联。创建项目OneToOneTest,实现一对一关系的增删改查。
1、创建两个表tb_person和tb_card,tb_person表的card_id作为外键参照tb_perosn表的主键,一对一关系,card_id作为了唯一外籍约束。
tb_user:
tb_card:
2、创建Card类、Person类分别映射tb_card和tb_person表,这里太简单就是构造函数和getset,属性对应就好了,就不放代码了
3、映射文件
CardMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.dao.CardDao">
<!-- 查询-->
<select id="selectCard" resultType="com.my.bean.Card" parameterType="int">
select * from tb_card where id = #{
id}
</select>
<!-- 插入 -->
<insert id="insertCard" useGeneratedKeys="true" parameterType="com.my.bean.Card">
<!-- 获取刚插入的card的自动生成的主键id;(用来插入person表的card_id)-->
<selectKey resultType="int" keyProperty="id" order="AFTER">
<!-- select @@identity -->
select last_insert_id();
</selectKey>
insert into tb_card(code) values(#{
code})
</insert>
<!-- 删除,根据数据库的关联关系删除,即删除card,person也随之删除 -->
<delete id="deleteCard">
delete from tb_card where id=#{
id}
</delete>
<!-- 修改 -->
<update id="updateCard">
update tb_card(code) values(#{
code}) where id=#{
id}
</update>
</</