Mybaits中映射关系多对多(三)

2018-06-04  本文已影响0人  聂叼叼

多对多的话,这里用的是role跟user两个实体

1、创建实体对象

Role.java

package com.nieshenkuan.model;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Role {

    private Long role_id;
    private String role_name;
    private String role_memo;

    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public Long getRole_id() {
        return role_id;
    }

    public void setRole_id(Long role_id) {
        this.role_id = role_id;
    }

    public String getRole_name() {
        return role_name;
    }

    public void setRole_name(String role_name) {
        this.role_name = role_name;
    }

    public String getRole_memo() {
        return role_memo;
    }

    public void setRole_memo(String role_memo) {
        this.role_memo = role_memo;
    }

    @Override
    public String toString() {
        return "Role [role_id=" + role_id + ", role_name=" + role_name + ", role_memo=" + role_memo + ", users=" + users
                + "]";
    }

}

User.java

package com.nieshenkuan.model;

import java.util.List;

public class User {
    private Long user_id;
    private String user_name;
    private String user_code;
    private String user_password;
    private List<Role> roles;
    
    
    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }

    public Long getUser_id() {
        return user_id;
    }

    public void setUser_id(Long user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_code() {
        return user_code;
    }

    public void setUser_code(String user_code) {
        this.user_code = user_code;
    }

    public String getUser_password() {
        return user_password;
    }

    public void setUser_password(String user_password) {
        this.user_password = user_password;
    }

    @Override
    public String toString() {
        return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_code=" + user_code + ", user_password="
                + user_password + ", roles=" + roles + "]";
    }

}

2、创建RoleMapper.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.nieshenkuan.dao.RoleMapper">
    <!-- 一个person对应一个idcard -->
    <resultMap type="com.nieshenkuan.model.Role" id="roleResultMap">
        <id property="role_id" column="role_id" javaType="java.lang.Long" />
        <result property="role_name" column="role_name" />
        <result property="role_memo" column="role_memo" />

        <collection property="users" ofType="com.nieshenkuan.model.User"
            column="user_id">
            <id property="user_id" column="user_id" javaType="java.lang.Long"
                jdbcType="INTEGER" />
            <result property="user_name" column="user_name" javaType="java.lang.String"
                jdbcType="VARCHAR" />
            <result property="user_code" column="user_code" javaType="java.lang.String"
                jdbcType="VARCHAR" />
            <result property="user_password" column="user_password"
                javaType="java.lang.String" jdbcType="VARCHAR" />
        </collection>
    </resultMap>


    <select id="selectRoleUser" resultMap="roleResultMap">
        <!-- select -->
        <!-- s.*,c.* from -->
        <!-- tb_student s,tb_course c,tb_select_course sc -->
        <!-- where s.s_id=sc.sc_s_id -->
        <!-- and c.c_id=sc.sc_c_id -->

        select r.*,u.* from
        role r,user u,sys_user_role ur
        where r.role_id=ur.role_id
        and u.user_id=ur.user_id
    </select>


</mapper>

3、创建dao接口RoleMapper.java

package com.nieshenkuan.dao;

import java.util.List;

import com.nieshenkuan.model.Role;

public interface RoleMapper {
    
    public List<Role> selectRoleUser();

}

4、将RoleMapper.xml注册到sqlMapperConfig文件中去

<mappers>
        <mapper resource="com/nieshenkuan/mapper/PersonMapper.xml"></mapper>
            <mapper resource="com/nieshenkuan/mapper/CustomerMapper.xml"></mapper>
            <mapper resource="com/nieshenkuan/mapper/RoleMapper.xml"></mapper>
    </mappers>

5、测试

package com.nieshenkuan.test;

import java.io.IOException;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.nieshenkuan.dao.RoleMapper;
import com.nieshenkuan.model.Role;
import com.nieshenkuan.model.User;
import com.nieshenkuan.util.MyBatisUtil;

public class TestManyToMany {

    @Test
    public void test1() throws IOException {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();

        RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);

        List<Role> selectRoleUser = roleMapper.selectRoleUser();

        for (Role role : selectRoleUser) {
            List<User> users = role.getUsers();

            for (User user : users) {
                System.out.println(role.getRole_id() + "    " + user.getUser_id());
            }
            // System.out.println(role);
        }
    }
}

6、测试结果

1    1
1    2
2    1
2    2
上一篇 下一篇

猜你喜欢

热点阅读