mybatis,查询传入参数为Map,无效的列类型,空指针异常
报错信息:ERROR-Exceptionoccurredduringprocessingrequest:Errorsettingnullforparameter#1wit...
报错信息:
ERROR - Exception occurred during processing request: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型
; uncategorized SQLException for SQL []; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
查询xml:
<select id="login" resultType="com.exam.entity.Student" parameterType="java.util.HashMap">
<![CDATA[
select * from ${schema}.student where stu_id = #{stu_id} and sys_pwd = #{sys_pwd}
]]>
</select>
我debug查看了map传入前的值,两个参数都不是空的,但是传入之后就报错,这两个字段在数据库里都是varchar类型的,我传入的是string
想知道为什么会变成空的 展开
ERROR - Exception occurred during processing request: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型
; uncategorized SQLException for SQL []; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
查询xml:
<select id="login" resultType="com.exam.entity.Student" parameterType="java.util.HashMap">
<![CDATA[
select * from ${schema}.student where stu_id = #{stu_id} and sys_pwd = #{sys_pwd}
]]>
</select>
我debug查看了map传入前的值,两个参数都不是空的,但是传入之后就报错,这两个字段在数据库里都是varchar类型的,我传入的是string
想知道为什么会变成空的 展开
1个回答
展开全部
<select id="login" resultType="com.exam.entity.Student" parameterType="java.util.Map">
<![CDATA[
select * from ${schema}.student where stu_id = ${stu_id} and sys_pwd = ${sys_pwd}
]]>
</select>
<![CDATA[
select * from ${schema}.student where stu_id = ${stu_id} and sys_pwd = ${sys_pwd}
]]>
</select>
更多追问追答
追问
为什么不能用#{stu_id},这两种取法有什么不同
追答
#{stu_id}这么调用,在xml里必须有声明,如
然后这么用 stu_id = #{stuId,jdbcType=INTEGER}
${stu_id} 这个用的就随意些,只要你map传进来的key和stu_id一样就行了
还有${schema}.student这样用不报错吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询