美文网首页
Mybaits中映射关系多对多(三)

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

作者: 聂叼叼 | 来源:发表于2018-06-04 10:54 被阅读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

相关文章

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

    多对多的话,这里用的是role跟user两个实体 1、创建实体对象 Role.java User.java 2、创...

  • Mybaits中映射关系一对多(二)

    一对多的话,这里用到的是Customer跟LinkMan,一个customer对应多个linkman。(表的关系见...

  • Hibernate 映射关系

    0. 关联关系映射 关联关系映射,是映射关系中比较复杂的一种映射关系,总的说来有一对一、一对多和多对多几种关系。细...

  • Django-关系映射

    关系映射 一对一映射 语法 查询 一对多映射 语法 查询 多对多映射 语法 查询 自定义查询对象

  • SSM框架的常用注解整理

    一.mybatis 1 配置一对多查询和多对多查询的注解方式映射关系: @Results:声明映射关系的配置 Va...

  • 多对多双向

    说明: 1、多对多的结构是三张表 2、多对多是类与集合的关系 映射文件

  • Hibernate之关系映射

    一、单向关系之:一对多映射 一对多映射关系由one方(Department)来维护 many方:Employee ...

  • Python的魔法ORM --《PonyORM教程》 2 实体关

    关系的声明和映射 实体之间的关系映射其实就是数据库的外键关联。一般分为: 一对一 一对多 多对多 三大类。 题外话...

  • Hibernate映射关系之多对多(三)

    多对多的映射关系,这里我用的是角色跟用户两个实体,一个用户可能有多个角色,一个角色同时有多个用户。1、数据库对象关...

  • spring-data-jpa

    Spring Data JPA 之 一对一,一对多,多对多 关系映射

网友评论

      本文标题:Mybaits中映射关系多对多(三)

      本文链接:https://www.haomeiwen.com/subject/eaorjftx.html