- Was die Rolle des Fremdschlüssels ist, Fremdschlüssel auf die anderen Seite von zwei verknüpften Tabellen hinzugefügt.
Effekt: Aufrechterhaltung der Datenkonsistenz, Integrität, der Hauptzweck der Steuerdaten in dem externen Schlüsseltabelle gespeichert. Verband ist so ausgebildet, dass zwei Tabellen, die Fremdschlüsselwerte oder Referenz nur Nullen in den äußeren Spalten .
Welche der Fremdschlüssel in einer Tabelle: gliedert sich in die folgenden Situationen:
- Erstens müssen die Fremdschlüsselspalten in der Primärtabelle referenziert die Primärschlüsselspalte oder eine eindeutige Spalte sein.
- Also 1: n bestätigte den Fremdschlüssel basierend auf n der Tabelle.
- 1: in der Regel 1, um zu sehen, wer die Master-Tabelle ist, die Tabellen, Fremdschlüssel angebracht ist, natürlich, eine Tochtergesellschaft in der Tabelle zu etablieren.
- n: wobei m, ist es notwendig , eine Beziehungstabelle zu schaffen, die ursprünglichen zwei Tabellen und Beziehungen sind 1: n, 1: m
Beispiele für (viele):
Rolle Tabelle
Benutzertabelle
Information Table (Fremdschlüssel versehen hier)
Der Fremdschlüssel in der Kontaktliste.
- viele verschachtelte Abfrage Mybatis der
Rolle: Wenn Mybatis verwenden, wenn wir eine Verbindung zwischen dem Tisch und der Tisch auftreten, können Sie eine verschachtelte Abfrage verwenden
Beispiel oder die Verwendung der oben:
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>
Abfrage
</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>