ibatis的产map类型做参数的时候,总是说属性找不到,咋回事
ibatis的产map类型做参数的时候,总是说属性找不到,怎么回事?
service里这样:
根据用户组查询该组下的所以用户。
xml这么写的:
报错如下:
有一行: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>
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>