请教问题:Mybatis执行select count(*)返回结果为0,但是数据库表中有数据

lvbingyu89 2018-01-27 11:19:21
dao:
`int selectbalanceRecordByMbIdCount(AlAccountInfo alAccountInfo);`

mapper:
`<select id="selectbalanceRecordByMbIdCount" parameterType="com.sojson.common.model.AlAccountInfo" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM admin_balance a
LEFT JOIN al_member b ON b.id = a.memberId
LEFT JOIN al_shop c ON c.id = a.shopId
WHERE a.memberId =#{med} AND a.organizationId =#{organizationId}
</select>
`
navicate 执行 :
SELECT COUNT(*)
FROM admin_balance a
LEFT JOIN al_member b ON b.id = a.memberId
LEFT JOIN al_shop c ON c.id = a.shopId
WHERE a.memberId =00000887 AND a.organizationId =10001045
结果count(*) 6

控制台输出日志:
[DEBUG][2018-01-27 11:10:19,443][org.springframework.jdbc.datasource.DataSourceTransactionManager]Acquired Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1f99d6fc] for JDBC transaction
[DEBUG][2018-01-27 11:10:19,443][org.springframework.jdbc.datasource.DataSourceUtils]Setting JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1f99d6fc] read-only
[DEBUG][2018-01-27 11:10:19,451][org.springframework.jdbc.datasource.DataSourceTransactionManager]Switching JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1f99d6fc] to manual commit
[DEBUG][2018-01-27 11:10:19,451][druid.sql.Connection]{conn-10003} setAutoCommit false
[DEBUG][2018-01-27 11:10:19,461][org.mybatis.spring.SqlSessionUtils]Creating a new SqlSession
[DEBUG][2018-01-27 11:10:19,461][org.mybatis.spring.SqlSessionUtils]Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6c7f4067]
[DEBUG][2018-01-27 11:10:19,462][org.mybatis.spring.transaction.SpringManagedTransaction]JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1f99d6fc] will be managed by Spring
[DEBUG][2018-01-27 11:10:19,462][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]ooo Using Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1f99d6fc]
[DEBUG][2018-01-27 11:10:19,462][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]==> Preparing: SELECT COUNT(*) FROM admin_balance a LEFT JOIN al_member b ON b.id = a.memberId LEFT JOIN al_shop c ON c.id = a.shopId WHERE a.memberId =? AND a.organizationId =?
[DEBUG][2018-01-27 11:10:19,462][druid.sql.Statement]{conn-10003, pstmt-20059} created.
SELECT COUNT(*)
FROM admin_balance a
LEFT JOIN al_member b ON b.id = a.memberId
LEFT JOIN al_shop c ON c.id = a.shopId
WHERE a.memberId =? AND a.organizationId =?
[DEBUG][2018-01-27 11:10:19,462][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]==> Parameters: 00000887(String), 10001045(String)
[DEBUG][2018-01-27 11:10:19,462][druid.sql.Statement]{conn-10003, pstmt-20059} Parameters : [00000887, 10001045]
[DEBUG][2018-01-27 11:10:19,462][druid.sql.Statement]{conn-10003, pstmt-20059} Types : [VARCHAR, VARCHAR]
[DEBUG][2018-01-27 11:10:19,465][druid.sql.Statement]{conn-10003, pstmt-20059} executed. 2.514853 millis.
SELECT COUNT(*)
FROM admin_balance a
LEFT JOIN al_member b ON b.id = a.memberId
LEFT JOIN al_shop c ON c.id = a.shopId
WHERE a.memberId =? AND a.organizationId =?
[DEBUG][2018-01-27 11:10:19,465][druid.sql.ResultSet]{conn-10003, pstmt-20059, rs-50063} open
[DEBUG][2018-01-27 11:10:19,465][druid.sql.ResultSet]{conn-10003, pstmt-20059, rs-50063} Header: [COUNT(*)]
[DEBUG][2018-01-27 11:10:19,465][druid.sql.ResultSet]{conn-10003, pstmt-20059, rs-50063} Result: [0]
[DEBUG][2018-01-27 11:10:19,465][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]<== Columns: COUNT(*)
[DEBUG][2018-01-27 11:10:19,465][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]<== Row: 0
[DEBUG][2018-01-27 11:10:19,465][druid.sql.ResultSet]{conn-10003, pstmt-20059, rs-50063} closed
...全文
4789 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
月明星稀灬 2021-04-07
  • 打赏
  • 举报
回复
看清楚了,你的入参,两个String,而你直接SQL查的时候用的int [DEBUG][2018-01-27 11:10:19,462][com.sojson.common.dao.MemberInfoMapper.selectbalanceRecordByMbIdCount]==> Parameters: 00000887(String), 10001045(String)
RiKen2020 2021-03-31
  • 打赏
  • 举报
回复
控制台输出日志:Parameters: 00000887(String), 10001045(String) 参数类型是String,所以在sql中拼接参数时,要用单引号拼接。 SELECT COUNT(*) FROM admin_balance a LEFT JOIN al_member b ON b.id = a.memberId LEFT JOIN al_shop c ON c.id = a.shopId WHERE a.memberId ='00000887' AND a.organizationId ='10001045'; 你可以把这个sql在navicate执行一下试试,应该count值也是0;
「已注销」 2019-11-22
  • 打赏
  • 举报
回复
导致了异常 所以返回的结果为0
「已注销」 2019-11-22
  • 打赏
  • 举报
回复
因为你的数据库非空字段有“ ”
wang_2504344985 2019-11-22
  • 打赏
  • 举报
回复
可能只传进去一个参数
  • 打赏
  • 举报
回复
输入参数类型的问题
cwmlow 2019-09-09
  • 打赏
  • 举报
回复
如果保证数据库执行的sql语句跟你控制台打印的一致, 那我只能想到连了不同的数据库
alan_waker 2018-01-31
  • 打赏
  • 举报
回复
应该不是数据类型的错误,数字类型的我经常直接这样查.没有错的. 你把你参数trim()一下试试.
流火1987 2018-01-31
  • 打赏
  • 举报
回复
你再 navicate 执行的时候,参数没加引号
rizuni 2018-01-31
  • 打赏
  • 举报
回复
你的输入是个对象 parameterType="com.sojson.common.model.AlAccountInfo" 在where条件中直接使用了#获取参数,所以可能没有获取到参数,查询结果是0 可以尝试输入使用#(对象.属性)的方式获取 或者输入改成map parameterType="java.util.Map"
Sunyiban 2018-01-30
  • 打赏
  • 举报
回复
参数类型错了?
lvbingyu89 2018-01-27
  • 打赏
  • 举报
回复
检查过了,没有连错
u010385632 2018-01-27
  • 打赏
  • 举报
回复
这么奇怪的吗,数据库连了不同的?
oyljerry 2018-01-27
  • 打赏
  • 举报
回复
数据库中执行最终的的sql语句看结果是什么

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧