小弟在做一个struts和ibatis小例子的时候,碰到类转型的问题,代码如下:
public ActionForward viewAll(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
logger.debug("viewAll User!!!");
List userlist = us.getAllUser();
request.setAttribute("allUser", userlist);for(Iterator it = userlist.iterator();it.hasNext();){
User user = (User)it.next();
}
}
当执行到User user = (User)it.next();时,总提示类型转换错误。User类是一个实体类,通过这个方法,打算返回数据库中所有的用户。
望大家帮帮我!
public ActionForward viewAll(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
logger.debug("viewAll User!!!");
List userlist = us.getAllUser();
request.setAttribute("allUser", userlist);for(Iterator it = userlist.iterator();it.hasNext();){
User user = (User)it.next();
}
}
当执行到User user = (User)it.next();时,总提示类型转换错误。User类是一个实体类,通过这个方法,打算返回数据库中所有的用户。
望大家帮帮我!
<select id="getAll" resultClass="java.util.List">
select usernum, username, userbrno from cr_user
</select>
自己再顶一下!
list.get(数据表对应的字段)
,我在Hibernate里面也遇到过类似的问题,
select usernum, username, userbrno from cr_user
你的usernum, username, userbrno 是User类的所有数据成员吗?
System.out.println(o.getClass().getName());
public class User implements Serializable{ private String usernum;
private String username;
private String userbrno; public User(String usernum, String usrname, String userbrno){
this.usernum = usernum;
this.username = username;
this.userbrno = userbrno;
} public void setUsernum(String usernum){
this.usernum = usernum;
}
public String getUsernum(){
return usernum;
} public void setUsername(String username){
this.username = username;
}
public String getUsername(){
return username;
} public void setUserbrno(String userbrno){
this.userbrno = userbrno;
}
public String getUserbrno(){
return userbrno;
}}
list.get(数据表对应的字段)
不是都告诉过你怎么做了吗
for(Iterator it = userlist.iterator();it.hasNext();){
Object[] row = (Object[])it.next();
String usernum = (String)row[0];
String username = (String)row[1];
String userbrno = (String)row[2]; System.out.println(usernum + username + userbrno);
}
而且我做另一个例子
accountlist = sqlMap.queryForList("getAll", null);
for(Iterator it = accountlist.iterator();it.hasNext();){
Account a2 = (Account)it.next();
System.out.println("---"+a2.getUsername());
System.out.println("--name-"+a2.getPassword());
}
是可以的,其中
<select id="getAll" resultClass="example.Account">
select * from Account
</select>
不知道这你又如何解释?
for(Iterator it = userlist.iterator();it.hasNext();){
Map map = new HashMap();
map = (Map)it.next();
}然好再把map转换成你要的那个东东
select usernum, username, userbrno from cr_user
</select>
楼主这样写,还不出现错误,我真是有点惊讶了
<select id="getAll" parameterClass="java.lang.String" resultClass="package.User">
select usernum, username, userbrno from cr_user
</select>
select usernum, username, userbrno from cr_user
</select>
同你自己写的办法改啊!上面写的方法在hibernate中是能用的,但是ibatis我没有试过,sorry^_^!
这个地方的写法错误
resultClass是结果返回的类型
你写的是list
list怎么可能转为user
需要在配置文件中写resultmaping
好久没用了
反正写resultmaping最保险了
<select id="getAll" resultClass="java.util.List">
select usernum, username, userbrno from cr_user
</select>------>
<typeAlias alias="user" type="yourpackage.User"/>
<resultMap id="userResult" class="user">
<result column="USER_NUM" property="usernum" />
....
....
....
....("...."处按照你的JAVABEAN和数据库字段匹配写好)
</resultMap>
<select id="getAll" resultMap="userResult">
select usernum, username, userbrno from cr_user
</select>
这样应该就可以了。