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

本文记录了作者在使用扩展实体类RoomQueryVo进行数据库查询时遇到的问题及解决方案,详细介绍了如何正确配置属性映射以避免NoSuchPropertyException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先在这里我很庆幸,终于又解决一个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层,在这里我也不知道为什么一直报

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

嗯。。。结果就是还是不行,

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

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

这是我的测试类

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

在这里插入图片描述

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

不足之处,希望,各位观众老爷,留下您的见解,大家讨论讨论,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值