- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习spring。在创建一个示例时,我遇到了错误。
The type ResultSetExtractor is not generic; it cannot be parameterized with arguments <List<Employee>>
我实现的应用程序如下
Employee.java
package com.develop;
public class Employee {
private int id;
private String name;
private float salary;
public Employee(){}
public Employee(int id, String name, float salary){
this.id = id;
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}
EmployeeDao.java
package com.develop;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
public class EmployeeDao {
private JdbcTemplate template;
public void setJdbcTemplate(JdbcTemplate template) {
this.template = template;
}
public List<Employee> getAllEmployees(){
return template.query("select * from employee",new ResultSetExtractor<List<Employee>>(){
@Override
public List<Employee> extractData(ResultSet rs) throws SQLException,
DataAccessException {
List<Employee> list=new ArrayList<Employee>();
while(rs.next()){
Employee e=new Employee();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setSalary(rs.getInt(3));
list.add(e);
}
return list;
}
});
}
}
测试.java
package com.develop;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)ctx.getBean("edao");
List<Employee> list=dao.getAllEmployees();
for(Employee e:list)
System.out.println(e);
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="system" />
<property name="password" value="oracle" /> -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/springdatabase" />
<property name="username" value="root" />
<property name="password" value="admin123" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
<bean id="edao" class="com.develop.EmployeeDao">
<property name="template" ref="jdbcTemplate"></property>
</bean>
</beans>
已创建表
创建表员工(id号(10),NAME varchar2(100),工资号(10));
最佳答案
错误消息清楚地说明了这一点:
The ResultSetExtractor is not generic.
该接口(interface)在较新版本的 Spring 中变得通用。但无论如何,您仍然可以使用它的原始形式,尽管在处理 extractData()
方法的结果时您将被迫进行强制转换。
public List<Employee> getAllEmployees(){
return template.query("select * from employee",new ResultSetExtractor(){
@Override
public Object extractData(ResultSet rs) throws SQLException,
DataAccessException {
List<Employee> list=new ArrayList<Employee>();
while(rs.next()) {
Employee e=new Employee();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setSalary(rs.getInt(3));
list.add(e);
}
return list;
}
});
}
<小时/>
附注:我假设您使用的是旧版本的 Spring 框架,因为在较新的版本中,ResultSetExtractor
is actually generic 。因此,您可以更新 Spring 版本(但要小心,因为这可能会导致编译问题和其他问题),或者坚持上面代码片段中使用的方法。
关于java - ResultSetExtractor 类型不是通用的;它不能使用参数 <List<Employee>> 进行参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27423767/
假设我有一个具有两种不同的一对多关系的对象。很像: Customer 1M Brands和 Customer 1M Orders 假设我的对象 Customer有两个与这两个对象相关的列表。 我读过这
我需要有关如何在使用 jdbc 时对 ResultSetExtractor 进行单元测试的建议。 String sql = "SELECT * FROM item where item_id = ?"
未覆盖 Resultsetextractor 匿名类的代码覆盖率。运行时没有异常,运行良好。 我们使用下面的示例代码模拟了 jdbcTemplate。 Mockito.when(mainTemplat
我正在尝试有关如何使用 ResultSetExtractor 的演示,但我无法使其工作。 下面是我尝试过的代码: public String retrieveDeptName(final int de
我在 ResultSetExtractor 中调用 getInt 时遇到性能问题。 GetInt 被调用了 20000 次。在分析器内部运行时,一次调用耗时 0.15 毫秒,总耗时 24 秒。 SQL
我在行映射器和结果集提取器回调接口(interface)上都工作过。我发现了不同之处,即, 1.Row mapper 可以逐行处理。但是Resultset extractor 我们可以导航所有行并且返
我正在学习spring。在创建一个示例时,我遇到了错误。 The type ResultSetExtractor is not generic; it cannot be parameterized
我知道如何使用 JDBC 模板和 DAO,但我仍有疑问: RowMapper和ResultSetExtractor有什么用? 什么是绑定(bind)变量? 查询是一种列表吗? 最佳答案 Q1:这些接口
这个问题已经有答案了: Java ResultSet how to check if there are any results (23 个回答) 已关闭 7 年前。 似乎是 ResultSet 的标
我正在将连接的创建转换为使用 JdbcTemplate 类,该类处理资源的创建和释放。下面显示的实现之一没有返回结果集,尽管同一查询的原始结果集返回了记录。我转换了下面的代码 ps = connect
我确实有一个很大的 MySQL 数据库表(超过 100 万条记录)。我需要读取所有数据并使用java语言对其进行一些处理。 我想确保 java 进程不应该通过将整个结果集放入内存来消耗更多内存。 在查
我有一个奇怪的编译问题。我无法解决这个问题。相同的代码在另一个项目中工作正常 org.mockito.Mockito.when(jdbcTemplate.query(org.mockito.Match
我正在从数据库中进行选择,我想确定是否需要检查 RowSet 是否为空。我需要制作一个简单的 if 语句还是可以保留它? 这样就够了吗? //RowSet rs = (...) try
我是一名优秀的程序员,十分优秀!