关于在ibatis中使用数据库中没有的字段,进行查找数据

首先在这里我很庆幸,终于又解决一个bug,真是bug缠身啊。但愿你们相互讨论————菜菜的程序员程序员

第一点:先从实体类开始吧,今天要作一个项目,由于查询须要不少字段,可是数据库中没有,这些字段。因此想法有点,扩展原来的实体类。roomQueryVo

package com.hotelsystem.pojo.vo;

import com.hotelsystem.pojo.Room;

//包装类:用于parameterType
public class RoomQueryVo extends Room {

    //标客天
    private Double priceDayStart;
    private Double priceDayEnd;
    //标客时
    private Double priceHourStart;
    private Double priceHourEnd;
    //v客天
    private Double VIPDayStart;
    private Double VIPDayEnd;
    //v客时
    private Double VIPHourStart;
    private Double VIPHourEnd;

    public Double getPriceDayStart() {
        return priceDayStart;
    }

    public void setPriceDayStart(Double priceDayStart) {
        this.priceDayStart = priceDayStart;
    }

    public Double getPriceDayEnd() {
        return priceDayEnd;
    }

    public void setPriceDayEnd(Double priceDayEnd) {
        this.priceDayEnd = priceDayEnd;
    }

    public Double getPriceHourStart() {
        return priceHourStart;
    }

    public void setPriceHourStart(Double priceHourStart) {
        this.priceHourStart = priceHourStart;
    }

    public Double getPriceHourEnd() {
        return priceHourEnd;
    }

    public void setPriceHourEnd(Double priceHourEnd) {
        this.priceHourEnd = priceHourEnd;
    }

    public Double getVIPDayStart() {
        return VIPDayStart;
    }

    public void setVIPDayStart(Double VIPDayStart) {
        this.VIPDayStart = VIPDayStart;
    }

    public Double getVIPDayEnd() {
        return VIPDayEnd;
    }

    public void setVIPDayEnd(Double VIPDayEnd) {
        this.VIPDayEnd = VIPDayEnd;
    }

    public Double getVIPHourStart() {
        return VIPHourStart;
    }

    public void setVIPHourStart(Double VIPHourStart) {
        this.VIPHourStart = VIPHourStart;
    }

    public Double getVIPHourEnd() {
        return VIPHourEnd;
    }

    public void setVIPHourEnd(Double VIPHourEnd) {
        this.VIPHourEnd = VIPHourEnd;
    }
}

扩展后,而后就开始操做dao层,在这里我也不知道为何一直报web

There is no getter for property named ‘room_id’ in ‘class com.hotelsystem.pojo.vo.RoomQueryVo’ 这个错,网上说的是在mapper.xml映射文件,他不知道这个类,好吧!那咱们这里就给他一个注解@Param这个注解吧数据库

//根据条件分页查询
    List<Room> getPageforRoomLists(@Param("roomQueryVo") RoomQueryVo roomQueryVo);

嗯。。。结果就是仍是不行,express

Error evaluating expression 'roomQueryVo.room_id != null and roomQueryVo.room_id !='''. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: com.hotelsystem.pojo.vo.RoomQueryVo.room_id

就是这样,就这个问题我处理了好久,我还觉得是这个扩展类写的不对,而后疯狂百度,疯狂看博客。。。好吧,结果,仍是没有找到我想要的答案。就这样找了几个小时,后就在刚刚,看了一下配置的结果映射,哈哈哈!我真无语,这实体类还能够点数据库里的字段吗?赶忙悄悄的赶过来。而后最后在试一试吧apache

这是个人测试类app

@Test
    public  void testWithPage(){
        System.out.println("page");

        RoomQueryVo roomVo = new RoomQueryVo();
        roomVo.setRoomId("3");
        try {

           List<Room> lists = roomService.getPageforRoomLists(roomVo);
            for (int i = 0; i < lists.size(); i++) {
                Room room =  lists.get(i);
                System.out.println(room);
            }
        } catch (Exception e) {
            System.out.println("出错了");
            e.printStackTrace();
        }
    }

在这里插入图片描述

而后,就这样,耳边响起愉快的歌声。svg

不足之处,但愿,各位观众老爷,留下您的看法,你们讨论讨论,谢谢测试