在使用mybatis读取数据时显示
数据库执行查询语句
select * from sys_user_role us, user u , sys_role r where us.userId=u.id and us.roleId=r.id
显示的数据
在UserMapper.xml的配置
<resultMap id="roleMap" type="user">
<result column="userId" property="id"></result>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
<result column="birthday" property="birthday"></result>
<collection property="roleList" ofType="role">
<result column="roleId" property="id"></result>
<result column="roleName" property="roleName"></result>
<result column="roleDesc" property="roleDesc"></result>
</collection>
</resultMap>
<select id="findAllUser" resultMap="roleMap">
select * from sys_user_role us, user u , sys_role r where us.userId=u.id and us.roleId=r.id
</select>
执行测试代码
@Test
public void test3() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allUser = mapper.findAllUser();
for (User user : allUser) {
System.out.println(user.toString());
}
}
无法显示定义中的roleList中的数据,显示的是它的存储地址
检查了xml文件中column(数据库查询数据的名称)和property(类属性),没有问题
解决方法:
最后发现在domain中没有重写toString方法,导致无法显示数据(太傻了。。。。。)
public class Role {
private int id;
private String roleName;
private String roleDesc;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleDesc() {
return roleDesc;
}
public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc;
}
@Override
public String toString() {
return "Role{" +
"id=" + id +
", roleName='" + roleName + '\'' +
", roleDesc='" + roleDesc + '\'' +
'}';
}
}
结果: