请教一下mybatis返回数据结果集为0,数据库查询有数据是怎么回事?

weixin_39322425 2017-08-15 11:53:14
我把控制台答应的sql复制到数据库查询是有数据的,但是mybatis的返回结果数量是0条,请教一下可能是什么原因导致的?
...全文
4989 点赞 收藏 58
写回复
58 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wyer_ly 2020-10-03
你查询的一个字段,用map查询当然没法查出来,插件没那么智能(你指望它怎么封装返回数据?以什么为键?)。
回复
weixin_42278189 2020-10-02
可能是编码格式不对,拼接在后面的string乱码了,在数据库连接文件的URL后面添加?characterEncoding=utf-8 jdbc.properties上添加url=jdbc:mysql://localhost:3306/crud?characterEncoding=utf-8
回复
OneBaiY 2020-08-19
查看下数据库的驱动,注意字符集
回复
Fish_Yu_007 2020-08-19
看看查询字段的内容 有没有空格
回复
mclt2017 2020-04-03
列名是不是也用变量绑定的? 比如 where ? = ? 如果是的话,列名用${xxx} 取值, 值用#{xxx}取值就行了 为了避免sql注入。列名的变量最好在后端定义,不要从前端接收变量
回复
古天乐本乐 2020-01-16
引用 50 楼 suvren 的回复:
我也遇到同查的问题,之前一直正常,突然不行了,最后发现还是参数问题,在传参前用trim()方法去一下空格就可以了。
这个是正解
回复
seMiColon77 2019-11-11
引用 44 楼 yu578707139的回复:
我也出现这个问题,用的是mybatis 3.4.4,mybatis-spring 1.3.1,oracle11g2 同样是通过navicat for oracle执行控制台输出的sql语句有记录,但是mybatis返回0
你解决了吗,我和你差不多
回复
qhn83329580 2019-03-13
最后有结果么
回复
子介 2018-10-12
可以试着吧, #{} 参数写成, ${} 这样不会类型转化
回复
suvren 2018-07-06
我也遇到同查的问题,之前一直正常,突然不行了,最后发现还是参数问题,在传参前用trim()方法去一下空格就可以了。
回复
wangxiaoyang909 2018-06-22
楼主你传的参数有问题,你传的是字符串是有问题的,,你传的是“400311”,但是应该是400311,因为后面的(String)会给你作转换的
回复
weixin_40852944 2018-06-22

感觉被这问题折腾的。。。
你把xml文件的 resultType="java.lang.Map" 改成 resultType="java.lang.Long" 就可以了吧?然后结果集用List<Long> 类型来接收
回复
聴説_er 2018-06-22
<resultMap id="BaseResultMap" type="com.yunchang.entity.Log">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="userid" jdbcType="INTEGER" property="userid" />
<result column="licenseid" jdbcType="INTEGER" property="licenseid" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="action" jdbcType="VARCHAR" property="action" />
<result column="datetime" jdbcType="TIMESTAMP" property="datetime" />
</resultMap>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from log
where id = #{id,jdbcType=BIGINT}
</select>


你可以参考下这样
回复
热爱生活~~~ 2018-06-21
试一下14楼的方法,如果是使用bean传值的话,只要传bean就行。使用参数的话,就需要14楼的方法,不然会报错。还有就是你dao那边参数的类型和mapper那边的参数要一致。如下:
/**
* 查询所有班级信息
*/
List<Map<String, Object>> findAllclass(@Param("begin")Integer begin,@Param("endss")Integer endss,@Param("name")String name);

<select id="findAllclass" resultType="map">
SELECT c.*,m.majors_name FROM classs c,majors m WHERE c.majors_id=m.id
<if test="name != null and name!= '' "> and class_name like CONCAT('%',#{name},'%')</if>
ORDER BY c.majors_id
LIMIT #{begin},#{endss}
</select>
回复
naxnrod 2018-06-20
这里挖一下,刚遇到,前后能看到的地方都觉得是对的,改成死数值能查到结果,那肯定是参数问题,前后又看一遍,所有参数传递都是对的,最终查到源头,参数的取值,从 (' ${di.dn_id} ')这里开始是为了美观,因为写下来的时候括号是歪的,我就以为可能前后要留个空让括号自适应变成正常的样子,结果改了后括号还是那样子,我就没管,保存了做其他了,现在回过头再看,这边取值的时候,取出的值前后都是有空格的,所以其实传递的参数一直是个错误的参数,但是从后台system.out.print又能看到正确的参数打印,一直误导着自己没去看最开始的取值。好了我的解决过程就是这样。不知道有没有帮助。
回复
yu578707139 2018-05-12
我也出现这个问题,用的是mybatis 3.4.4,mybatis-spring 1.3.1,oracle11g2 同样是通过navicat for oracle执行控制台输出的sql语句有记录,但是mybatis返回0
回复
愛殤 2018-03-23
查詢只需要寫<select id="findUsername" resultType="cn.zzq.bean.UserBean" parameterType這個寫了不行
回复
qq827010202 2018-03-22
返回List就可以返回List<Map>是什么鬼
回复
gy_2154317786_gy 2018-03-22
今天正好也遇到找个问题,拖到中午刚解决,我的问题是由于参数里边有空白符或换行符照成的
回复
麦洛_ 2018-03-21
检查下数据库配置文件,看看是不是数据库连接错了
回复
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2017-08-15 11:53
社区公告
暂无公告