• MyBatis Plus 将查询结果封装到指定实体


    MyBatis Plus 将查询结果封装到指定实体

    思路

    自定义方法,使用Wrapper,自定义映射结果集

    Mapper接口

    package com.mozq.boot.mpsand01.dao;
    
    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.baomidou.mybatisplus.core.toolkit.Constants;
    import com.mozq.boot.mpsand01.pojo.OrderInfo;
    import com.mozq.boot.mpsand01.vo.OrderVO;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    
    @Mapper
    public interface OrderInfoDao extends BaseMapper<OrderInfo> {
        @Select("select * from order_info ${ew.customSqlSegment}")
        /* 只指定2个,其他列能自动匹配的,也会被映射。
        @Results({
                @Result(id = true, column = "ORDER_ID", property = "orderId", jdbcType = JdbcType.VARCHAR),
                @Result(column = "USER_ID", property = "userId", jdbcType = JdbcType.INTEGER)
        })
        */
        List<OrderVO> findByCondition(@Param(Constants.WRAPPER)Wrapper wrapper);
    
        List<OrderVO> selectOrderVOList(@Param(Constants.WRAPPER)Wrapper wrapper);
    }
    

    Mapper.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="com.mozq.boot.mpsand01.dao.OrderInfoDao">
    
        <resultMap id="BaseResultMapVO" type="com.mozq.boot.mpsand01.vo.OrderVO">
            <id column="ORDER_ID" property="orderId" jdbcType="VARCHAR" />
            <result column="USER_ID" property="userId" jdbcType="INTEGER" />
            <result column="COMPANY_ID" property="companyId" jdbcType="INTEGER" />
            <result column="CUSTOMER_ID" property="customerId" jdbcType="INTEGER" />
            <result column="CUSTOMER_NAME" property="customerName" jdbcType="VARCHAR" />
            <result column="MOBILE_PHONE" property="mobilePhone" jdbcType="VARCHAR" />
            <result column="ACCOUNT_ID" property="accountId" jdbcType="VARCHAR" />
            <result column="PRODUCT_ID" property="productId" jdbcType="INTEGER" />
            <result column="PRODUCT_NAME" property="productName" jdbcType="VARCHAR" />
            <result column="ORDER_TYPE" property="orderType" jdbcType="INTEGER" />
            <result column="QUANTITY" property="quantity" jdbcType="DECIMAL" />
            <result column="LICENSE_PLATE_NUMBER" property="licensePlateNumber" jdbcType="VARCHAR" />
            <result column="PRICE" property="price" jdbcType="DECIMAL" />
            <result column="TOTAL_MONEY" property="totalMoney" jdbcType="DECIMAL" />
            <result column="PAY_QUANTITY" property="payQuantity" jdbcType="DECIMAL" />
            <result column="PAY_MONEY" property="payMoney" jdbcType="DECIMAL" />
            <result column="THE_WEIGHT" property="theWeight" jdbcType="INTEGER" />
            <result column="DELIVERY_ADDRESS" property="deliveryAddress" jdbcType="VARCHAR" />
            <result column="RECEIVE_ADDRESS" property="receiveAddress" jdbcType="VARCHAR" />
            <result column="ORDER_STATUS" property="orderStatus" jdbcType="INTEGER" />
            <result column="REMARK" property="remark" jdbcType="VARCHAR" />
            <result column="PICKUP_TIME" property="pickupTime" jdbcType="TIMESTAMP" />
            <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" />
            <result column="UPDATE_TIME" property="updateTime" jdbcType="TIMESTAMP" />
        </resultMap>
    
        <sql id="Base_Column_List">
            ORDER_ID,
            USER_ID,
            COMPANY_ID,
            CUSTOMER_ID,
            CUSTOMER_NAME,
            MOBILE_PHONE,
            ACCOUNT_ID,
            PRODUCT_ID,
            PRODUCT_NAME,
            ORDER_TYPE,
            QUANTITY,
            LICENSE_PLATE_NUMBER,
            PRICE,
            TOTAL_MONEY,
            PAY_QUANTITY,
            PAY_MONEY,
            THE_WEIGHT,
            DELIVERY_ADDRESS,
            RECEIVE_ADDRESS,
            ORDER_STATUS,
            REMARK,
            PICKUP_TIME,
            CREATE_TIME,
            UPDATE_TIME
        </sql>
    
        <select id="selectOrderVOList" resultMap="BaseResultMapVO">
            select <include refid="Base_Column_List"></include>
            from order_info
            ${ew.customSqlSegment}
        </select>
    
    </mapper>
    

    测试类

    @Test
    public void selectOrderVOList(){
        List<OrderVO> orderVOList = orderInfoDao.selectOrderVOList(
            Wrappers.<OrderInfo>lambdaQuery()
            .eq(OrderInfo::getUserId, 123456)
            .eq(OrderInfo::getCompanyId, 1)
        );
        System.out.println(orderVOList.size());
        List<OrderVO> byCondition = orderInfoDao.findByCondition(
            Wrappers.<OrderInfo>lambdaQuery()
            .eq(OrderInfo::getUserId, 123456)
            .eq(OrderInfo::getCompanyId, 1)
        );
        System.out.println(byCondition.size());
        List<OrderInfo> orderInfoList = orderInfoDao.selectList(
            Wrappers.<OrderInfo>lambdaQuery()
            .eq(OrderInfo::getUserId, 123456)
            .eq(OrderInfo::getCompanyId, 1)
        );
        System.out.println(orderInfoList.size());
    }
    
  • 相关阅读:
    软件测试相关面试
    GET和POST两种基本请求方法的区别
    Fiddler的安装与使用
    idea与eclipse项目相互导入的过程
    Selenium 学习笔记
    面试相关的案例
    idea编译启动报错
    window安装redis无法启动报错
    【001】接口测试-常用工具介绍和使用
    pyinstaller 打包exe相关
  • 原文地址:https://www.cnblogs.com/mozq/p/11755375.html
Copyright © 2020-2023  润新知