Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jdbc查询引发异常_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用jdbc查询引发异常

Java 使用jdbc查询引发异常,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有以下存储库方法: @Override public List<Item> getItemsByName(String name) { String sql = "SELECT * FROM ITEMS WHERE NAME = :name"; Map<String, Object> params = new HashMap<>(); params.put("name", name); return jdbcTemplate.

我有以下存储库方法:

@Override
public List<Item> getItemsByName(String name) {
    String sql = "SELECT * FROM ITEMS WHERE NAME = :name";
    Map<String, Object> params = new HashMap<>();
    params.put("name", name);
    return jdbcTemplate.query(sql, params, new ItemMapper());
}

传入一个不存在的名称不会导致出现
DataAccessException
,因此这不起作用。查询的空结果没有什么例外


但是,如果结果为空,为什么要抛出异常?这对你来说是一个例外情况吗(例如,有人搜索一个不存在的名字是一个bug)?如果是这样,这是一种有效的方法。一般来说,空列表可能会更好。

传入一个不存在的名称不会导致出现
DataAccessException
,因此不起作用。查询的空结果没有什么例外


但是,如果结果为空,为什么要抛出异常?这对你来说是一个例外情况吗(例如,有人搜索一个不存在的名字是一个bug)?如果是这样,这是一种有效的方法。一般来说,空名单可能更好。

同意。为空列表引发异常是业务逻辑,不属于DAO类。同意。为空列表引发异常是业务逻辑,不属于DAO类。
List<Item> items = jdbcTemplate.query(sql, params, new ItemMapper());
if (items == null || items.isEmpty()) {
    throw new ItemsNotFoundException();
}
return items;
try {
    return jdbcTemplate.query(sql, params, new ItemMapper());
} catch (DataAccessException e) {
    throw new ItemNotFoundException();
}