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. Django常用知识整理

    Django 的认识,面试题 1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全 ...

  2. ZooKeeper 入门看这篇就够了

    什么是 ZooKeeper? ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务.ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原 ...

  3. 物联网架构成长之路(45)-容器管理平台Rancher

    0.前言 按照上一篇博客,我已经把需要下载的rancher docker 依赖镜像下载上传到Harbor了. 1. 安装 执行如下,实现一键安装 docker run -d --restart=unl ...

  4. ubutnu 挂载磁盘

    1. 查看已挂载的磁盘 df -h 2. 查看可挂载的磁盘 fdisk -l 3. 创建挂载点 mkdir /media/HDD 注意: /media/HDD 必须为空文件夹 4. 挂载 sudo m ...

  5. @Resource和@Autowire用谁?

    我选了@Resource 1.当注入的属性是接口 1.1在接口只有一个实现类的时候,@Resource和@Autowire 在功能上是没有区别的 1.2如果接口有多个实现类,在写法上,@Autowir ...

  6. 5个问题带你了解export和import的使用以及export和export defalut 的区别

    问题一:export和import是什么? ES6新增模块(module)语法 问题二:export和import的作用是什么? export:规定模块的对外接口,相当于导出功能  import:用于 ...

  7. Django中创建对象的组合

    一.问题背景 在Django中一个表可能是多个表共同合成的对象,比如商品表,用户表,用户购买商品的表,就是这种情况,在这中情况下面我们要添加一条记录到用户购买的商品表中我们该如何才做,此时我们需要获取 ...

  8. Disruptor系列(一)— disruptor介绍

    本文翻译自Disruptor在github上的wiki文章Introduction,原文可以看这里. 一.前言 作为程序猿大多数都有对技术的执着,想在这个方面有所提升.对于优秀的事物保持积极学习的心态 ...

  9. 2019.10 搜索引擎最新排名,Elasticsearch遥遥领先

    大数据的搜索平台已经成为了众多企业的标配,Elasticsearch.Splunk(商业上市公司).Solr(Apache开源项目)是其中最为优秀和流行的选择.在2019.10 最新搜索引擎排名中,E ...

  10. Python-绘制3D柱形图

    Python-绘制3D柱形图 本文主要讲解如何使用python绘制三维的柱形图,可以得到图1所示的效果. 图1 源代码如下: import numpy as np import matplotlib. ...