SpringMVC+Mybatis框架中SQL的异常处理

SpringMVC+Mybatis框架中SQL的异常处理
今天开发时候遇到一个问题,Mapper文件中的SQL,由于其中一个表少了个字段,但是查询语句中又恰好用到了这个字段,结果报了错,但是呢,日志输出时到了SQL那里就没了,没有把SQL的异常输出出来,拿了SQL到数据库执行才知道是标识符无效的错
原来的DAO层的代码如下:

public List<UserVo> queryUser(Map<String, String> params) ;

这样写呢,SQL的报错不能正常输出,日志执行到SQL那里就停了,就不容易看出来是哪里的问题,于是在DAO层文件里加了个异常的跑出,然后在service层把异常捕捉到
DAO层代码:

public List<UserVo> queryUser(Map<String, String> params) throws SQLException;

service层代码:

        List<UserVo> list = null;
		try {
			list = userDao.queryUser(params);
		} catch (SQLException e) {
			logger.error("SQL执行出现异常。。。");
			e.printStackTrace();
		}

胸有成竹的去试了一下,结果,还是不行,这就很尴尬了啊,到底是哪里出问题了呢?然后查看日志发现,这个异常是这样:
org.springframework.jdbc.BadSqlGrammarException:
error querying database.Cause:java.sql.SQLSyntaxErrorException :ORA-00904 ::invalid identifier

虽说这个异常是SQL执行出错导致的,但是这个异常是Mybatis框架报的,所以我们不能用SQLException,于是换成了Exception,遂解决。

        List<UserVo> list = null;
		try {
			list = userDao.queryUser(params);
		} catch (Exception e) {
			logger.error("SQL执行出现异常。。。");
			e.printStackTrace();
		}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值