- 外部キー、2つの関連するテーブルの反対側に追加の外部キーの役割はどのようなものです。
効果:データの一貫性、整合性、外部キーテーブルに格納された制御データの主な目的を維持します。協会は、その結果、2つのテーブルの外側の列の外部キー値または参照のみヌルが形成されています。
どのテーブルの外部キー:次のような状況に分け:
- まず、主テーブルに参照する外部キー列は、主キー列または一意の列でなければなりません。
- 1だから、:nは、そのテーブルのNに基づいて、外部キーを確認しました。
- 1:1、通常の表に子会社を設立するために、当然のテーブル、外部キーを、添付されたマスタテーブル、誰であるかを確認します。
- N:Mは、関係テーブルを確立する必要がある場合、元の2つのテーブルとの関係は1:N、1:Mの
(多くの)の例
役割テーブル
ユーザテーブル
情報テーブル(ここで提供される外部キー)
コンタクトリスト上の外部キー。
- 多くのネストされたクエリのMyBatisの者の
役割:MyBatisのを使用している場合、我々は、テーブルとテーブルの間のリンクに遭遇したとき、あなたはネストされたクエリを使用することができます
例以上の使用を:
public class UserInfo {
private String uid;
private String username;
private String name;
private String password;
private String salt;
private Integer state;
//新建一个roles,用来接受联系表的数据
private List<SysUserRoleKey> roles;
public List<SysUserRoleKey> getRoles() {
return roles;
}
public void setRoles(List<SysUserRoleKey> roles) {
this.roles = roles;
}
}
public class SysUserRoleKey {
private String roleId;
private String uid;
//与role的类是一对一的关系
private SysRole role;
private UserInfo userInfos;
}
このresultMap
<resultMap id="UserAndRole" type="com.example.demo.Model.UserInfo">
<id column="uid" jdbcType="VARCHAR" property="uid" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="salt" jdbcType="VARCHAR" property="salt" />
<result column="state" jdbcType="INTEGER" property="state" />
<collection property="roles" ofType="com.example.demo.Model.SysUserRoleKey">
<id column="role_id" jdbcType="VARCHAR" property="roleId" />
<id column="uid" jdbcType="VARCHAR" property="uid" />
<association property="role" javaType="com.example.demo.Model.SysRole">
<id column="role_id" jdbcType="VARCHAR" property="roleId" />
<result column="available" jdbcType="INTEGER" property="available" />
<result column="description" jdbcType="VARCHAR" property="description" />
<result column="role" jdbcType="VARCHAR" property="role" />
</association>
</collection>
</resultMap>
質問
</select>
<select id="selectUserRole" resultMap="UserAndRole" parameterType="java.lang.String">
select sr.role_id ,sr.available,sr.description,sr.role,各种你需要的属性
FROM user_info u
left join sys_user_role sur ON u.uid=sur.uid
left join sys_role sr ON sur.role_id=sr.role_id
</select>