Mybatis—多表查询
生活随笔
收集整理的這篇文章主要介紹了
Mybatis—多表查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mybatis多表查詢
一對一查詢
一對一查詢的模型MapperScannerConfigurer
用戶表和訂單表的關系為,一個用戶有多個訂單,一個訂單只從屬于一個用戶
創建Order和User實體
public class Order {private int id;private Date ordertime;private double total;//代表當前訂單從屬于哪一個客戶private User user; }public class User {private int id;private String username;private String password;private Date birthday;}創建接口
public interface OrderMapper {List<Order> findAll(); }配置OrderMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.controller.OrderMapper"> <resultMap id="orderMap" type="com.model.Order"><result column="id" property="id" /><result column="ordertime" property="ordertime"/><result column="total" property="total"/><association property="user" javaType="com.model.User"><result column="uid" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="birthday" property="birthday"/></association> </resultMap><select id="findAll" resultMap="orderMap">select * from orders o,user u where o.uid=u.id</select> </mapper>測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);List<Order> all = mapper.findAll();System.out.println(all);}一對多查詢
一對多查詢的模型
用戶表和訂單表的關系為,一個用戶有多個訂單,一個訂單只從屬于一個用戶
一對多查詢的需求:查詢一個用戶,與此同時查詢出該用戶具有的訂單
1.2.3 修改User實體
public class Order {private int id;private Date ordertime;private double total;//代表當前訂單從屬于哪一個客戶private User user; }public class User {private int id;private String username;private String password;private Date birthday;//代表當前用戶具備哪些訂單private List<Order> orderList; }創建UserMapper接口
public interface UserMapper {List<User> findAll(); }配置UserMapper.xml
<resultMap id="userMap" type="com.model.User"><result column="username" property="username" /><result column="password" property="password"/><result column="id" property="id"/><result column="birthday" property="birthday"/><collection property="orderList" ofType="com.model.Order"><result property="id" column="oid"/><result property="ordertime" column="ordertime"/><result property="total" column="total"/></collection></resultMap><select id="findAll" resultMap="userMap">select * ,o.id oid from user u left join orders o on u.id=o.uid</select>測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);userMapper mapper = sqlSession.getMapper(userMapper.class);List<User> all = mapper.findAll();System.out.println(all);}多對多查詢
多對多查詢的模型
用戶表和角色表的關系為,一個用戶有多個角色,一個角色被多個用戶使用
多對多查詢的需求:查詢用戶同時查詢出該用戶的所有角色
創建Role實體,修改User實體
public class User {private int id;private String username;private String password;private Date birthday;//代表當前用戶具備哪些訂單private List<Order> orderList;//代表當前用戶具備哪些角色private List<Role> roleList; }public class Role {private int id;private String rolename;}添加UserMapper接口方法
List<User> findAllUserAndRole();配置UserMapper.xml
<resultMap id="roleMap" type="com.model.User"><result column="username" property="username" /><result column="password" property="password"/><result column="id" property="id"/><result column="birthday" property="birthday"/><collection property="roleList" ofType="com.model.Role"><result property="id" column="rid"/><result property="rolename" column="rolename"/></collection></resultMap><select id="findAllUserAndRole" resultMap="roleMap">select u.*,r.id rid,r.* from user u left join sys_user_role ur on u.id=ur.userid inner join sys_role r on r.id=ur.roleid</select>測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);userMapper mapper = sqlSession.getMapper(userMapper.class);List<User> all = mapper.findAllUserAndRole();System.out.println(all);}總結
以上是生活随笔為你收集整理的Mybatis—多表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己车里面东西丢了怎么办
- 下一篇: 做梦梦到和老婆婆吵架是什么意思