关于Parameter 'maccid' not found. Available parameters are [maccids, param1]问题解决

问题描述:

1.传入多个值时,mybatis会自动将这些值转成类似map形式的值,以0,1,2…的序列为keyName。
这里我们需要先简单了解一下mybatis的传值机制。Mybatis现在可以使用的2.parameterType有基本类型和Java负责类型
3.还有当运用特殊转义字符(例如:<![CDATA]]>)是有foreach循环时需要把循环放到特殊转义字符外面
基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名}获取。
复杂数据类型:包含Java实体类、Map。通过#{属性名}或#{map的keyName}获取。
先上报错:在这里插入图片描述

解决问题:

方法一:(设置下标)

UserMapping.xml

select * from login where name=#{0} and password=#{1}  
方法二:(定义别名)

UserDao.java

public Login selectByCondition(@param("name")String username,@param("pwd")String password);

name、pwd 是别名对应UserMapping.xml里面的

select * from login where name=#{name} and password=#{pwd}   
方法二:(把foreach循环放外面就可以)以上两种都没效就仔细检查

代码如下:

    <select id="selectLeaseManagerVo" resultMap="LeaseManagerVoResultMap">
        <![CDATA[
            SELECT
                (
                SELECT
                    count( tempcc.id )
                FROM
                    c_contract tempcc
                    LEFT JOIN c_contract_detail tempccd ON tempccd.contract_id = tempcc.id
                    AND tempcc.logical_state = 0
                WHERE
                    tempccd.end_time > now( )
                    ) AS validLease,
                    (
                SELECT
                    count( tempcc.id )
                FROM
                    c_contract tempcc
                    LEFT JOIN c_contract_detail tempccd ON tempccd.contract_id = tempcc.id
                    AND tempcc.logical_state = 0
                WHERE
                    tempccd.end_time BETWEEN now( )
                    AND DATE_ADD( now( ), INTERVAL 1 MONTH )
                    ) AS willExpire,
                    (
                SELECT
                    count( tempcc.id )
                FROM
                    c_contract tempcc
                    LEFT JOIN c_contract_detail tempccd ON tempccd.contract_id = tempcc.id
                    AND tempcc.logical_state = 2
                WHERE
                    tempccd.end_time < now( )
                    ) AS expire,
                    bb.build_name AS buildingName,
                    ccd.end_time AS expireTime,
                    bbr.floor_id AS floor,
                    bbr.door_number AS door
                FROM
                    c_contract cc
                    LEFT JOIN c_contract_detail ccd ON cc.id = ccd.contract_id
                    LEFT JOIN b_building_room bbr ON bbr.id = cc.room_id
                    LEFT JOIN b_building bb ON bb.id = bbr.building_id
                WHERE
    ]]>
                    cc.m_acc_id IN
                    <foreach collection="maccids" item="maccid" open="(" separator="," close=")">
                        #{maccid}
                </foreach>
    </select>

具体操作简单有效:

在这里插入图片描述

奉上查询结果:在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值