zoukankan      html  css  js  c++  java
  • (八)mybatis之多对多

    一、需求分析

    • 需求:查询所有用户的信息以及每个用户所属的组的信息
    • 分析:一个用户可以有多个组,一个组也可以由多个用户。
    • 多对多,可以设置一张中间表,该表存放的是用户表和组表的对应关系。

    二、创建数据库和实体对象

     User.java

    package com.shyroke.entity;
    
    import java.util.List;
    
    public class User {
        private int id;
        private String userName;
        private String passWord;
    
        //一个用户有多个组
        private List<Group> groupList;
    //隐藏get和set方法

     Group.java

    package com.shyroke.entity;
    
    import java.util.List;
    
    public class Group {
        private int id;
        private String group_name;
        private String group_num;
    
    //一个组有多个用户
        private List<User> userList;
    
    }

     三、创建UserMapper.java接口和UserMapper.xml配置文件

     UserMapper.java

    package com.shyroke.mapper;
    
    import java.util.List;
    
    import com.shyroke.entity.User;
    
    public interface UserMapper {
            public List<User> selectUserAndGroup();
    }

     UserMapper.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.shyroke.mapper.UserMapper">
    
        <resultMap type="com.shyroke.entity.User" id="userMap">
            <id column="id" property="id" />
            <result column="userName" property="userName" />
            <result column="passWord" property="passWord" />
            <collection property="groupList" ofType="com.shyroke.entity.Group">
                <id column="group_id" property="id" />
                <result column="group_name" property="group_name" />
                <result column="group_num" property="group_num" />
            </collection>
        </resultMap>
    
        <select id="selectUserAndGroup" resultMap="userMap">
            select
            users.*,groups.*
            from
            users,groups,user_group
            where
            users.id=user_group.m_user_id
            and groups.group_id=user_group.m_group_id
    
        </select>
    </mapper>

    四、添加mapper到总配置文件

       mybatis-config.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC" />
                    <property name="username" value="root" />
                    <property name="password" value="" />
                </dataSource>
            </environment>
        </environments>
        
        <mappers>
            <mapper class="com.shyroke.mapper.UserMapper"/>
        </mappers>
       
    </configuration>

    五、测试

    package com.shyrolk.firstMybatis;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import com.shyroke.entity.User;
    import com.shyroke.mapper.UserMapper;
    
    /**
     * Hello world!
     *
     */
    public class App {
        public static void main(String[] args) throws IOException {
            String resource = "resource/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            SqlSession session = sessionFactory.openSession();
    
            UserMapper userMapper= session.getMapper(UserMapper.class);
            List<User> userList = userMapper.selectUserAndGroup();
    
        
            
            for(User user:userList){
                
                System.out.println(user.getId());
                System.out.println(user.getPassWord());
                System.out.println(user.getUserName());
                System.out.println(user.getGroupList());
            }
    
        }
    }

    结果:

  • 相关阅读:
    【转】Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:
    kafka之partition分区及副本replica升级
    Rokid开发者社区skill之【历史上的今天】之简介+玩法+设计+实现+心得
    【转】批量删除redis中的key
    shell实现除法,保留小数点后N位
    [Django学习]中间件
    [Django学习]静态文件处理
    [Django学习]模板
    [Django学习]视图
    [Django学习]模型
  • 原文地址:https://www.cnblogs.com/shyroke/p/7606620.html
Copyright © 2011-2022 走看看