实体类1
package com.mybatis.model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
public class User implements Serializable {
private int id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
private List<Orders> orders;
public List<Orders> getOrders() {
return orders;
}
public void setOrders(List<Orders> orders) {
this.orders = orders;
}
public User() {
}
public User(String username, String sex, Date birthday, String address) {
this.username = username;
this.sex = sex;
this.birthday = birthday;
this.address = address;
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", sex='" + sex + '\'' +
", birthday=" + birthday +
", address='" + address + '\'' +
", orders=" + orders +
'}';
}
}
实体类2
package com.mybatis.model;
import java.util.Date;
import java.util.List;
/**
* @author MJC
* @date 2019-11-21 16:56
* @description 订单实体类
*/
public class Orders {
private Integer id;
private Integer user_id;
private String number;
private Date createtime;
private String note;
private User user;
private List<OrdersDetails> ordersDetails;
public List<OrdersDetails> getOrdersDetails() {
return ordersDetails;
}
public void setOrdersDetails(List<OrdersDetails> ordersDetails) {
this.ordersDetails = ordersDetails;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return "Orders{" +
"id=" + id +
", user_id=" + user_id +
", number='" + number + '\'' +
", createtime=" + createtime +
", note='" + note + '\'' +
", user=" + user +
", ordersDetails=" + ordersDetails +
'}';
}
}
实体类3
package com.mybatis.model;
/**
* @author MJC
* @date 2019-11-21 18:57
* @description 订单详情实体类
*/
public class OrdersDetails {
private Integer id;
private String items_id;
private String items_num;
private Items items;
public Items getItems() {
return items;
}
public void setItems(Items items) {
this.items = items;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getItems_id() {
return items_id;
}
public void setItems_id(String items_id) {
this.items_id = items_id;
}
public String getItems_num() {
return items_num;
}
public void setItems_num(String items_num) {
this.items_num = items_num;
}
@Override
public String toString() {
return "OrdersDetails{" +
"id=" + id +
", items_id='" + items_id + '\'' +
", items_num='" + items_num + '\'' +
", items=" + items +
'}';
}
}
实体类4
package com.mybatis.model;
import javax.xml.soap.Text;
/**
* @author MJC
* @date 2019-11-21 19:55
* @description 商品实体类
*/
public class Items {
private Integer id;
private String name;
private Float price;
private String detail;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
@Override
public String toString() {
return "Items{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
", detail='" + detail + '\'' +
'}';
}
}
接口
/**
* 多对多
* @return
*/
List<User> findUserByOrdersAndItems();
映射文件
<resultMap id="findUserByOrdersAndItems_map" type="user">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
<collection property="orders" ofType="orders">
<id column="order_id" property="id"/>
<result column="number" property="number"/>
<result column="note" property="note"/>
<result column="createtime" property="createtime"/>
<collection property="ordersDetails" ofType="ordersDetails">
<id column="orderdetailID" property="id"/>
<result column="items_id" property="items_id"/>
<result column="items_num" property="items_num"/>
<association property="items" javaType="items">
<result column="name" property="name"/>
<result column="price" property="price"/>
<result column="detail" property="detail"/>
</association>
</collection>
</collection>
</resultMap>
<select id="findUserByOrdersAndItems" resultMap="findUserByOrdersAndItems_map">
SELECT
u.id,
u.username,
u.address,
o.id order_id,
o.number,
o.note,
o.createtime,
od.id orderdetailID,
od.items_id,
od.items_num,
it.name,
it.price,
it.detail
FROM
USER u,
orders o,
orderdetail od,
items it
WHERE
o.user_id = u.id
AND od.orders_id = o.id
AND it.id = od.items_id
</select>
测试
package com.mybatis.test;
import com.mybatis.mapper.OrdersMapper;
import com.mybatis.mapper.UserMapper;
import com.mybatis.model.Orders;
import com.mybatis.model.User;
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.InputStream;
import java.util.List;
/**
* 多对所
*/
public class Demo19 {
private static SqlSession sqlSession;
static {
// a)读取配置文件;
InputStream is = null;
try {
is = Resources.getResourceAsStream("SqlMapConfig.xml");
//b)通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userByOrdersAndItems = mapper.findUserByOrdersAndItems();
System.out.println("用户数据为:"+userByOrdersAndItems);
}
}