maven项目中多表查询时controller获取以对象作为属性的返回值

本文介绍了如何使用MyBatis进行多表查询,并将查询结果映射到复杂的实体类结构中,例如订单实体类包含商品实体类属性。通过在OrdersMapper的XML配置文件中设置resultMap,利用association标签指定关联查询,再由Controller获取并循环输出查询结果。示例代码展示了从OrdersService到OrdersMapper的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多表查询涉及多个实体类的返回值如何Controller获取

实体类

订单表--商品表
public class Orders {

    private Integer orderId;
    private Integer userId;
    private Integer goodsId;
    private Integer payId;
    private Integer gsId;
    private Integer orderNum;
    private Integer orderMoney;
    private String orderTime;
    private String distribution;

    private User user;
    private Goods goods;
    private Pay pay;
    private GoodsState goodsState;
    


public class Goods {

    private Integer goodsId;
    private String goodsName;
    private String goodsImg;
    private Float goodsPrice;
    private Integer goodsResidue;
    private String goodsType;
    private Integer goodsSales;
    private Integer goodsSort;
    private Integer goodsState;
    private String goodsPoint;
    private Integer goodsSpecifications;
    private Float goodsWeight;
    private String goodsInfo;
    private String createTime;

在订单实体类中以Goods goods 作为对象属性,可以用来接收链表查询时的返回值

Controller

public class OrdersController {

    @Autowired
    private GoodsService goodsService;
    @Autowired
    private OrdersService ordersService;
    @Autowired
    private PayService payService;

    @RequestMapping("orders")
    public String showOrders(){

        //查询订单
        List<Orders> ordersList = ordersService.selectAllOrders();
        //System.out.println(ordersList.get(0).getGoods().getGoodsImg());
        for (Orders orders:ordersList){
            System.out.println(orders.getGoods().getGoodsImg());//循环输出已经获取的内容
            //System.out.println(ordersList.get(i));
        }

OrdersService

public interface OrdersService {
    List<Orders> selectAllOrders();
}

OrdersServiceImpl

@Service
public class OrdersServiceImpl implements OrdersService {
    @Autowired
    private OrdersMapper ordersMapper;
    @Override
    public List<Orders> selectAllOrders() {
        return ordersMapper.selectAllOrders();
    }
}

OrdersMapper

@Repository
public interface OrdersMapper {
    List<Orders> selectAllOrders();
}

.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.nnxy.fireflymall.mapper.OrdersMapper">

    <resultMap id="orderss" type="cn.nnxy.fireflymall.domain.Orders">
        <id property="orderId" column="order_id"/>
        <result property="goodsId" column="goods_id"/>
        <association property="goods" column="goods_id" javaType="cn.nnxy.fireflymall.domain.Goods"
                     select="cn.nnxy.fireflymall.mapper.GoodsMapper.selectGoodsById">
这里select找到Goods获取数据库的方法(在下面)将查询的结果goods_id作为条件用来重新查询
        </association>

    </resultMap>
    <select id="selectAllOrders" resultMap="orderss">
                select goods.goods_id,goods.goods_img
                from orders
                inner join goods on orders.goods_id=goods.goods_id
    </select>
</mapper>

GoodsMapper

接收.xml传来的goods_id作为查询条件
List<Goods> selectFormGoods(Integer goodsId);

最后就是controller获取到了想要的结果。
如果对你有帮助,记得给个关注点个赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值