博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis学习笔记之---多表查询(2)
阅读量:4692 次
发布时间:2019-06-09

本文共 6795 字,大约阅读时间需要 22 分钟。

Mybatis多表查询(2)

(一)举例

用户和角色

一个用户可以有多个角色,一个角色可以赋予多个用户

(二)步骤

  1、建立两张表:用户表,角色表,让用户表和角色表具有多对多的关系。需要使用中间表,中间表中包含各自的主键,在中间表中是外键。

   2、建立两个实体类:用户实体类和角色实体类,让用户和角色的实体类能体现出来多对多的关系各自包含对方一个集合引用

   3、建立两个配置文件用户的配置文件角色的配置文件

   4、实现配置:当我们查询用户时,可以同时得到用户所包含的角色信息当我们查询角色时,可以同时得到角色的所赋子的用户信息

(三)代码实现

 

1.pom.xml

junit
junit
4.11
mysql
mysql-connector-java
5.1.41
org.mybatis
mybatis
3.4.6

 

2.Role.java

package entity;import java.util.List;public class Role {    private int rid;    private String rolename;    //多对多的关系映射,一个角色可以赋予多个用户    private List
users; public int getRid() { return rid; } public void setRid(int rid) { this.rid = rid; } public String getRolename() { return rolename; } public void setRolename(String rolename) { this.rolename = rolename; } public List
getUsers() { return users; } public void setUsers(List
users) { this.users = users; } @Override public String toString() { return "Role{" + "rid=" + rid + ", rolename='" + rolename + '\'' + ", users=" + users + '}'; }}

 

3.Users.java

package entity;import java.util.List;public class Users {    private int uid;    private String username;    private String password;    //多对多的关系映射,一个用户可以赋予多个角色    private List
roles; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List
getRoles() { return roles; } public void setRoles(List
roles) { this.roles = roles; } @Override public String toString() { return "Users{" + "uid=" + uid + ", username='" + username + '\'' + ", password='" + password + '\'' + ", roles=" + roles + '}'; }}

 

4.SqlMapperConfig.xml

 

5.UserDao.java

package dao;        import entity.Users;        import java.util.List;public interface UserDao {     List
findAll(); Users find(int id);}

 

6.UserDao.xml

 

7.UserTest.java

package test;import dao.UserDao;import entity.Users;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 org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;public class UserTest {    private InputStream in;    private SqlSession sqlSession;    private UserDao UserDaoImpl;    @Before    public void init() throws IOException {        //1.读取配置文件        in= Resources.getResourceAsStream("SqlMapperConfig.xml");        //2.创建SqlSessionFactory工厂        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();        SqlSessionFactory factory=builder.build(in);        //3.使用工厂生产SqlSession对象        sqlSession=factory.openSession();        //4.使用SqlSession创建dao接口的代理对象        UserDaoImpl=sqlSession.getMapper(UserDao.class);    }    @After    public void destroy() throws IOException {        //提交事务        sqlSession.commit();        //6.释放资源        sqlSession.close();        in.close();    }    /**     * 查询所有     * @throws IOException     */    @Test    public void findall() throws IOException {        //5.使用代理对象执行方法        List
users=UserDaoImpl.findAll(); for(Users u:users){ System.out.println(u); } }}

 

8.RoleDao.java

package dao;import entity.Role;import java.util.List;public interface RoleDao {    List
findAll();}

 

9.RoleDao.xml

 

10.RoleTest.java

package test;import dao.RoleDao;import dao.UserDao;import entity.Role;import entity.Users;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 org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;public class RoleTest {    private InputStream in;    private SqlSession sqlSession;    private RoleDao roleDaoImpl;    @Before    public void init() throws IOException {        //1.读取配置文件        in= Resources.getResourceAsStream("SqlMapperConfig.xml");        //2.创建SqlSessionFactory工厂        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();        SqlSessionFactory factory=builder.build(in);        //3.使用工厂生产SqlSession对象        sqlSession=factory.openSession();        //4.使用SqlSession创建dao接口的代理对象        roleDaoImpl=sqlSession.getMapper(RoleDao.class);    }    @After    public void destroy() throws IOException {        //提交事务        sqlSession.commit();        //6.释放资源        sqlSession.close();        in.close();    }    /**     * 查询所有     * @throws IOException     */    @Test    public void findall() throws IOException {        //5.使用代理对象执行方法        List
roles=roleDaoImpl.findAll(); for(Role r:roles){ System.out.println(r); } }}

 

转载于:https://www.cnblogs.com/dyddzhp/p/11350150.html

你可能感兴趣的文章
python urllib、urlparse、urllib2、cookielib
查看>>
ListBox和ComboBox绑定数据简单例子
查看>>
QQ聊天窗口上的广告与QQ弹窗广告的完美屏蔽去除
查看>>
weblogic连接池问题总结(转载)
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 数据权限增强、范围权限增强...
查看>>
基础概述
查看>>
MySQL中BLOB字段类型介绍
查看>>
Redis Sentinel机制与用法(一)
查看>>
js 更新本地当前时间
查看>>
XAF-如何在详细视图界面显示按钮(含示例项目下载)
查看>>
切换,背景、字体、图片变化
查看>>
sun.misc.BASE64Encoder找不到的解决方案
查看>>
python写注册
查看>>
js如何返回两个数的商的整数和余数部分?
查看>>
根据汉字首拼、全拼及汉字检索
查看>>
android学习---Activity
查看>>
ASP.NET MVC 4中的单页面应用程序
查看>>
嵌入式数据库Perst
查看>>
JAVA 学习笔记
查看>>
使用NPOI插件读取excel模版修改数据后保存到新目录新文件中
查看>>