开发者社区> 问答> 正文

mybatis查询时传递对象问题,始终报类型错误,求哪位前辈进来看看?报错

java接口方法:   

public int getCount(ProjectCriteria criteria);
ProjectCriteria类:只有String name属性
xml配置:   
<select id="getCount" parameterType="ProjectCriteria" resultType="int">
select count(1) from project
where `name` like '%#{name,jdbcType=VARCHAR}%'
</select>
junit报错:
 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='name', mode=IN, javaType=class java.lang.String, jdbcType=VARCHAR, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType VARCHAR . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

配置什么的都没问题,其他项目也这样用,同一个项目中insert,update方法都好着呢,就select这个方法里边不能用,不知道为什么

报错是类型异常,但是String 不就对应jdbcType的VARCHAR吗?



展开
收起
爱吃鱼的程序员 2020-06-09 14:03:26 879 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    resultType="int">改成resultClass="java.lang.Integer"

    试了,并不是这里的问题<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;font-size:14px;background-color:#FFFFFF;">jdbcType=VARCHAR<divclass="linenumber1index0alt2"><selectid="getCount"parameterType="ProjectCriteria"resultType="int">回复<aclass='referer'target='_blank'>@匆匆z2:我写的都不用呢,一切正常你的意思是不用jdbcType,我之前是写在mybatis判断语句里边的,后来报错就直接这样写方便点了,官方文档里边的说法是,对于可能为空的类型需要给出jdbcType,如果为空的话,这样就不行了,去掉之后还是报错555<divclass='ref'>

    引用来自“jorneyr”的评论

    <divclass="linenumber1index0alt2"><selectid="getCount"parameterType="ProjectCriteria"resultType="int">但是,我觉得这个问题是不能映射自定义数据类型,不是取参的问题啊?怎么解决前者带来的问题??恩,是的,谢谢你谁教你%#{name}%可以这样拼字符串?谢谢你,已经解决了

    <spanstyle="font-size:14px;line-height:24px;background-color:#F8FEEE;">已经解决了,参数会自带引号

    <spanstyle="color:#333333;font-family:'MicrosoftYaHei';font-size:14px;line-height:24px;background-color:#F8FEEE;">where name<spanstyle="color:#333333;font-family:'MicrosoftYaHei';font-size:14px;line-height:24px;background-color:#F8FEEE;"> like“%"#{name,jdbcType=VARCHAR}"%"

    parameterType写错了吧<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;font-size:14px;line-height:15.4px;background-color:#FFFFFF;">where namelike'%'||#{name,jdbcType=VARCHAR}||'%'

    namelike'%${<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;font-size:14px;line-height:15.390625px;background-color:#FFFFFF;">name}%' 

    <spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;font-size:14px;line-height:15.390625px;background-color:#FFFFFF;">namelike'%'||#{name,jdbcType=VARCHAR}||'%'

    2020-06-09 14:03:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多