【问题标题】:MyBatis - Simple selectOne is not workingMyBatis - 简单的 selectOne 不起作用
【发布时间】:2013-10-30 23:21:01
【问题描述】:

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 

我在这里缺少一些基本的东西。任何帮助指出将不胜感激。

【问题讨论】:

    标签: mybatis


    【解决方案1】:

    作为id.trim() 传递,这适用于基于字符的where 子句列。

    【讨论】:

      【解决方案2】:

      发现问题.. DB Column 是 CHAR(30),我将 String 对象传递给 Mybatis。 WHERE 子句比较失败...

      ColValue [201101070640191548867209 ] &lt;&gt; Input [201101070640191548867209]

      将查询更改为

      select data_key from yfs_task_q where trim(task_q_key) = #{value}

      仍然需要做更多的研究,看看是否有任何标志/配置我可以设置强制 MyBatis 忽略 col 值中的填充空格。

      如果有人知道mybatis coig,请发布相同的内容。但是对于发布的这个问题,找到了原因,我可以继续前进:)

      注意:我不确定为什么这些列是 CHAR 而不是 VARCHAR.. 它是第 3 方应用表。

      【讨论】:

        【解决方案3】:

        确保您的方法中的agent 实际上是一个字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-11
          • 2021-05-18
          • 2018-11-14
          • 2017-05-19
          • 2013-03-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多