首页 新闻 搜索 专区 学院

mybatis源码解析

0
悬赏园豆:100 [待解决问题]

mybatis在直接查数据库的时候,参数与数据库直接查询的结果不一致。这是什么原因导致的?是数据库有缓存吗?

昵称被喵掉了的主页 昵称被喵掉了 | 初学一级 | 园豆:60
提问于:2018-07-20 13:34
< >
分享
所有回答(3)
-1

doQuery是你自己实现的吗?能不能看一下

李华东 | 园豆:227 (菜鸟二级) | 2018-07-20 17:02

doQuery是mybatis的源码

支持(0) 反对(0) 昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-24 09:24

public <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
Statement stmt = null;
try {
Configuration configuration = ms.getConfiguration();
StatementHandler handler = configuration.newStatementHandler(this, ms, parameter, rowBounds, resultHandler, boundSql);
stmt = prepareStatement(handler, ms.getStatementLog());
return handler.<E>query(stmt, resultHandler);
} finally {
closeStatement(stmt);
}
}

支持(0) 反对(0) 昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-24 09:25
-1

麻烦将doQuery里的代码 粘出来下呗

^keepHungry$ | 园豆:532 (小虾三级) | 2018-07-23 10:17

public <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
Statement stmt = null;
try {
Configuration configuration = ms.getConfiguration();
StatementHandler handler = configuration.newStatementHandler(this, ms, parameter, rowBounds, resultHandler, boundSql);
stmt = prepareStatement(handler, ms.getStatementLog());
return handler.<E>query(stmt, resultHandler);
} finally {
closeStatement(stmt);
}
}

支持(0) 反对(0) 昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-24 09:25

@昵称被喵掉了: 感觉没啥问题,你看看你sql  是不是查的大于4月1号的数据

支持(0) 反对(0) ^keepHungry$ | 园豆:532 (小虾三级) | 2018-07-24 09:33

@^keepHungry$: 我也看了好久。也是没问题。sql是“=”号。我查别的用户的就是正确的,只有N0000000的才是这样。

支持(0) 反对(0) 昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-24 10:30

@昵称被喵掉了: 你看看 是不是数据的问题

支持(0) 反对(0) ^keepHungry$ | 园豆:532 (小虾三级) | 2018-07-24 10:58

@^keepHungry$: 使用控制台打印的sql和参数到数据库查询是正确的。

支持(0) 反对(0) 昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-24 15:26
0

原因在于mybatis和kylin驱动不对应。实际上在kylin的预编译下会抛出异常,导致kylin返回缓存结果。不使用预编译完全没有问题。即使用mybatis的${},但是如此容易造成安全问题,最后修改了kylin驱动包。

昵称被喵掉了 | 园豆:60 (初学一级) | 2018-09-07 09:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册