MyBatis的:
不确定哪里出错..但是基本的SelectOne没有返回结果。
映射器:
<select id="getBackLog" parameterType="string"
resultType="string">
select data_key from yfs_task_q where task_q_key = #{value}
</select>
方法:
dataKey =(String)session.selectOne(“OMSWatchMappers.getBackLog”,agent); logger.debug(“@ Backlog =”+ dataKey);
日志:
02:01:34.786 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Openning JDBC Connection
02:01:35.890 [main] DEBUG o.a.i.d.pooled.PooledDataSource - Created connection 2092843500.
02:01:35.961 [main] DEBUG c.b.o.r.OMSWatchMappers.getBackLog - ooo Using Connection [oracle.jdbc.driver.T4CConnection@7cbe41ec]
02:01:35.961 [main] DEBUG c.b.o.r.OMSWatchMappers.getBackLog - ==> Preparing: select data_key from yfs_task_q where task_q_key = ?
02:01:36.126 [main] DEBUG c.b.o.r.OMSWatchMappers.getBackLog - ==> Parameters: 201101070640191548867209(String)
02:01:36.249 [main] DEBUG OMSWatchDAOImpl - @Backlog=null
02:01:36.250 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [oracle.jdbc.driver.T4CConnection@7cbe41ec]
02:01:36.250 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Closing JDBC Connection [oracle.jdbc.driver.T4CConnection@7cbe41ec]
02:01:36.250 [main] DEBUG o.a.i.d.pooled.PooledDataSource - Returned connection 2092843500 to pool.
此记录存在于数据库中。
select data_key from yfs_task_q where task_q_key = '201101070640191548867209';
DATA_KEY
------------------------
201101070636011548866830
如果我更改映射器以直接添加参数,则返回结果。
映射器:
<select id="getBackLog" parameterType="string" resultType="string">
select data_key from yfs_task_q where task_q_key = '201101070640191548867209'
</select>
日志:
02:38:52.746 [main] DEBUG c.b.o.r.OMSWatchMappers.getBackLog - ==> Preparing: select data_key from yfs_task_q where task_q_key = '201101070640191548867209'
02:38:52.942 [main] DEBUG c.b.o.r.OMSWatchMappers.getBackLog - ==> Parameters:
02:38:53.096 [main] DEBUG OMSWatchDAOImpl - @Backlog=201101070636011548866830
我在这里缺少一些基本的东西。任何帮助指出将非常感激。
答案 0 :(得分:1)
发现问题..数据库列是CHAR(30),我正在将String对象传递给Mybatis。 WHERE子句比较失败了......
ColValue [201101070640191548867209 ] <> Input [201101070640191548867209]
将查询更改为
select data_key from yfs_task_q where trim(task_q_key) = #{value}
仍然需要做更多的研究,看看是否有任何标志/配置我可以设置强制MyBatis忽略col值中的填充空格。
如果有人知道mybatis coig,请发布相同内容。但对于发布的这个问题,找到了原因,我可以继续:)
注意:我不确定为什么这些列是CHAR而不是VARCHAR ..它是第三方应用程序表。
答案 1 :(得分:0)
确保方法中的agent
实际上是一个字符串。
答案 2 :(得分:-1)
传递为id.trim()
,适用于基于字符的where
子句列。