Mybatis 奇怪问题
计算分页总页数时 总报错:
org.springframework.jdbc.InvalidResultSetAccessException: SqlSession operation; invalid ResultSet access for SQL []; nested exception is java.sql.SQLException: 无效的列索引
?
?
<parameterMap type="map" id="queryAllParamMap"><parameter property="hotelTxnState" javaType="java.lang.String" jdbcType="VARCHAR"/><parameter property="ordercd" javaType="java.lang.String" jdbcType="VARCHAR"/><parameter property="transactionNo" javaType="java.lang.String" jdbcType="VARCHAR"/><parameter property="chnName" javaType="java.lang.String" jdbcType="VARCHAR"/><parameter property="checkindate" javaType="java.util.Date" jdbcType="DATE"/><parameter property="checkoutdate" javaType="java.util.Date" jdbcType="DATE"/><parameter property="pageNo" javaType="int" jdbcType="INTEGER"/><parameter property="pageSize" javaType="int" jdbcType="INTEGER"/></parameterMap>
?
?
<select id="queryHotelOrderAllInfoPage" parameterMap="queryAllParamMap" resultType="java.lang.Integer" >SELECT COUNT(*) FROM ( select pch.*,pc.chn_name,pc.class_code_descr, pc.national_code_descr from pkg_ctshkhotel_hotelorder pch left join (select distinct hotel_code,chn_name,class_code,class_code_descr,national_code,national_code_descr from PKG_CTSHKHOTELPRICE ) pc on pch.hkhotelcd=pc.hotel_code and pch.hkhotelroomkind=pc.class_code and pch.hkhotelpricekind=pc.national_code <where> <if test="hotelTxnState != '' and hotelTxnState != null">pch.hoteltxnstate=#{hotelTxnState}</if> <if test="ordercd != '' and ordercd != null">and pch.ordercd like CONCAT(CONCAT('%', #{ordercd}),'%')</if> <if test="chnName != '' and chnName != null">and pc.chn_name like CONCAT(CONCAT('%', #{chnName}),'%')</if> <if test="checkindate != null"><![CDATA[and pch.checkindate >= #{checkindate}]]> </if> <if test="checkoutdate != null"><![CDATA[and pch.checkoutdate <= #{checkoutdate}]]> </if> <if test="transactionNo != '' and transactionNo != null"> and pch.id in (select orderid from pkg_ctshkhotel_hoteltrace where transactionno like CONCAT(CONCAT('%', #{transactionNo}),'%') </if> </where> order by pch.id desc) t</select>
?
?
?
调用方式如下:
queryHotelOrderAllInfoPage("", "", "", "", null, null, 1, 5) //调用
?就报以上错误!但当所有的参数都为空时就报错,(后面2个参数不算,因为没有用到), 只要前面6个参数传入一个参数就可以得到正确的结果! 郁闷。。。
?
甚至 把该select 语句改为 :
SELECT COUNT(*) FROM pkg_ctshkhotel_hotelorder
?
还是报错!
?
?
但我把parameterMap 里所有的参数全删掉时就不报错了。
可是我分页的查询语句 也是使用的是 parameterMap , 参数全为空时都可以得到正确的结果。。
?
留以后有时间再研究研究...
?
?
?
1 楼 xiaocao000 2012-04-18 这个问题有答案了么, 呵呵, 我也想知道原因