SQLSESSION取得
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(mysqlDataSource());
bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis/mybatis-config.xml"));
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql/*.xml"));
bean.setTypeAliasesPackage("com.getword.entity");
sqlSessionFactory = bean.getObject();
一から一
道
ユーザーと役割が1対1の関係、真ん中のテーブルSys_user_roleであると仮定すると、
public class SysUser{
private SysRole role;
...
}
<select id="findUserAndRoleById" resultType="SysUser">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id "role.id",
r.roleName "role.roleName"
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
第二の方法
resultmapに、と同様の方法を使用します
<resultMap id="userRoleMap" type="SysUser">
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="userPassword" column="userPassword" />
<result property="role.id" column="roleId" />
<result property="role.roleName" column="roleName" />
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id roleId,
r.roleName roleName
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
三つの方法、関連付対応
このように、マルチテーブルのクエリのために、フィールドは指定されたパッケージのラベルを発生します
<resultMap id="userRoleMap" type="SysUser">
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="userPassword" column="userPassword" />
<association property="role" columnPrefix="role" javaType="SysRole">
<result property="id" column="Id" />
<result property="roleName" column="Name" />
</association>
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id roleId,
r.roleName roleName
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
このresultMapを継承することができます
<resultMap id="userRoleMap" type="SysUser" extends="userMap">
<result property="userPassword" column="userPassword" />
<association property="role" columnPrefix="role" javaType="SysRole">
<result property="id" column="Id" />
<result property="roleName" column="Name" />
</association>
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id roleId,
r.roleName roleName
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
4つの方法、関連ネストされたクエリ、最も簡単な方法
<resultMap id="userMap" type="SysUser">
<id property="id" column="id" />
<result property="userName" column="userName" />
</resultMap>
<resultMap id="userRoleMap" type="SysUser" extends="userMap">
<result property="userPassword" column="userPassword" />
<association property="role" column="roleId" select="com.getword.dao.SysRoleDao.findById" />
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id roleId
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
表語文字
<resultMap id="userRoleMap" type="SysUser">
<result property="userPassword" column="userPassword" />
<association property="role" column="roleId" select="com.getword.dao.SysRoleDao.findById" />
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
*
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
where u.id = #{id}
</select>
多くの1つ
道
<resultMap id="userMap" type="SysUser">
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="userPassword" column="userPassword" />
</resultMap>
<resultMap id="userRoleMap" type="SysUser" extends="userMap">
<collection property="roles" javaType="SysRole" columnPrefix="role">
<id property="id" column="Id" />
<result property="roleName" column="Name" />
</collection>
</resultMap>
<select id="findUserAndRoleById" resultMap="userRoleMap">
select
u.id,
u.userName userName,
u.userPassword userPassword,
r.id roleId,
r.roleName roleName
from sys_user u
inner join sys_user_role ur on u.id=ur.userId
inner join sys_role r on r.id = ur.roleId
where u.id = #{id}
</select>
同じIDのユーザーは、パケットに対応する、ユーザに分類され