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());
}

MyBatis Plus 将查询结果封装到指定实体的更多相关文章

  1. 用mybatis将SQL查询语句”select * from user”的封装为配置文件

    用mybatis将SQL查询语句”select * from user”的封装为配置文件 定义一个xml映射文件,文件名见名知意.如user-mapper.xml,文件内容如下: <?xml v ...

  2. Mybatis之关联查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  3. mybatis 联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  4. Mybatis按SQL查询字段的顺序返回查询结果

    在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...

  5. 【转载】Mybatis多参数查询映射

    转载地址:http://www.07net01.com/zhishi/402787.html 最近在做一个Mybatis的项目,由于是接触不久,虽然看了一下资料,但在实际开发中还是暴 露了很多问题,其 ...

  6. Mybatis包分页查询java公共类

    Mybatis包分页查询java公共类   分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...

  7. mybatis一对一嵌套查询

    要求:查询一个员工的时候,把他对应的部门也查询出来 实现(其他配置这里不作说明,框架基于spring_springMVC_mybatis_oracle): 如有不对或不适的地方,请多多指教. 1.新建 ...

  8. MyBatis多对多查询

    -------------------siwuxie095                                 MyBatis 多对多查询         以订单和商品为例,即 一个订单可 ...

  9. MyBatis之自查询,使用 递归实现 N级联动

    A:首先先看下一个简单的面试题 斐波那契数列 计算数组{1,1,2,3,5,8.......} 第30位值 规律:1 1 从第三项开始,每一项都是前两项之和 有两种实现方式 第一种方式: public ...

随机推荐

  1. QFile 打开文件,不用先判断文件名是否为空,做这多余的工作

    void test_file() { QFile file(""); if (!file.open(QIODevice::WriteOnly)){ qDebug()<< ...

  2. MMM的又一周计划[2019 7.1→2019.7.7]

    发现今天是7.1然后又是星期一 来一发吧 本周目标: 1.二分图最佳匹配 2.网络流 3.HH的项链 4.洛谷rk前1000(目前1.1k) (upd:469) 5.AC260(35题,上周A了34, ...

  3. 记录下github 与 gitee 同时使用

    参考 Gitee(码云).Github同时配置ssh key 中间有一步,创建config文件,然后测试就过不去了. 报错:Bad owner or permissions on C:\\Users\ ...

  4. 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

    virtualenv和Flask的安装前面已经介绍过了,这里主要讲如何在venv中安装MySQL 安装MySQLdb 下载MySQL-python-1.2.3.win32-py2.7.exe并安装. ...

  5. vue v-html 富文本解析 空格,换行,图片大小问题

    1.保留空格,换行属性 //保留换行空格问题 white-space: pre-wrap; 2.超出部分,强制换行,一般用于数字 //富文本换行 word-wrap: break-word; tabl ...

  6. perf性能调优

    工具准备 ubuntu:sudo apt-get install perf 嵌入式平台:下载源码编译 注意:编译过程中会有Auto-detectiing system feature的依赖库打印,注意 ...

  7. Docker 下开发安装hyperf

    Docker 下开发hyperf # 下载并运行 hyperf/hyperf 镜像,并将镜像内的项目目录绑定到宿主机的 /tmp/skeleton 目录 docker run -v /tmp/skel ...

  8. learning rate warmup实现

    def noam_scheme(global_step, num_warmup_steps, num_train_steps, init_lr, warmup=True): ""& ...

  9. hive on spark 释放session资源

    背景 启动hive时,可以看到2.0以后的版本,将要弃用mr引擎,官方建议使用spark,tez等引擎. spark同时支持批式流式处理,可以减少学习成本.所以选用了spark作为执行引擎. hive ...

  10. spring的@ControllerAdvice注解

    @ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理. 对于@ControllerAdvic ...