IDEA mybatis 用户-订单-订单详情 → 互查

注:该篇演示的是通过一方条件获得其余两方与之匹配的数据

一、sql

二、pom.xml

三、Pojo

1.TbUser.java

2.TbOrder.java

3.TbOrderinfo.java

四、Dao

1.TbUserDao.java

2.TbOrderDao.java

3.TbOrderinfoDao.java

五、Mapper

1.TbUserMapper.xml

2.TbOrderMapper.xml

3.TbOrderinfoMapper.xml

六、resources.properties

七、mybatisConfig.xml

八、Tests.java - 测试

九、结果视图


一、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();

    }
}

九、结果视图

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值