1. 一对多配置
1. 什么是一对多
如用户表和订单表,
单个用户可能有多个订单,即一对多。如班级表和学生表
一个班级有多个学生,学生表的外键为
班级表的主键。
<?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.UserMapper" > < resultMap id = " userAndOrderMap" type = " User" > < id property = " userId" column = " userid" /> < result property = " userName" column = " username" /> < result property = " userPassword" column = " userpassword" /> < result property = " birthday" column = " birthday" /> < collection property = " orderList" ofType = " Order" > < id property = " orderId" column = " order_id" /> < result property = " orderTime" column = " order_time" /> < result property = " orderMoney" column = " order_money" /> </ collection> </ resultMap> < select id = " queryAllUserAndOrder" resultMap = " userAndOrderMap" > SELECT * FROM users1 u , orders oWHERE u.`userId` = o.`uid`</ select> </ mapper>
public class User { private Integer userId; private String userName; private String userPassword; private Date birthday; private List< Order> orderList; }
2. 多对多实现
1. 多对多关系实现
如用户表和角色表
一个用户可能扮演多个角色,如是程序员,也可以是
歌手。
而单个角色也有多个人在扮演。
而决定用户表和角色表的有中间第三个表,用户角色关系表,
这个表有用户表和角色表的主键两个列。再如歌单表和歌曲表
歌单里面有多首歌曲,一首歌曲会出现多个歌单里面。
典型的多对多关系。中间也是由第三个表
将歌单和歌曲表的主键联系起来的。与一对多的区别:多了个中间的关系表,把两个表通过主外键联系起来。
create table ` users1` ( ` userId` int ( 11 ) , ` userName` varchar ( 60 ) , ` userPassword` varchar ( 120 ) , ` birthday` bigint ( 255 )
) ;
CREATE TABLE role ( role_id INT PRIMARY KEY , role_name VARCHAR ( 30 ) NOT NULL UNIQUE
) ;
CREATE TABLE user_role ( user_id INT NOT NULL , role_id INT NOT NULL
) ;
private List< Role> roleList;
<?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.UserMapper" > < resultMap id = " userAndRoleMap" type = " User" > < id property = " userId" column = " userId" /> < result property = " userName" column = " userName" /> < result property = " userPassword" column = " userPassword" /> < result property = " birthday" column = " birthday" /> < collection property = " roleList" ofType = " Role" > < id property = " roleId" column = " role_id" /> < result property = " roleName" column = " role_name" /> </ collection> </ resultMap> < select id = " queryAllUserAndRole" resultMap = " userAndRoleMap" > SELECT * FROM users1, user_role, roleWHERE users1.`userId` = user_role.`user_id`AND role.`role_id` = user_role.`role_id`</ select>
</ mapper>