根据订单id查询该订单和商品信息

number:订单编号

包package com.itcast.mapperxml;

package com.itcast.mapperxml;
import org.apache.ibatis.annotations.Param;
import com.itcast.pojo.Person;
public interface PersonMapper {
// 一对一:根据id查询用户信息和身份证号码
public Person queryPersonWithIdCardById(@Param(“id”) Integer id);
}

package com.itcast.pojo;
package com.itcast.pojo;

public class Person {
private Integer id;
private String name;
private Integer age;
private String sex;
private IdCard idCard;
…Set与Get方法,构造方法
}

package com.itcast.pojo;

import java.util.List;

/*
*订单表
*

  • */
    public class Orders {

    private Integer id;//订单id
    private String number;//订单编号
    //声明product
    private List productList;

    public List getProductList() {
    return productList;
    }
    public void setProductList(List productList) {
    this.productList = productList;
    }

    public Orders(Integer id, String number, List productList) {
    super();
    this.id = id;
    this.number = number;
    this.productList = productList;
    }
    public Orders() {
    super();
    // TODO Auto-generated constructor stub
    }
    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getNumber() {
    return number;
    }
    public void setNumber(String number) {
    this.number = number;
    }
    @Override
    public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append(“Orders [id=”);
    builder.append(id);
    builder.append(", number=");
    builder.append(number);
    builder.append(", productList=");
    builder.append(productList);
    builder.append("]");
    return builder.toString();
    }
    }

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<resultMap type="Orders" id="ordersWithProductMap"
	autoMapping="true">
	<!-- 对应sql表中的id -->
	<id column="id" property="id" />
	<!-- colection:多对多映射 -->
	<collection property="productList" ofType="Product"	autoMapping="true">
		<id column="pid" property="id" />
	</collection>

</resultMap>
<select id="queryOrdersWithProductById" resultMap="ordersWithProductMap">

	SELECT
	a.*,
	b.id AS pid,
	b.name,
	b.price
	FROM
	tb_orders a,
	tb_product b,
	tb_ordersitem c
	WHERE
	c.orders_id=a.id
	AND
	c.product_id=b.id
	AND
	a.id="3"

</select>

MyBatis核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>

定义测试类
package com.itcast.test;

import java.io.InputStream;

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.Before;
import org.junit.Test;

import com.itcast.mapperxml.OrdersMapper;
import com.itcast.pojo.Orders;

public class OrdersMapperTest {
private OrdersMapper ordersMapper;

@Before
public void setUp() throws Exception {
	String resource = "MyBatis.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
			.build(inputStream);
	SqlSession sqlSession = sqlSessionFactory.openSession(true);
	// 实例化UserMapper
	this.ordersMapper = sqlSession.getMapper(OrdersMapper.class);
}

//根据订单id查询该订单和商品信息
@Test
public void testqueryOrdersWithProductById() {
Orders orders=this.ordersMapper.queryOrdersWithProductById(3);
System.out.println(orders);
}
}

结果展示
在这里插入图片描述
参考相关的数据库
#创建一个名称为tb_user
CREATE TABLE tb_user(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(32),
address VARCHAR(256)
);

插入条3数据

INSERT INTO tb_user VALUES(‘1’,‘詹姆斯’,‘克利夫兰’);
INSERT INTO tb_user VALUES(‘2’,‘科比’,‘洛杉矶’);
INSERT INTO tb_user VALUES(‘3’,‘保罗’,‘洛杉矶’);
CREATE TABLE tb_idcard(
id INT PRIMARY KEY AUTO_INCREMENT,
CODE VARCHAR(18)
);

插入条2数据

INSERT INTO tb_idcard(CODE) VALUES(‘123453188908572121’);
INSERT INTO tb_idcard(CODE) VALUES(‘589453188908572121’);

CREATE TABLE tb_person(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32),
age INT,
sex VARCHAR(8),
card_id INT UNIQUE,
FOREIGN KEY(card_id) REFERENCES tb_idcard(id)

);

插入条2数据

INSERT INTO tb_person(NAME,age,sex,card_id) VALUES(‘Rose’,29,‘女’,1);

INSERT INTO tb_person(NAME,age,sex,card_id) VALUES(‘Tom’,27,‘男’,2);

#创建一个名称为tb_product
CREATE TABLE tb_product(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32),
price DOUBLE
);

#创建一个名称为tb_orders
– number订单编号
CREATE TABLE tb_orders(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
number VARCHAR(32),
user_id INT(32) NOT NULL,
FOREIGN KEY(user_id) REFERENCES tb_user(id)
);

插入条3数据

INSERT INTO tb_orders VALUES(‘1’,‘1000011’,‘1’);
INSERT INTO tb_orders VALUES(‘2’,‘1000012’,‘1’);
INSERT INTO tb_orders VALUES(‘3’,‘1000013’,‘3’);

插入条3数据

INSERT INTO tb_product VALUES(‘1’,‘Java 基础入门’,‘44.5’);
INSERT INTO tb_product VALUES(‘2’,‘Java Web 程序入门开发’,‘38.5’);
INSERT INTO tb_product VALUES(‘3’,‘SSM框架整合实战’,‘50’);
INSERT INTO tb_product VALUES(‘4’,‘MySQL’,‘30.0’);
INSERT INTO tb_product VALUES(‘5’,‘Eclispe’,‘25.0’);

#创建一个名称为tb_ordersitem

CREATE TABLE tb_ordersitem(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
orders_id INT(32),
product_id INT(32),
FOREIGN KEY(orders_id) REFERENCES tb_orders(id)
FOREIGN KEY(product_id) REFERENCES tb_product(id)
);

插入条3数据

INSERT INTO tb_ordersitem VALUES(‘1’,‘1’,‘1’);
INSERT INTO tb_ordersitem VALUES(‘2’,‘2’,‘2’);
INSERT INTO tb_ordersitem VALUES(‘3’,‘3’,‘3’);
INSERT INTO tb_ordersitem VALUES(‘4’,‘3’,‘1’);
INSERT INTO tb_ordersitem VALUES(‘5’,‘3’,‘5’);

猜你喜欢

转载自blog.csdn.net/weixin_44174536/article/details/90201937