2018 IDEA mybatis 用户-订单-订单详情 → 互查
注:该篇演示的是通过一方条件获得其余两方与之匹配的数据
一、sql
/*
Navicat MySQL Data Transfer
Source Server : 127
Source Server Version : 50022
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50022
File Encoding : 65001
Date: 2018-10-12 21:28:25
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tb_order
-- ----------------------------
DROP TABLE IF EXISTS `tb_order`;
CREATE TABLE `tb_order` (
`order_id` varchar(50) NOT NULL COMMENT '订单ID',
`order_totalprice` varchar(50) default NULL COMMENT '订单总价',
`order_address` varchar(50) default NULL COMMENT '收货地址',
`user_id` int(11) default NULL COMMENT '用户ID',
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';
-- ----------------------------
-- Records of tb_order
-- ----------------------------
INSERT INTO `tb_order` VALUES ('VX20181012-01', '500.00', '湖南省长沙市岳麓区', '1');
INSERT INTO `tb_order` VALUES ('VX20181012-02', '600.00', '湖南省长沙市天心区', '1');
INSERT INTO `tb_order` VALUES ('VX20181012-03', '800.00', '湖南省长沙市芙蓉区', '1');
INSERT INTO `tb_order` VALUES ('VX20181012-04', '225.00', '湖南省长沙市雨花区', '3');
INSERT INTO `tb_order` VALUES ('VX20181012-05', '450.00', '湖南省长沙市开福区', '3');
-- ----------------------------
-- Table structure for tb_orderinfo
-- ----------------------------
DROP TABLE IF EXISTS `tb_orderinfo`;
CREATE TABLE `tb_orderinfo` (
`orderInfo_id` int(11) NOT NULL auto_increment COMMENT '订单详情',
`orderInfo_shopname` varchar(20) default NULL COMMENT '商品名称',
`orderInfo_num` int(11) default NULL COMMENT '商品数量',
`orderInfo_shoprice` double(20,0) default NULL COMMENT '商品单价',
`order_id` varchar(50) default NULL COMMENT '订单ID',
PRIMARY KEY (`orderInfo_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单详情表';
-- ----------------------------
-- Records of tb_orderinfo
-- ----------------------------
INSERT INTO `tb_orderinfo` VALUES ('1', '薯片', '100', '4', 'VX20181012-01');
INSERT INTO `tb_orderinfo` VALUES ('2', '苹果', '10', '5', 'VX20181012-01');
INSERT INTO `tb_orderinfo` VALUES ('3', '香橙', '10', '5', 'VX20181012-01');
INSERT INTO `tb_orderinfo` VALUES ('4', '苹果', '100', '5', 'VX20181012-02');
INSERT INTO `tb_orderinfo` VALUES ('5', '香橙', '20', '5', 'VX20181012-02');
INSERT INTO `tb_orderinfo` VALUES ('6', '核桃', '100', '8', 'VX20181012-03');
INSERT INTO `tb_orderinfo` VALUES ('7', '香橙', '5', '5', 'VX20181012-04');
INSERT INTO `tb_orderinfo` VALUES ('8', '苹果', '40', '5', 'VX20181012-04');
INSERT INTO `tb_orderinfo` VALUES ('9', '核桃', '50', '8', 'VX20181012-05');
INSERT INTO `tb_orderinfo` VALUES ('10', '苹果', '10', '5', 'VX20181012-05');
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`user_id` int(11) NOT NULL auto_increment COMMENT '用户ID',
`user_name` varchar(255) NOT NULL COMMENT '用户名称',
`user_upwd` varchar(255) default NULL COMMENT '用户密码',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', '柠泽', '123456');
INSERT INTO `tb_user` VALUES ('3', '柠萌', '123456');
二、pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--引入mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<!--引入mysql连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
</dependencies>
三、Pojo
1.TbUser.java
package cn.kaxlm6.mybatis.pojo;
import java.io.Serializable;
import java.util.List;
/**
* (TbUser)TableInfo(obj=table:tb_user, name=TbUser, comment=null, fullColumn=[ColumnInfo(obj=column:user_id, name=userId, comment=用户ID, type=java.lang.Integer, shortType=Integer, custom=false, ext={}), ColumnInfo(obj=column:user_name, name=userName, comment=用户名称, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:user_upwd, name=userUpwd, comment=用户密码, type=java.lang.String, shortType=String, custom=false, ext={})], pkColumn=[], otherColumn=[], savePackageName=cn.kaxlm6.mybatis, savePath=./src/main/java/cn/kaxlm6/mybatis, saveModelName=mybatisProject)
*
* @author xlm
* @since 2018-10-12 18:31:15
*/
public class TbUser implements Serializable {
private static final long serialVersionUID = 773064479460702874L;
/**
* 用户ID
*/
private Integer userId;
/**
* 用户名称
*/
private String userName;
/**
* 用户密码
*/
private String userUpwd;
private List<TbOrder> tbOrderList;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserUpwd() {
return userUpwd;
}
public void setUserUpwd(String userUpwd) {
this.userUpwd = userUpwd;
}
public List<TbOrder> getTbOrderList() {
return tbOrderList;
}
public void setTbOrderList(List<TbOrder> tbOrderList) {
this.tbOrderList = tbOrderList;
}
@Override
public String toString() {
return "TbUser{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userUpwd='" + userUpwd + '\'' +
'}';
}
}
2.TbOrder.java
package cn.kaxlm6.mybatis.pojo;
import java.io.Serializable;
import java.util.List;
/**
* (TbOrder)TableInfo(obj=table:tb_order, name=TbOrder, comment=null, fullColumn=[ColumnInfo(obj=column:order_id, name=orderId, comment=订单ID, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:order_totalprice, name=orderTotalprice, comment=订单总价, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:order_address, name=orderAddress, comment=收货地址, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:user_id, name=userId, comment=用户ID, type=java.lang.Integer, shortType=null, custom=false, ext={})], pkColumn=[ColumnInfo(obj=column:order_id, name=orderId, comment=订单ID, type=java.lang.String, shortType=String, custom=false, ext={})], otherColumn=[ColumnInfo(obj=column:order_totalprice, name=orderTotalprice, comment=订单总价, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:order_address, name=orderAddress, comment=收货地址, type=java.lang.String, shortType=String, custom=false, ext={}), ColumnInfo(obj=column:user_id, name=userId, comment=用户ID, type=java.lang.Integer, shortType=null, custom=false, ext={})], savePackageName=cn.kaxlm6.mybatis, savePath=./src/main/java/cn/kaxlm6/mybatis, saveModelName=mybatisProject)
*
* @author xlm
* @since 2018-10-12 18:31:15
*/
public class TbOrder implements Serializable {
private static final long serialVersionUID = -16223985121815681L;
/**
* 订单ID
*/
private String orderId;
/**
* 订单总价
*/
private String orderTotalprice;
/**
* 收货地址
*/
private String orderAddress;
/**
* 用户ID
*/
private Integer userId;
private List<TbUser> tbUserList;
private List<TbOrderinfo> tbOrderinfoList;
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getOrderTotalprice() {
return orderTotalprice;
}
public void setOrderTotalprice(String orderTotalprice) {
this.orderTotalprice = orderTotalprice;
}
public String getOrderAddress() {
return orderAddress;
}
public void setOrderAddress(String orderAddress) {
this.orderAddress = orderAddress;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public List<TbUser> getTbUserList() {
return tbUserList;
}
public void setTbUserList(List<TbUser> tbUserList) {
this.tbUserList = tbUserList;
}
public List<TbOrderinfo> getTbOrderinfoList() {
return tbOrderinfoList;
}
public void setTbOrderinfoList(List<TbOrderinfo> tbOrderinfoList) {
this.tbOrderinfoList = tbOrderinfoList;
}
@Override
public String toString() {
return "TbOrder{" +
"orderId='" + orderId + '\'' +
", orderTotalprice='" + orderTotalprice + '\'' +
", orderAddress='" + orderAddress + '\'' +
", userId=" + userId +
'}';
}
}
3.TbOrderinfo.java
package cn.kaxlm6.mybatis.pojo;
import java.io.Serializable;
import java.util.List;
/**
* (TbOrderinfo)TableInfo(obj=table:tb_orderinfo, name=TbOrderinfo, comment=null, fullColumn=[ColumnInfo(obj=column:orderInfo_id, name=orderinfoId, comment=订单详情, type=java.lang.Integer, shortType=Integer, custom=false, ext={}), ColumnInfo(obj=column:orderInfo_shopname, name=orderinfoShopname, comment=商品名称, type=java.lang.String, shortType=null, custom=false, ext={}), ColumnInfo(obj=column:orderInfo_num, name=orderinfoNum, comment=商品数量, type=java.lang.Integer, shortType=Integer, custom=false, ext={}), ColumnInfo(obj=column:orderInfo_shoprice, name=orderinfoShoprice, comment=商品单价, type=java.lang.Object, shortType=null, custom=false, ext={}), ColumnInfo(obj=column:order_id, name=orderId, comment=订单ID, type=java.lang.String, shortType=null, custom=false, ext={})], pkColumn=[ColumnInfo(obj=column:orderInfo_id, name=orderinfoId, comment=订单详情, type=java.lang.Integer, shortType=Integer, custom=false, ext={})], otherColumn=[ColumnInfo(obj=column:orderInfo_shopname, name=orderinfoShopname, comment=商品名称, type=java.lang.String, shortType=null, custom=false, ext={}), ColumnInfo(obj=column:orderInfo_num, name=orderinfoNum, comment=商品数量, type=java.lang.Integer, shortType=Integer, custom=false, ext={}), ColumnInfo(obj=column:orderInfo_shoprice, name=orderinfoShoprice, comment=商品单价, type=java.lang.Object, shortType=null, custom=false, ext={}), ColumnInfo(obj=column:order_id, name=orderId, comment=订单ID, type=java.lang.String, shortType=null, custom=false, ext={})], savePackageName=cn.kaxlm6.mybatis, savePath=./src/main/java/cn/kaxlm6/mybatis, saveModelName=mybatisProject)
*
* @author xlm
* @since 2018-10-12 20:27:15
*/
public class TbOrderinfo implements Serializable {
private static final long serialVersionUID = -29512783426681042L;
/**
* 订单详情
*/
private Integer orderinfoId;
/**
* 商品名称
*/
private String orderinfoShopname;
/**
* 商品数量
*/
private Integer orderinfoNum;
/**
* 商品单价
*/
private Object orderinfoShoprice;
/**
* 订单ID
*/
private String orderId;
private List<TbOrder> tbOrderList;
public Integer getOrderinfoId() {
return orderinfoId;
}
public void setOrderinfoId(Integer orderinfoId) {
this.orderinfoId = orderinfoId;
}
public String getOrderinfoShopname() {
return orderinfoShopname;
}
public void setOrderinfoShopname(String orderinfoShopname) {
this.orderinfoShopname = orderinfoShopname;
}
public Integer getOrderinfoNum() {
return orderinfoNum;
}
public void setOrderinfoNum(Integer orderinfoNum) {
this.orderinfoNum = orderinfoNum;
}
public Object getOrderinfoShoprice() {
return orderinfoShoprice;
}
public void setOrderinfoShoprice(Object orderinfoShoprice) {
this.orderinfoShoprice = orderinfoShoprice;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public List<TbOrder> getTbOrderList() {
return tbOrderList;
}
public void setTbOrderList(List<TbOrder> tbOrderList) {
this.tbOrderList = tbOrderList;
}
@Override
public String toString() {
return "TbOrderinfo{" +
"orderinfoId=" + orderinfoId +
", orderinfoShopname='" + orderinfoShopname + '\'' +
", orderinfoNum=" + orderinfoNum +
", orderinfoShoprice=" + orderinfoShoprice +
", orderId='" + orderId + '\'' +
'}';
}
}
四、Dao
1.TbUserDao.java
package cn.kaxlm6.mybatis.dao;
import cn.kaxlm6.mybatis.pojo.TbUser;
/**
* (TbUser)表数据库访问层
*
* @author xlm
* @since 2018-10-12 18:51:26
*/
public interface TbUserDao {
/**
* 通过ID查询单条数据
*
* @param userId 主键
* @return 实例对象
*/
TbUser sel(Integer userId);
/**
* 通过ID查询单条数据
*
* @param userId 主键
* @return 实例对象
*/
TbUser queryById(Integer userId);
}
2.TbOrderDao.java
package cn.kaxlm6.mybatis.dao;
import cn.kaxlm6.mybatis.pojo.TbOrder;
/**
* (TbOrder)表数据库访问层
*
* @author xlm
* @since 2018-10-12 18:31:15
*/
public interface TbOrderDao {
/**
* 通过ID查询单条数据
*
* @param userId 主键
* @return 实例对象
*/
TbOrder s1(String userId);
/**
* 通过ID查询单条数据
*
* @param orderId 主键
* @return 实例对象
*/
TbOrder sel(String orderId);
/**
* 通过ID查询单条数据
*
* @param orderId 主键
* @return 实例对象
*/
TbOrder queryById(String orderId);
}
3.TbOrderinfoDao.java
package cn.kaxlm6.mybatis.dao;
import cn.kaxlm6.mybatis.pojo.TbOrderinfo;
import java.util.List;
/**
* (TbOrderinfo)表数据库访问层
*
* @author xlm
* @since 2018-10-12 18:31:15
*/
public interface TbOrderinfoDao {
/**
* 通过ID查询单条数据
*
* @param orderId 主键
* @return 实例对象
*/
TbOrderinfo s2(String orderId);
/**
* 通过ID查询单条数据
*
* @param orderinfoShopname 名称
* @return 实例对象
*/
List<TbOrderinfo> sel(String orderinfoShopname);
/**
* 通过ID查询单条数据
*
* @param orderinfoId 主键
* @return 实例对象
*/
TbOrderinfo queryById(Integer orderinfoId);
}
五、Mapper
1.TbUserMapper.xml
<?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="cn.kaxlm6.mybatis.dao.TbUserDao">
<!-- class -->
<resultMap type="cn.kaxlm6.mybatis.pojo.TbUser" id="TbUserClass">
<result property="userId" column="user_id" jdbcType="INTEGER"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="userUpwd" column="user_upwd" jdbcType="VARCHAR"/>
</resultMap>
<resultMap type="cn.kaxlm6.mybatis.pojo.TbUser" id="TbUserMapper">
<result property="userId" column="user_id" jdbcType="INTEGER"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="userUpwd" column="user_upwd" jdbcType="VARCHAR"/>
<collection property="tbOrderList" column="user_id" ofType="cn.kaxlm6.mybatis.pojo.TbOrder" fetchType="lazy" select="cn.kaxlm6.mybatis.dao.TbOrderDao.s1" />
</resultMap>
<select id="sel" resultMap="TbUserMapper">
select
user_id, user_name, user_upwd
from test.tb_user
where user_id = #{userId}
</select>
<!--查询单个-->
<select id="queryById" resultMap="TbUserClass">
select
user_id, user_name, user_upwd
from test.tb_user
where user_id = #{userId}
</select>
</mapper>
2.TbOrderMapper.xml
<?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="cn.kaxlm6.mybatis.dao.TbOrderDao">
<!-- class -->
<resultMap type="cn.kaxlm6.mybatis.pojo.TbOrder" id="TbOrderClass">
<result property="orderId" column="order_id" jdbcType="VARCHAR"/>
<result property="orderTotalprice" column="order_totalprice" jdbcType="VARCHAR"/>
<result property="orderAddress" column="order_address" jdbcType="VARCHAR"/>
<result property="userId" column="user_id" jdbcType="INTEGER"/>
</resultMap>
<resultMap type="cn.kaxlm6.mybatis.pojo.TbOrder" id="TbOrderMapper">
<result property="orderId" column="order_id" jdbcType="VARCHAR"/>
<result property="orderTotalprice" column="order_totalprice" jdbcType="VARCHAR"/>
<result property="orderAddress" column="order_address" jdbcType="VARCHAR"/>
<result property="userId" column="user_id" jdbcType="INTEGER"/>
<collection property="tbUserList" column="user_id" ofType="cn.kaxlm6.mybatis.pojo.TbUser" fetchType="lazy" select="cn.kaxlm6.mybatis.dao.TbUserDao.queryById" />
<collection property="tbOrderinfoList" column="order_id" ofType="cn.kaxlm6.mybatis.pojo.TbOrderinfo" fetchType="lazy" select="cn.kaxlm6.mybatis.dao.TbOrderinfoDao.s2" />
</resultMap>
<select id="s1" resultMap="TbOrderMapper">
select
order_id, order_totalprice, order_address, user_id
from test.tb_order
where user_id = #{userId}
</select>
<select id="sel" resultMap="TbOrderMapper">
select
order_id, order_totalprice, order_address, user_id
from test.tb_order
where order_id = #{orderId}
</select>
<!--查询单个-->
<select id="queryById" resultMap="TbOrderClass">
select
order_id, order_totalprice, order_address, user_id
from test.tb_order
where order_id = #{orderId}
</select>
</mapper>
3.TbOrderinfoMapper.xml
<?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="cn.kaxlm6.mybatis.dao.TbOrderinfoDao">
<!-- class -->
<resultMap type="cn.kaxlm6.mybatis.pojo.TbOrderinfo" id="TbOrderinfoClass">
<result property="orderinfoId" column="orderInfo_id" jdbcType="INTEGER"/>
<result property="orderinfoShopname" column="orderInfo_shopname" jdbcType="VARCHAR"/>
<result property="orderinfoNum" column="orderInfo_num" jdbcType="INTEGER"/>
<result property="orderinfoShoprice" column="orderInfo_shoprice" jdbcType="OTHER"/>
<result property="orderId" column="order_id" jdbcType="VARCHAR"/>
</resultMap>
<resultMap type="cn.kaxlm6.mybatis.pojo.TbOrderinfo" id="TbOrderinfoMapper">
<result property="orderinfoId" column="orderInfo_id" jdbcType="INTEGER"/>
<result property="orderinfoShopname" column="orderInfo_shopname" jdbcType="VARCHAR"/>
<result property="orderinfoNum" column="orderInfo_num" jdbcType="INTEGER"/>
<result property="orderinfoShoprice" column="orderInfo_shoprice" jdbcType="OTHER"/>
<result property="orderId" column="order_id" jdbcType="VARCHAR"/>
<collection property="tbOrderList" column="order_id" ofType="cn.kaxlm6.mybatis.pojo.TbOrder" fetchType="lazy" select="cn.kaxlm6.mybatis.dao.TbOrderDao.sel" />
</resultMap>
<select id="sel" resultMap="TbOrderinfoMapper">
select
orderInfo_id, orderInfo_shopname, orderInfo_num, orderInfo_shoprice, order_id
from test.tb_orderinfo
where orderInfo_shopname = #{orderinfoShopname}
</select>
<select id="s2" resultMap="TbOrderinfoClass">
select
orderInfo_id, orderInfo_shopname, orderInfo_num, orderInfo_shoprice, order_id
from test.tb_orderinfo
where order_id = #{orderId}
</select>
<!--查询单个-->
<select id="queryById" resultMap="TbOrderinfoClass">
select
orderInfo_id, orderInfo_shopname, orderInfo_num, orderInfo_shoprice, order_id
from test.tb_orderinfo
where orderInfo_id = #{orderinfoId}
</select>
</mapper>
六、resources.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc.user=root
jdbc.password=200206
七、mybatisConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--0. 引入外部资源文件 -->
<properties resource="resources.properties" />
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!--1. 配置数据库环境,默认使用development数据库构建环境-->
<environments default="development">
<!--配置环境变量-->
<environment id="development">
<!--配置事务管理器类型
type="JDBC" 指直接简单使用了JDBC的提交和滚回设置
type="MANAGED" 指让容器实现对事务的管理
-->
<transactionManager type="JDBC"/>
<!--配置数据源-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--2. 加载映射器:实体类对象/关系映射文件-->
<mappers>
<!-- 注:整合后才能用*加载多个 -->
<mapper resource="cn/kaxlm6/mybatis/mapper/TbUserMapper.xml"/>
<mapper resource="cn/kaxlm6/mybatis/mapper/TbOrderMapper.xml"/>
<mapper resource="cn/kaxlm6/mybatis/mapper/TbOrderinfoMapper.xml"/>
</mappers>
</configuration>
八、Tests.java - 测试
package cn.kaxlm6.mybatis.test;
import cn.kaxlm6.mybatis.dao.TbOrderDao;
import cn.kaxlm6.mybatis.dao.TbOrderinfoDao;
import cn.kaxlm6.mybatis.dao.TbUserDao;
import cn.kaxlm6.mybatis.pojo.TbOrder;
import cn.kaxlm6.mybatis.pojo.TbOrderinfo;
import cn.kaxlm6.mybatis.pojo.TbUser;
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.InputStream;
import java.util.List;
/**
* Created by IntelliJ IDEA.
*
* @author xlm
* description:
* path: mybatisProject-cn.kaxlm6.mybatis.test-Tests
* date: 2018/10/3 18:51
* version: 02.06
* To change this template use File | Settings | File Templates.
*/
public class Tests {
public static void main(String[] args) throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
System.out.println();
// 1.根据用户ID获得用户订单及该订单详情
System.out.println("1.根据用户ID获得用户订单及该订单详情\n");
TbUserDao mapper = sqlSession.getMapper(TbUserDao.class);
Integer userId = 1;
TbUser tbUser = mapper.sel(userId);
System.out.println("\"" + tbUser.getUserName() + "\" 用户的订单如下\n");
for (TbOrder tb:tbUser.getTbOrderList()){
System.out.println(tb);
System.out.println("\t" + tb.getOrderId() + "订单详情如下:");
for (TbOrderinfo ti:tb.getTbOrderinfoList() ){
System.out.println("\t\t" + ti);
}
}
System.out.println("\n");
// 2.根据订单号获得用户信息及订单信息
System.out.println("2.根据订单号获得用户信息及订单信息\n");
TbOrderDao mapper1 = sqlSession.getMapper(TbOrderDao.class);
String orderNo = "VX20181012-01";
TbOrder tbOrder = mapper1.sel(orderNo);
System.out.println(orderNo + "订单的用户为:" + tbOrder.getTbUserList().get(0).getUserName());
System.out.println(tbOrder.getOrderId() + "订单详情如下:");
for (TbOrderinfo ti:tbOrder.getTbOrderinfoList() ){
System.out.println("\t" + ti);
}
System.out.println("\n");
// 3.根据商品名称获得已购买该商品的订单及用户
System.out.println("3.根据商品名称获得已购买该商品的订单及用户\n");
TbOrderinfoDao mapper2 = sqlSession.getMapper(TbOrderinfoDao.class);
String orderinfoShopname = "核桃";
List<TbOrderinfo> tbOrderinfoList = mapper2.sel(orderinfoShopname);
System.out.println("购买名为 \"" + orderinfoShopname + "\" 商品的订单如下:\n");
for (TbOrderinfo tbOrderinfo:tbOrderinfoList ){
for (TbOrder to:tbOrderinfo.getTbOrderList() ){
System.out.println("\t用户为:" + to.getTbUserList().get(0).getUserName());
System.out.println("\t订单为:" + to);
System.out.println();
}
}
sqlSession.commit();
sqlSession.close();
}
}