Mybatis入门--一对多查询
来源:互联网 发布:金域名苑 编辑:程序博客网 时间:2024/05/21 11:16
场景
新增加一个场景,查询顾客的所有订单信息。
实体类
需要新增User.java类。由于有每个顾客有多个订单信息,所以用List来保存订单信息:private List<Order> orders = new ArrayList<Order>()
。所有代码如下:
package domain;import java.util.ArrayList;import java.util.HashMap;import java.util.List;/** * Created by laiwenqiang on 2017/5/8. */public class User { private String id; private String name; private List<Order> orders = new ArrayList<Order>(); public User() { } public User(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Order> getOrders() { return orders; } public void setOrders(List<Order> orders) { this.orders = orders; } @Override public String toString() { return "User{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", orders=" + orders + '}'; }}
对应的orders表
创建一个orders数据表,和Order实体类对应。订单里面的user_id即为user表的id。
CREATE TABLE `orders` ( `id` varchar(100) NOT NULL DEFAULT '', `user_id` int(100) DEFAULT NULL, `money` double DEFAULT NULL, `receiverAddress` varchar(255) DEFAULT NULL, `receiverName` varchar(20) DEFAULT NULL, `receiverPhone` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1
mapper配置文件
resultMap节点
这个配置文件相对复杂,增加了<resultMap></resultMap>
节点。而<resultMap></resultMap>
节点,分为两大块。
1. “一”的那个部分。即,id="user"
的resultMap节点。
2. “多”的那个部分。即,id="orders"
的resultMap节点。无论“一”或者“多”的节点,他们都是type="domain.User"
。同时,在“多”的这部分,还增加了一个extends="user"
属性,表示它所依赖的载体是user。
collection节点
与此同时,还有一个极为重要的下级节点:<collection></collection>
,作用于“多”的那一方。需要注意的是它有一个,ofType="domain.Order"
属性。显然这个是用于描述集合内容的,也就是orders信息的。
具体代码如下:
<?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="domain.User"> <resultMap id="user" type="domain.User"> <id property="id" column="id"></id> <result property="name" column="name"></result> </resultMap> <resultMap id="orders" type="domain.User" extends="user"> <collection property="orders" ofType="domain.Order"> <id property="id" column="id"></id> <result property="userId" column="user_id"></result> <result property="money" column="money"></result> <result property="receiverAddress" column="receiverAddress"></result> <result property="receiverName" column="receiverName"></result> <result property="receiverPhone" column="receiverPhone"></result> </collection> </resultMap> <select id="selectOrdersByUserId" parameterType="String" resultMap="orders"> select u.id, u.name, o.user_id, o.money, o.receiverAddress, o.receiverName, o.receiverPhone from user u left join orders o on u.id = o.user_id where u.id = #{id} </select></mapper>
修改configuration.xml文件
添加如下代码
<mapper resource="domain/user.xml" />
测试
这代码很简单
List<User> userOrders = session.selectList("domain.User.selectOrdersByUserId", "0001");for(User userOrder : userOrders) { System.out.println(userOrder);}
1 0
- Mybatis入门--一对多查询
- Mybatis入门--关联查询一对多
- mybatis一对多查询
- mybatis一对多查询
- Mybatis一对多查询
- Mybatis 一对多 查询
- mybatis 一对多查询
- Mybatis 一对多 查询
- Mybatis一对多查询
- Mybatis一对多查询
- Mybatis(一对多查询)
- Mybatis最入门---ResultMaps实例篇(一对多查询)
- Mybatis最入门---ResultMaps实例篇(一对多查询)
- mybatis一对多查询配置
- mybatis 嵌套查询,一对多
- Mybatis一对多关联查询
- mybatis 一对多,嵌套查询
- mybatis一对一,一对多查询
- Python变量命名用法(一般变量、常量、私有变量、内置变量)
- 四种会话跟踪技术
- TensorFlowOnSpark安装教程
- selenium和Firefox版本不兼容
- 索引的概念和B树
- Mybatis入门--一对多查询
- linux 中特殊符号用法详解
- LightOJ 1074 O
- 四大组件之内容提供者——ContentProvider
- 在 PLSQL 中调试 存储过程和存储函数
- 最近的心情
- git常用命令
- 酷炫页面产品图片展示
- 二叉搜索树与双向链表