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

想知道为什么会变成空的
展开
 我来答
chenvvxin
2015-05-04 · 超过32用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:46.8万
展开全部
<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>
更多追问追答
追问
为什么不能用#{stu_id},这两种取法有什么不同
追答
#{stu_id}这么调用,在xml里必须有声明,如

然后这么用 stu_id = #{stuId,jdbcType=INTEGER}
${stu_id} 这个用的就随意些,只要你map传进来的key和stu_id一样就行了
还有${schema}.student这样用不报错吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式