データベースのレコードの小さな問題

  1. 外部キー、2つの関連するテーブルの反対側に追加の外部キーの役割はどのようなものです。
    効果:データの一貫性、整合性、外部キーテーブルに格納された制御データの主な目的を維持します。協会は、その結果、2つのテーブルの外側の列の外部キー値または参照のみヌルが形成されています
    どのテーブルの外部キー:次のような状況に分け:
  • まず、主テーブルに参照する外部キー列は、主キー列または一意の列でなければなりません。
  • 1だから、:nは、そのテーブルのNに基づいて、外部キーを確認しました。
  • 1:1、通常の表に子会社を設立するために、当然のテーブル、外部キーを、添付されたマスタテーブル、誰であるかを確認します。
  • N:Mは、関係テーブルを確立する必要がある場合、元の2つのテーブルとの関係は1:N、1:Mの
    (多くの)の例
    役割テーブル
    ここに画像を挿入説明
    ユーザテーブル
    ここに画像を挿入説明
    情報テーブル(ここで提供される外部キー)
    ここに画像を挿入説明

コンタクトリスト上の外部キー。

  1. 多くのネストされたクエリの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>
公開された36元の記事 ウォン称賛11 ビュー10000 +

おすすめ

転載: blog.csdn.net/s_xchenzejian/article/details/97039257