关于Mybatis的mybatisCodeHelper能查询到数据,RestfulTool获取数据为空的问题

需求:通过车辆表的车牌号、车架号,查询车辆保养表中的车辆保养记录

 一、数据库

 车辆保养表

车辆表

 二、entity类

车辆类

package com.panda.crs.entity;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.qf.crs.vo.VehicleRepairList;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

@Data
public class Vehicle {
    /**
     *
     */
    private Integer id;

    /**
     * 车牌号
     */
    private String vehicleNumber;

    /**
     * 车型id
     */
    private Integer vehicleModelId;

    /**
     * 车架号
     */

    private String frameNumber;

    /**
     * 电机号
     */
    private String motorNumber;

    /**
     * 上牌日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd mm:hh:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date licensingDate;

    /**
     * 车辆状态 0闲置 1租赁
     */
    private Integer vehicleStatus;

    /**
     * 当前里程数
     */
    private Integer vehicleMileage;

    /**
     * 备注
     */
    private String vehicleDes;

    /**
     * 0删除 1未删除
     */
    private Integer isDelete;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd mm:hh:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createDate;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd mm:hh:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateDate;

    /**
     *   车型信息
     */
    private VehicleModel vehicleModel;
    /**
     *   车辆保养信息
     */
    private List<VehicleMaintain> VehicleMaintains;


}

车辆保养信息类

package com.panda.crs.entity;


import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;


@Data
@Builder
public class VehicleMaintain {
     /**
     *
     */
    private Integer id;

    /**
     * 车辆id
     */
    private Integer vehicleId;

    /**
     * 保养级别
     * 1级别
     * 2级别
     * 3级别
     */
    private Integer maintenanceLevel;

    /**
     * 保养周期(里程数)
     */
    private Integer maintenanceCycleMileage;

    /**
     * 保养周期(时间)按月
     */
    private Integer maintenanceCycleMonth;

    /**
     * 保养费用
     */
    private Double maintenanceCost;

    /**
     * 保养日期(最近一次)
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date maintenanceDate;

    /**
     * 保养状态 0未保养 1已保养 2保养中
     */
    private Integer maintenanceStatus;

    /**
     * 0删除 1未删除
     */
    private Integer isDelete;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createDate;

    /*
     *  关系模型
     *  private Vehicle vehicle;
     */

}

三、mapper

 

四、service层

 

 五、Controller层

六、Mapper.xml

<!--车辆保养记录查询结果集映射-->
    <resultMap id="BaseResultMaintains" type="Vehicle">
        <id property="id" column="vid"/>
        <collection property="vehicleMaintains" resultMap="BaseResultMaintain"/>
    </resultMap>

    <resultMap id="BaseResultMaintain" type="VehicleMaintain">
        <result property="maintenanceDate" column="maintenance_date"/>
        <result property="maintenanceLevel" column="maintenance_level"/>
        <result property="maintenanceCost" column="maintenance_cost"/>
        <result property="maintenanceCycleMonth" column="maintenance_cycle_month"/>
        <result property="maintenanceCycleMileage" column="maintenance_cycle_mileage"/>
        <result property="maintenanceStatus" column="maintenance_status"/>
    </resultMap>
    <!--车辆保养记录查询-->
    <select id="selectMaintain" resultMap="BaseResultMaintains">
        SELECT  v.id vid,
        vm.maintenance_date,
        vm.maintenance_level,
        vm.maintenance_cost,
        vm.maintenance_cycle_month,
        vm.maintenance_cycle_mileage,
        vm.maintenance_status
        FROM t_vehicle v
             LEFT JOIN t_vehicle_maintain vm ON v.id=vm.vehicle_id
        WHERE v.is_delete=1
            AND vm.is_delete=1
        <if test="vehicleNumber!=null and vehicleNumber!=''">
            AND v.vehicle_number=#{vehicleNumber}
        </if>
        <if test="frameNumber!=null and frameNumber !=''">
            AND   v.frame_number=#{frameNumber}
        </if>

    </select>

 解答

找了半天一开始以为sql语句或者结果集映射的问题,经过查询是结果集映射的问题

        resultMap结果集映射通过实体类的无参构造方法创建对象,然后通过Getter 和 Setter 方法进行属性的注入,上面案例是因为我在实体类中使用了@Builder注解导致了无参构造方法的被覆盖,

解决方法:去掉@Builder或者加上@NoArgsConstructor(生成一个无参构造方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值