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());
}
MyBatis Plus 将查询结果封装到指定实体的更多相关文章
- 用mybatis将SQL查询语句”select * from user”的封装为配置文件
用mybatis将SQL查询语句”select * from user”的封装为配置文件 定义一个xml映射文件,文件名见名知意.如user-mapper.xml,文件内容如下: <?xml v ...
- Mybatis之关联查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- mybatis 联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- Mybatis按SQL查询字段的顺序返回查询结果
在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...
- 【转载】Mybatis多参数查询映射
转载地址:http://www.07net01.com/zhishi/402787.html 最近在做一个Mybatis的项目,由于是接触不久,虽然看了一下资料,但在实际开发中还是暴 露了很多问题,其 ...
- Mybatis包分页查询java公共类
Mybatis包分页查询java公共类 分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...
- mybatis一对一嵌套查询
要求:查询一个员工的时候,把他对应的部门也查询出来 实现(其他配置这里不作说明,框架基于spring_springMVC_mybatis_oracle): 如有不对或不适的地方,请多多指教. 1.新建 ...
- MyBatis多对多查询
-------------------siwuxie095 MyBatis 多对多查询 以订单和商品为例,即 一个订单可 ...
- MyBatis之自查询,使用 递归实现 N级联动
A:首先先看下一个简单的面试题 斐波那契数列 计算数组{1,1,2,3,5,8.......} 第30位值 规律:1 1 从第三项开始,每一项都是前两项之和 有两种实现方式 第一种方式: public ...
随机推荐
- Angular 4.x NgClass ngStyle 指令用法
<some-element [ngClass]="'first second'">...</some-element> <some-element [ ...
- Django Form 内置字段
常用字段: Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始值 ...
- Linux学习笔记-第11天 特殊的RAID与LVM
没搞清楚madam是什么意思, 这点是个疑问,其实发现书上有挺多没讲到的地方,比如LVM是不支持有些分区格式的.看来课后还是要做好细化工作.
- 探索clickout指令实现
实现一个可复用的点击区域之外方法 随着3大框架的风靡,我们从以前的layer等UI库迁移到了更加强大的UI库,比如vue的好伙伴element,组件库的作用是封装一些常用的功能,将HTML.CSS.J ...
- Luogu P5363 [SDOI2019]移动金币
话说这题放在智推里好久了的说,再不写掉对不起自己233 首先你要知道一个叫做阶梯Nim的东西,具体的可以看这篇博客 那么我们发现这和这道题的关系就很明显了,我们把两个金币之间的距离看作阶梯Nim的每一 ...
- (三十)golang--面向对象
首先我们要明确: golang并不是纯粹的面向对象的编程语言: golang没有类class,使用struct代替: golang面向对象编程非常简洁,去掉了传统的继承.重载.构造函数和析构函数.隐藏 ...
- HTML连载40-盒子宽度和高度的练习、box-sizing属性
一.判断方法 1.判断是否元素宽高为200的盒子 只需要看:边框+内边距+内容宽度/内容高度的值是否等于200 2.判断是否内容宽高为100的盒子 只需要看:width和heght的值是否等于100 ...
- 大话设计模式Python实现-工厂方法模式
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类. #!/usr/bin/env python ...
- 关于全局异常(@ControllerAdvice)的学习与思考
一声梧叶一声秋,一点芭蕉一点愁,三更归梦三更后.____徐再思<水仙子·夜雨> 今天的主题是全局异常的构建,处理,以及一些小细节: 至于全局异常的代码构建以及一些常用的异常处理类可以看这篇 ...
- vuex源码分析(二) state及strict属性 详解
state也就是vuex里的值,也即是整个vuex的状态,而strict和state的设置有关,如果设置strict为true,那么不能直接修改state里的值,只能通过mutation来设置 例1: ...