记一次iBatis自定义sql的坑

喜欢ヅ旅行 2022-06-12 07:54 312阅读 0赞

在进行定时任务调度Job时,在执行到service层时,先是报错,原因是service方法未增加@Transaction注解

@Override
@Transactional
public List modelListBySql(Map paraMap)
{
return null;
}

,再次调试,控制台打印sql语句,但是似乎程序停止了一样没有任何反应,然后在Dao层将封装的查询方法放到dao了添加断点调试。

public List findListBySqlId(String sqlId, Map<?, ?> paraMap)
/* */ {
/* 195 */ List list = null;
/* */ try {
/* 197 */ String hql = getSqlStatementById(sqlId, paraMap);
/* 198 */ if (StringUtils.isNotBlank(hql)) {
/* 199 */ Query query = getSession().createSQLQuery(hql);
/* 200 */ query.setCacheable(SysPropertiesUtil.getBoolean(“use_query_cache”, false));
/* 201 */ setQueryParameters(query, paraMap);
/* 202 */ list = query.list();
/* */ } else {
/* 204 */ throw new BasalException(BasalException.ERROR, “未在 SqlMap配置文件中配置, ID为” + sqlId +
/* 205 */ “hql 语句”);
/* */ }
/* */ } catch (Exception e) {
/* 208 */ throw new BasalException(BasalException.ERROR, e.getCause().getMessage(), e.getCause());
/* */ }
/* 210 */ return list;
/* */ }

代码走到list = query.list();后同样没有任何反应,生成的sql语句在本地执行也没有任何问题。后来将配置文件中的语句整体再包一层来查询问题解决,这可能是sql拼接时,多表关联查询导致,ibatis错误判断语句结尾导致的。

发表评论

表情:
评论列表 (有 0 条评论,312人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SQL优化

    一、经常遇到的问题 1、没有索引或没有用到索引 2、I/O吞吐量小,存在瓶颈效应 3、内侧不足 4、网络速度慢 5、查询出的结果数据量过大 6、出现锁

    相关 使用Cobar踩到

    起因 起因是因为日志里经常报出锁等待超时的错误,并且这个是环环相扣的,一个锁等待会直接引发另外的锁等待,所以危害非常严重,影响非常深远。寻找原因发现是`C3P0`报出了`