iBatis - 加载对象列表
iBatis - load list of objects
我是 iBatis 的新手(今天开始),我正在尝试查询我的数据库以获取对象列表(返回单个对象和值工作得很好)。
我正在学习 THIS 教程(几乎没有修改 - 我的 类 有不同的名称)。你能告诉我在这种情况下我做错了什么吗?
这是我获取用户列表的映射:
<!-- Retrieve all users -->
<select id="getAll" resultClass="wa.myslima.refman.entities.User">
SELECT * FROM USER
</select>
调用时
rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
users = (List<User>) smc.queryForList("User.getAll", null);
我得到以下异常:
--- The error occurred in User.xml.
--- The error occurred while applying a result map.
--- Check the User.getAll-AutoResultMap.
--- The error occured while instantiating the result object
--- Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class. Cause: java.lang.InstantiationException: wa.myslima.refman.entities.User
在其他一些教程中,他们使用了一些额外的映射,所以我也尝试了这种方法但没有成功:
<resultMap id="UserResult" class="wa.myslima.entities.User">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
</resultMap>
<select id="getAll" resultMap="UserResult">
select * from USER
</select>
感谢您提供任何提示。这可能是一些愚蠢的错误,比如打字错误,但我仍然看不透...
编辑:User.java
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1456239434165308496L;
private int id;
private String name;
private String password;
private String email;
public User(String name, String password, String email) {
this.name = name;
this.password = password;
this.email = email;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
}
您的用户 class 中需要一个默认构造函数。所以像这样定义它:
public User() {}
Ibatis 将使用此构造函数创建新用户。
我是 iBatis 的新手(今天开始),我正在尝试查询我的数据库以获取对象列表(返回单个对象和值工作得很好)。
我正在学习 THIS 教程(几乎没有修改 - 我的 类 有不同的名称)。你能告诉我在这种情况下我做错了什么吗?
这是我获取用户列表的映射:
<!-- Retrieve all users -->
<select id="getAll" resultClass="wa.myslima.refman.entities.User">
SELECT * FROM USER
</select>
调用时
rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
users = (List<User>) smc.queryForList("User.getAll", null);
我得到以下异常:
--- The error occurred in User.xml.
--- The error occurred while applying a result map.
--- Check the User.getAll-AutoResultMap.
--- The error occured while instantiating the result object
--- Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class. Cause: java.lang.InstantiationException: wa.myslima.refman.entities.User
在其他一些教程中,他们使用了一些额外的映射,所以我也尝试了这种方法但没有成功:
<resultMap id="UserResult" class="wa.myslima.entities.User">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
</resultMap>
<select id="getAll" resultMap="UserResult">
select * from USER
</select>
感谢您提供任何提示。这可能是一些愚蠢的错误,比如打字错误,但我仍然看不透...
编辑:User.java
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1456239434165308496L;
private int id;
private String name;
private String password;
private String email;
public User(String name, String password, String email) {
this.name = name;
this.password = password;
this.email = email;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
}
您的用户 class 中需要一个默认构造函数。所以像这样定义它:
public User() {}
Ibatis 将使用此构造函数创建新用户。