zoukankan      html  css  js  c++  java
  • Mybatis表关联多对多

    创建表

    创建表对应的 JavaBean 对象

    package com.tanlei.newer.model;
    
    import java.util.List;
    
    /**
     * @author:Mr.Tan
     * @Create:2018-11-05-15-07
     **/
    public class User {
        private int id;
        private String username;
        private String mobile;
        private List<Group> groups;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getMobile() {
            return mobile;
        }
    
        public void setMobile(String mobile) {
            this.mobile = mobile;
        }
    
        public List<Group> getGroups() {
            return groups;
        }
    
        public void setGroups(List<Group> groups) {
            this.groups = groups;
        }
    }
    

      


    package com.tanlei.newer.model;
    
    import java.util.List;
    
    /**
     * @author:Mr.Tan
     * @Create:2018-11-05-15-07
     **/
    public class Group {
            private int groupId;
            private String groupName;
            private List<User> users;
    
        public int getGroupId() {
            return groupId;
        }
    
        public void setGroupId(int groupId) {
            this.groupId = groupId;
        }
    
        public String getGroupName() {
            return groupName;
        }
    
        public void setGroupName(String groupName) {
            this.groupName = groupName;
        }
    
        public List<User> getUsers() {
            return users;
        }
    
        public void setUsers(List<User> users) {
            this.users = users;
        }
    }
    

      


    package com.tanlei.newer.model;
    
    /**
     * @author:Mr.Tan
     * @Create:2018-11-05-15-08
     **/
    public class UserGroup {
        private int userId;
        private int groupId;
    
        public int getUserId() {
            return userId;
        }
    
        public void setUserId(int userId) {
            this.userId = userId;
        }
    
        public int getGroupId() {
            return groupId;
        }
    
        public void setGroupId(int groupId) {
            this.groupId = groupId;
        }
    }
    

      


    配置文件 

    <?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>
        <typeAliases>
            <typeAlias alias="User" type="com.tanlei.newer.model.User" />
            <typeAlias alias="UserGroup" type="com.tanlei.newer.model.UserGroup" />
            <typeAlias alias="Group" type="com.tanlei.newer.model.Group" />
        </typeAliases>
    
        <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://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8" />
                    <property name="username" value="root" />
                    <property name="password" value="password" />
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <!-- // power by http://www.yiibai.com -->
            <mapper resource="com/tanlei/newer/model/UserMaper.xml" />
            <mapper resource="com/tanlei/newer/model/GroupMaper.xml" />
            <mapper resource="com/tanlei/newer/model/UserGroupMaper.xml" />
        </mappers>
    </configuration>
    

      

    Group.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.tanlei.newer.model.GroupMaper">
        <parameterMap type="Group" id="parameterGroupMap">
            <parameter property="groupId"/>
            <parameter property="groupName"/>
        </parameterMap>
        <insert id="insertGroup" parameterMap="parameterGroupMap">
    		INSERT INTO 'group' (group_name)
    		VALUES(#{groupName});
    	</insert>
    
        <resultMap type="Group" id="resultGroupMap_1">
            <result property="id" column="id" />
            <result property="groupName" column="group_name" />
            <collection property="users" column="group_id"
                        select="com.tanlei.newer.model.UserGroupMaper.getUsersByGroupId" />
        </resultMap>
        <select id="getGroup" resultMap="resultGroupMap_1"
                parameterType="int">
    		SELECT *
    		FROM 'group'
    		WHERE group_id=#{id}
    	</select>
    </mapper>
    

      


    User.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.tanlei.newer.model.UserMaper">
        <parameterMap type="User" id="parameterUserMap">
            <parameter property="id"/>
            <parameter property="username"/>
            <parameter property="mobile"/>
        </parameterMap>
    
        <insert id="insertUser" parameterMap="parameterUserMap">
    		INSERT INTO user(username,mobile)
    		VALUES(#{username},#{mobile});
    	</insert>
    
        <resultMap type="User" id="resultUser">
            <result property="id" column="group_id"/>
            <result property="name" column="name"/>
            <collection property="groups" column="id" select="com.tanlei.newer.model.UserGroupMaper.getGroupsByUserId"/>
        </resultMap>
    
        <select id="getUser" resultMap="resultUser" parameterType="int">
    		SELECT *
    		FROM user
    		WHERE id=#{id}
    	</select>
    </mapper>
    

      


    UserGroup.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.tanlei.newer.model.UserGroupMaper">
        <parameterMap type="UserGroup" id="parameterUserGroupMap">
            <parameter property="userId"/>
            <parameter property="groupId"/>
        </parameterMap>
    
        <insert id="insertUserGroup"  parameterMap="parameterUserGroupMap">
    		INSERT INTO user_group(user_id, group_id)
    		VALUES(#{userId},#{groupId})
    	</insert>
    
        <!-- 根据一个用户组ID,查看这个用户组下的所有用户 -->
        <resultMap type="User" id="resultUserMap_2">
            <result property="id" column="id"/>
            <result property="username" column="username"/>
            <result property="mobile" column="mobile"/>
        </resultMap>
    
        <select id="getUsersByGroupId" resultMap="resultUserMap_2" parameterType="int">
    		SELECT u.*, ug.group_id
    		FROM user u, user_group ug
    		WHERE u.id=ug.user_id AND ug.group_id=#{group_id}
    	</select>
    
        <!-- 根据一个用户ID,查看这个用户所对应的组-->
        <resultMap type="Group" id="resultGroupMap_2">
            <result property="groupId" column="group_id"/>
            <result property="groupName" column="group_name"/>
        </resultMap>
    
        <select id="getGroupsByUserId" resultMap="resultGroupMap_2" parameterType="int">
    		SELECT g.*, u.user_id
    		FROM group g, user_group u
    		WHERE g.group_id=u.group_id AND u.user_id=#{user_id}
    	</select>
    </mapper>
    
    
    

     

    测试程序运行 

     

     
    package com.tanlei.newer.test;
    
    import com.tanlei.newer.model.*;
    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 java.io.IOException;
    import java.io.Reader;
    import java.util.List;
    
    /**
     * @author:Mr.Tan
     * @Create:2018-11-07-13-14
     **/
    public class UserGroup {
        public  static Reader reader;
        public  static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                reader= Resources.getResourceAsReader("config/UGP.xml");
                sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static  SqlSessionFactory getSqlSession(){
            return  sqlSessionFactory;
        }
    
        public static void main(String[] args) {
             //添加一个组织
            //testAddGroup();
            //添加一个用户
            //testAddUser();
            //添加一个用户和组织
            //testAddUserGroup();
            //根据组织id查询用户信息
            //testGetGroupAndUsers();
            //根据用户id查询对应的组织
            //getGroupsByUserId();
        }
    
        private static void getGroupsByUserId() {
            SqlSession session=sqlSessionFactory.openSession();
            try {
                //通过接口类
                UserGroupMapper userGroupMapper=session.getMapper(UserGroupMapper.class);
                //调用接口类的添加方法
                List<Group> groups=userGroupMapper.getGroupsByUserId(1);
                for(Group group:groups){
                    System.out.println(group.getGroupName());
                    System.out.println(group.getGroupId());
                }
                //提交会话
                session.commit();
            }finally {
                //关闭会话
                session.close();
            }
        }
    
        private static void testGetGroupAndUsers() {
            SqlSession session=sqlSessionFactory.openSession();
            try {
                //通过接口类
                UserGroupMapper userGroupMapper=session.getMapper(UserGroupMapper.class);
                //调用接口类的添加方法
                List<User> users=userGroupMapper.getUsersByGroupId(1);
                for(User user:users){
                    System.out.println(user.getUsername());
                    System.out.println(user.getMobile());
                    System.out.println(user.getId());
                }
                //提交会话
                session.commit();
            }finally {
                //关闭会话
                session.close();
            }
        }
    
    
        public static  void testAddUserGroup(){
            SqlSession session=sqlSessionFactory.openSession();
            try {
                UserGroups usergroup=new UserGroups();
                usergroup.setUserId(2);
                usergroup.setGroupId(2);
                //通过接口类
                UserGroupMapper userGroupMapper=session.getMapper(UserGroupMapper.class);
                //调用接口类的添加方法
                userGroupMapper.insertUserGroup(usergroup);
                //提交会话
                session.commit();
            }finally {
                //关闭会话
                session.close();
            }
        }
    
        public static  void testAddUser(){
            SqlSession session=sqlSessionFactory.openSession();
            try {
               User user=new User();
                user.setUsername("User-name-1");
                user.setMobile("13838009988");
                //通过接口类
                UserMapper userMapper=session.getMapper(UserMapper.class);
                //调用接口类的添加方法
                userMapper.insertUser(user);
                //提交会话
                session.commit();
            }finally {
                //关闭会话
                session.close();
            }
        }
        public static  void testAddGroup(){
            SqlSession session=sqlSessionFactory.openSession();
            try {
                Group  group=new Group();
                group.setGroupName("用户组-1");
                //通过接口类
                GroupMaper groupMaper=session.getMapper(GroupMaper.class);
                //调用接口类的添加方法
                groupMaper.insertGroup(group);
                //提交会话
                session.commit();
                System.out.println(group.getGroupId());
                //返回一个组织信息
                System.out.println(groupMaper.getGroup(2));
            }finally {
                //关闭会话
                session.close();
            }
        }
    
    
    }
    
    
    
    
    
    
  • 相关阅读:
    简单理解同步与异步
    Python3.x 安装Scrapy框架
    Python命名规范
    python 02/100例
    raw_input与input的区别
    二叉排序树
    串和广义表
    数据结构整理 第一章
    时间复杂度
    Music
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9909912.html
Copyright © 2011-2022 走看看