在网络上有着两个一对多查询方式,但是只有一个是能用的,使用ResultMap方式进行一对多查询,
其中在Mapper.xml中如下配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.acompe.security.mapper.UserMapper">
<select id="findUserByUsername" resultMap="user" parameterType="String">
SELECT a.id,a.username,a.`password`,a.is_enable,a.create_time,a.update_time, p.url
FROM user_account a
INNER JOIN user_account_role ar
ON a.id = ar.user_account_id
INNER JOIN user_role_permission rp
ON ar.user_role_id = rp.user_role_id
INNER JOIN user_permission p
ON rp.user_permission_id = p.id
WHERE a.id = 1;
</select>
<resultMap id="user" type="com.acompe.security.model.po.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="is_enable" property="isEnable"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<collection property="authorities" ofType="org.springframework.security.core.authority.SimpleGrantedAuthority">
<result column="url" property="role"/>
</collection>
</resultMap>
</mapper>