mybatis中表之间的关系
表与表之间的四个关系:
一对一
多对一(在mybatis中看做一对一)
例如:当多个订单与用户形成多对一时,同时取出其中的一个订单又只能与一个用户对应,因此mybatis将多对一看做一对一
一对多
多对多
mybatis一对多表查询
1.建立两张数据库表,并设置对应的主键外键
2.建立两个数据库表对应实体类
3.建立两个表格的xml文件
4.配置关系
查询为‘一’的一方的结果的同时需要获取‘多’的一方的结果
查询为‘多’的一方的结果的同时需要获取‘一’的一方的结果
5.完成以上步骤后,俩个实体类都可以作为查询使用,但是并不能在查询‘一’方时顺带将‘多’的数据查询出来
6.在创建一个实体类并继承上方某一个实体类
7.修改被继承实体类xml文件,将返回值类型,查询语句等做修改
8.不使用继承的方式来查询多个表格,通过在实体类中的resultMap标签来进行多表操作,并在实体类中建立对应的对象引用和列表集合
relultMap配置多表操作(查询从表显示主表)
<mapper namespace="com.gaipian.dao.IAccoutDao">
<resultMap id="account" type="account">
<id property="ID" column="AID"></id>
<result property="UID" column="UID"></result>
<result property="MONEY" column="MONEY"></result>
<association property="user" column="UID" javaType="user">
property:该实体类包含的对象类型
column:根据哪个字段进行查询
javaType:封装的类型
<id property="id" column="id"></id>
<result property="username" column="username"></result>
<result property="birthday" column="birthday"></result>
<result property="sex" column="sex"></result>
<result property="address" column="address"></result>
</association>
</resultMap>
注意:javaType不要漏不然会报Null错误
查询主表显示从表的信息
<resultMap id="user" type="user">
<id property="id" column="id"></id>
<result property="username" column="username"></result>
<result property="birthday" column="birthday"></result>
<result property="sex" column="sex"></result>
<result property="address" column="address"></result>
<collection property="accountList" ofType="account">
ofType:accountList中数据的类型
<id property="ID" column="AID"></id>
<result property="UID" column="UID"></result>
<result property="MONEY" column="MONEY"></result>
</collection>
</resultMap>
mybatis多对多的查询
1.建立两个数据表,另外还要建立一个中间表
2.建立两个实体类
3.建立两个配置文件
4.实体相互包含对象集合
<resultMap id="roleAndUser" type="role">
<id property="ID" column="RID"/>
<result property="ROLE_NAME" column="ROLE_NAME"/>
<result property="ROLE_DESC" column="ROLE_DESC"/>
<collection property="users" ofType="user">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="birthday" column="birthday"/>
<result property="sex" column="sex"/>
<result property="address" column="address"/>
</collection>
</resultMap>