新手求助——关于数据类型

qq250944081 2011-05-06 05:02:43
dao里面:
public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {

public List getUsers() {
String sql = "select * from user";
return getJdbcTemplate().queryForList(sql);
}

}
service里面:
public void saveToSmzxData() {
List users = userDao.getUsers();
for (int i = 0 ; i < users.size() ; i++) {
System.out.println(users.get(i));
}
}
运行结果是:
{id=1, email=flower0@pk.com, passwd=flower, nickname=flower0, regtime=2010-12-16, keyid=null, islogin=null}
{id=2, email=flower1@pk.com, passwd=flower, nickname=flower1, regtime=2010-12-16, keyid=null, islogin=null}
{id=3, email=flower2@pk.com, passwd=flower, nickname=flower2, regtime=2010-12-16, keyid=null, islogin=null}
想知道要怎样取得各属性的值呀?users.get(i)后面至于getClass(),没有getId(),getEmail()这些方法呀.....
...全文
501 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihui157 2011-05-06
  • 打赏
  • 举报
回复
另外我把判断的写在for循环里了,应该是先判断list是否有集合,然后for循环,这么个意思,你可以修改一下试试
lihui157 2011-05-06
  • 打赏
  • 举报
回复
是写错了,少些了个i++
lihui157 2011-05-06
  • 打赏
  • 举报
回复
getJdbcTemplate().queryForList(sql,null,User.class);
这个没尝试过,只是这么封装的话,你不好确定字段类型与User.class中属性的自动对应,应该会有个规定。具体你可以查一下百度。
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lihui157 的回复:]

public List getUsers() {
String sql = "select * from user";
List list = getJdbcTemplate().queryForList(sql,null,User.class);
List list2 = new ArrayList();
for(list!=null&&list.size()>0){
……
[/Quote]
for循环是不是写错了....谢谢了 看到希望了试试
lihui157 2011-05-06
  • 打赏
  • 举报
回复
public List getUsers() {
String sql = "select * from user";
List list = getJdbcTemplate().queryForList(sql,null,User.class);
List list2 = new ArrayList();
for(list!=null&&list.size()>0){
User user = new User();
user.setId(list.get(i).getInt('id'));
......
list2.add(user);
}
return list2;
}
这个作用主要用于封装成User的list集合,在调用的时候提供方便,如果你用hibernate,就不会这么麻烦,它会直接封装成user对象集合。
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lihui157 的回复:]

你的原始输出结果,不就是个Map嘛
{id=1, email=flower0@pk.com, passwd=flower, nickname=flower0, regtime=2010-12-16, keyid=null, islogin=null}
[/Quote]
是map但取不出来呀 怎么取出来呀
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lihui157 的回复:]

这里返回的虽然是个List,但你如果不封装,那就只是个map形式的List,必须封装在User类中,你才能在解封的时候直接用User来调用。引用 5 楼 qq250944081 的回复:
引用 2 楼 lihui157 的回复:

getUsers()这个方法里,需要把查询结果封装在User对象中,返回一个User的List集合,这样才会有getId() getEmail()的

qu……
[/Quote]
public List getUsers() {
String sql = "select * from user";
return getJdbcTemplate().queryForList(sql,null,User.class);
}
dao里面是不是改成这样就封装成User了? 但这样又报错了....
org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 7

谁给看看 怎么改才好呀 先谢谢各位了
lihui157 2011-05-06
  • 打赏
  • 举报
回复
你的原始输出结果,不就是个Map嘛
{id=1, email=flower0@pk.com, passwd=flower, nickname=flower0, regtime=2010-12-16, keyid=null, islogin=null}
lihui157 2011-05-06
  • 打赏
  • 举报
回复
这里返回的虽然是个List,但你如果不封装,那就只是个map形式的List,必须封装在User类中,你才能在解封的时候直接用User来调用。[Quote=引用 5 楼 qq250944081 的回复:]
引用 2 楼 lihui157 的回复:

getUsers()这个方法里,需要把查询结果封装在User对象中,返回一个User的List集合,这样才会有getId() getEmail()的

query 返回的不就是个List吗?不是自动封装了吗? 而且我打印出来的看样子也是在List里面呀,只是不知取单个值该如何取....
[/Quote]
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lihui157 的回复:]

需要看你getUsers()这个里面的逻辑代码是否有封装到User
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.yk.po.User
这个意味着类型不同。
[/Quote]
getUsers()里面的代码一开始已经发了,能看出啥毛病吗? 急死人了
lihui157 2011-05-06
  • 打赏
  • 举报
回复
需要看你getUsers()这个里面的逻辑代码是否有封装到User
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.yk.po.User
这个意味着类型不同。
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zn85600301 的回复:]

既然就是List
就用for循环就行了

for(int i = 0 ; i < users.size() ; i++){
User user = (User) users.get(i) ;
System.out.println(user.getName() );
System.out.pri……
[/Quote]
不行呀,还是那个ClassCastException异常,不是没有值什么的异常 是User user = (user)users。get(i)转换异常,娘的弄一下午了 ,气死了!!!!
zn85600301 2011-05-06
  • 打赏
  • 举报
回复
在执行for循环前 加上if(users.size()>0)这样可以避免异常发生
zn85600301 2011-05-06
  • 打赏
  • 举报
回复
既然就是List
就用for循环就行了

for(int i = 0 ; i < users.size() ; i++){
User user = (User) users.get(i) ;
System.out.println(user.getName() );
System.out.println(user.getEmail() );
}
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lihui157 的回复:]

getUsers()这个方法里,需要把查询结果封装在User对象中,返回一个User的List集合,这样才会有getId() getEmail()的
[/Quote]
query 返回的不就是个List吗?不是自动封装了吗? 而且我打印出来的看样子也是在List里面呀,只是不知取单个值该如何取....
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ylz2007 的回复:]

Iterator it = users.iterator();
if(it.hasNext()){
Map user = (Map)it.next();
String id=user.get("id").toString();
-----
}
[/Quote]
这个我试了 虽然没出错但没有结果....不知道为啥,我又改了下
Iterator it = users.iterator();
if(it.hasNext()){
User user = (User)it.next();
String id=user.getEmail();
}
报错了.....
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.yk.po.User
at com.yk.service.impl.UserServiceImpl.saveToSmzxData(UserServiceImpl.java:42)
at test.Test1.test1(Test1.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

到底该咋写呀 po类名是User
qq250944081 2011-05-06
  • 打赏
  • 举报
回复
谢谢各位了 ,前面两位的我先试下 哈!先谢了
lihui157 2011-05-06
  • 打赏
  • 举报
回复
getUsers()这个方法里,需要把查询结果封装在User对象中,返回一个User的List集合,这样才会有getId() getEmail()的
  • 打赏
  • 举报
回复
Iterator it = users.iterator();
if(it.hasNext()){
Map user = (Map)it.next();
String id=user.get("id").toString();
-----
}

23,406

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧