当前位置: 代码迷 >> Java Web开发 >> ibatis的产map类型做参数的时候,总是说属性找不到,咋回事
  详细解决方案

ibatis的产map类型做参数的时候,总是说属性找不到,咋回事

热度:339   发布时间:2016-04-17 00:26:15.0
ibatis的产map类型做参数的时候,总是说属性找不到,怎么回事?
service里这样:
Java code
paramMap.put("groupId", groupId);        paramMap.put("fromIndex", page.getFromIndex());        paramMap.put("pageSize",page.getPageSize());


根据用户组查询该组下的所以用户。
xml这么写的:
XML code
<!-- 根据用户组id查询该组下的所有用户 -->    <select id="selectUserByGroupId" parameterClass="java.util.Map" resultMap="resultUsers">        SELECT            a.USER_ID,            a.LOGIN_NAME,            a.SHOW_NAME,            a.PASS_WORD,            a.CREATE_TIME,            a.GROUP_ID,            a.ADMIN_FLG,            b.ID,            b.GROUP_NAME,            b.DISPLAY_ORDER,            b.HIDE_FLG        FROM            table_user AS a        LEFT JOIN             table_group AS b         ON             b.ID = a.GROUP_ID        WHERE            a.GROUP_ID = #groupId#        ORDER BY            a.USER_ID DESC        <dynamic>            <isNotNull property="fromIndex">            <isNotNull property="pageSize">                LIMIT #fromIndex# , #pageSize#            </isNotNull>            </isNotNull>        </dynamic>    </select>


报错如下:
Java code
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];   --- The error occurred while applying a parameter map.  --- Check the Users.selectUserByGroupId-InlineParameterMap.  --- Check the parameter mapping for the 'groupId' property.  --- Cause: java.lang.NullPointerException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred while applying a parameter map.  --- Check the Users.selectUserByGroupId-InlineParameterMap.  --- Check the parameter mapping for the 'groupId' property.  --- Cause: java.lang.NullPointerException    org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:124)


有一行:Check the parameter mapping for the 'groupId' property. [size=16px][/size]

------解决方案--------------------
检查 paramMap.put("groupId", groupId);
groupId是不是空的
SQLMAQP 凡是有参数的地方都加上<isNotNull property="groupId">判断

a.GROUP_ID = #groupId#
这里你也要加上判断 当这个参数为空的时候 这条SQL 不要加进去
------解决方案--------------------
看是你有空值传过去了!或者没有传值!
我项目中用的代码 希望对你有帮助 ,调用存储过程的代码 
xml中
<parameterMap class="java.util.Map" id="swapParameters2">
<parameter property="contractId" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" />
<parameter property="startDate" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="endDate" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="balance" javaType="java.lang.Double" jdbcType="DOUBLE" mode="OUT" /> 
</parameterMap>
<procedure id="getProYearLastAmount2" parameterMap="swapParameters2">
<![CDATA[
{call getBalance_byMonthContract2(?,?,?,?)}
]]>
</procedure>
  相关解决方案