关于MAP和JAVABEAN的问题

山城忙碌人 2010-02-06 06:25:09
大家好.请问一下怎么样把MAP里的值赋给一JAVABEAN对象.具体如下:
如 Map map = new HashMap();
map.put('username','张三');
map.put('password','12345');
map.put('username1','李四');
map.put('password1','123');
map.put('username2','王五);
map.put('password2','123123');

另外有一个User对象.它有username,password现个属性
现在我想把map里的值赋给这个javabean我要怎么做.谢谢.
...全文
268 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2010-02-09
  • 打赏
  • 举报
回复
引用 15 楼 bisubisu 的回复:
引用 14 楼 chdw 的回复:不明白为什么你要这样定义map,正常来说都应该是使用 map.put(username,


因为你put到map里面的是两样东西,一个是username一个是密码,实际上size() / 2才是真正的用户数


("username"+ (i==0?"" : (""+ i)) 是因为我要拼出username username1 username2这样后面是三元表达式
或者你可以写成
if(i == 0)
userName = "username";
else
userName = "username" + i;



select * from table order by id desc(这样是降序查询,没有错.)
select * from table order by 'id' desc(加上引号就变成升序了,请问为什么)
select * from table order by id(这样是升序),
select * from table order by 'id'(这样也是升序).

加上''表示的是字符串的,根本与字段没有任何关系

select * from table order by 'XXYYCC' desc 这样写都可以,没有降序。
weihthchk 2010-02-09
  • 打赏
  • 举报
回复
BeanUtils,在Apache的Commons项目里有。
山城忙碌人 2010-02-09
  • 打赏
  • 举报
回复

还请问一点.数据库(MYSQL)里.group by 分组的问题.
group by分组的时候是不是把相同的都放在一个组?
为什么分组后查询出来的却是分组后第一条记录,而不是所有?谢谢;
还有order by 的时候,//(注ID,是PK)
select * from table order by id desc(这样是降序查询,没有错.)
select * from table order by 'id' desc(加上引号就变成升序了,请问为什么)
select * from table order by id(这样是升序),
select * from table order by 'id'(这样也是升序).
请问是什么原因,谢谢.
山城忙碌人 2010-02-09
  • 打赏
  • 举报
回复
引用 14 楼 chdw 的回复:
不明白为什么你要这样定义map,正常来说都应该是使用
map.put(username, password)

才是正常的做法,你那种写法非常奇怪。

如果一定要这样写
你就遍历所有
Java codefor(int i=0; i< map.size()/2; i++) {
String key1="username"+ (i==0?"" : (""+ i));
String key2="password"+ (i==0?"" : (""+ i));
String userName= map.get(key1);
String password= map.get(key2);
User u=new User(userName, password);
list.add(u);
}


请问一下,为什么MAP和长度要/2,("username"+ (i==0?"" : (""+ i)),请问一下,这是什么意思.能不能有其它的写法.
还请问一点.数据库(MYSQL)里.group by 分组的问题.
group by分组的时候是不是会把key相同的都放在一个组?
为什么查询出来的却是第一条记录,而不是所有?谢谢;
还有order by 的时候,//(注ID,是PK)
select * from table order by id desc(这样是降序查询,没有错.)
select * from table order by 'id' desc(加上引号就变成升序了,请问为什么)
select * from table order by id(这样是升序),
select * from table order by 'id'(这样也是升序).
请问是什么原因,谢谢.
ChDw 2010-02-09
  • 打赏
  • 举报
回复
不明白为什么你要这样定义map,正常来说都应该是使用
map.put(username, password)

才是正常的做法,你那种写法非常奇怪。

如果一定要这样写
你就遍历所有
for(int i = 0; i < map.size() / 2; i++) {
String key1 = "username" + (i == 0 ? "" : ("" + i));
String key2 = "password" + (i == 0 ? "" : ("" + i));
String userName = map.get(key1);
String password = map.get(key2);
User u = new User(userName, password);
list.add(u);
}
山城忙碌人 2010-02-09
  • 打赏
  • 举报
回复
引用 11 楼 high_land 的回复:
用框架了吗?如果没用hibernate等框架 一般都会把从数据库得到的数据封装成数组。
例如
table tb[][] = XXX;//{{张三,111},{李四,222},....}
这种形式封装;
对数组循环。可以得到属性Bean;

           

直说了吧,没有用框架.我用的是jsp+servlet,我想做的事对查询功能进行个封装.
high_land 2010-02-09
  • 打赏
  • 举报
回复
引用 6 楼 doniks 的回复:
引用 5 楼 bisubisu 的回复:
是这样的.这些数据从数据库里取出来的.
数据库有张user表.user表里有username,password这两个属性.我把它取出来后放入一个MAP里.
取出来的效果是:
map.put('username','张三');
map.put('password','12345');
这是取出来后的结果.至于下面
map.put('username','李四');
map.put('password','123');
map.put('username','王五);
map.put('password','123123');
这些其实是取出来的另外两行数据.现在不看下面二行.
我想请问的是我怎么样才能把取出来的key和value
'username','张三'
'password','12345'
赋给一个User对象.

应该这样存
map.put('张三','12345');
map.put('李四','123');
map.put('王五','123123');
取key为张三的话,就会取到value为12345

没有考虑重名情况,所有不能用这种方式。
high_land 2010-02-09
  • 打赏
  • 举报
回复
用框架了吗?如果没用hibernate等框架 一般都会把从数据库得到的数据封装成数组。
例如
table tb[][] = XXX;//{{张三,111},{李四,222},....}
这种形式封装;
对数组循环。可以得到属性Bean;

存在666 2010-02-09
  • 打赏
  • 举报
回复
上面的是一个工具类,在JSP/SERVLET核心编程中有源代码!
山城忙碌人 2010-02-09
  • 打赏
  • 举报
回复

BeanUtils.populate(bean,map);

请问这是什么意思.需要第三方的架包吗?
能不能详细说明一下.谢谢.
villagehead 2010-02-09
  • 打赏
  • 举报
回复
引用 17 楼 weihthchk 的回复:
BeanUtils,在Apache的Commons项目里有。


循环每个map的key
然后,beanutils里面有一个操作bean的函数,
意思是按照名字调用“setXXX”方法,然后可以有参数

lz自己去查查api吧。

good luck
TodayyadoT 2010-02-08
  • 打赏
  • 举报
回复
BeanUtils.populate(bean,map);
dom72 2010-02-08
  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class MapToBean {
public List<UserBean> mapToBean(Map<String,String> users) {
List<UserBean> lstUser = new ArrayList<UserBean>();

for(int i = 0; i < users.size()/2; i++) {
UserBean user = new UserBean();
String strI = (i == 0 ?"":i+"");
user.setUsername(users.get("username"+strI));
user.setPassword(users.get("password"+strI));
lstUser.add(user);
}
return lstUser;
}
public static void main(String[] args) {
Map<String,String> users = new HashMap<String, String>();
users.put("username", "张三");
users.put("password", "12345");
users.put("username1", "李四");
users.put("password1", "123");
users.put("username2", "王五");
users.put("password2", "123123");
MapToBean mtb = new MapToBean();
List<UserBean> lstUser = mtb.mapToBean(users);
for(UserBean ub: lstUser) {
System.out.println("user:[" + ub.getUsername() + ";" +ub.getPassword()+"]");
}
}
}
class UserBean {

public UserBean(){}
private String username;
private String password;

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}
doniks 2010-02-08
  • 打赏
  • 举报
回复
引用 5 楼 bisubisu 的回复:
是这样的.这些数据从数据库里取出来的.
数据库有张user表.user表里有username,password这两个属性.我把它取出来后放入一个MAP里.
取出来的效果是:
map.put('username','张三');
map.put('password','12345');
这是取出来后的结果.至于下面
map.put('username','李四');
map.put('password','123');
map.put('username','王五);
map.put('password','123123');
这些其实是取出来的另外两行数据.现在不看下面二行.
我想请问的是我怎么样才能把取出来的key和value
'username','张三'
'password','12345'
赋给一个User对象.


应该这样存
map.put('张三','12345');
map.put('李四','123');
map.put('王五','123123');
取key为张三的话,就会取到value为12345
山城忙碌人 2010-02-07
  • 打赏
  • 举报
回复
是这样的.这些数据从数据库里取出来的.
数据库有张user表.user表里有username,password这两个属性.我把它取出来后放入一个MAP里.
取出来的效果是:
map.put('username','张三');
map.put('password','12345');
这是取出来后的结果.至于下面
map.put('username','李四');
map.put('password','123');
map.put('username','王五);
map.put('password','123123');
这些其实是取出来的另外两行数据.现在不看下面二行.
我想请问的是我怎么样才能把取出来的key和value
'username','张三'
'password','12345'
赋给一个User对象.
herozsq 2010-02-06
  • 打赏
  • 举报
回复
不知道这个做什么用的。。。遍历 set呗
mralcor 2010-02-06
  • 打赏
  • 举报
回复
遍历,存数据不要那样存!
yhef 2010-02-06
  • 打赏
  • 举报
回复

MAP里的数据是你自己存的,还是从别的地方抓过来的。

如果自己存的话,建议你照楼上说的,换个方式存。

如果是去解析数据的话,可以遍历。
knightzhuwei 2010-02-06
  • 打赏
  • 举报
回复
不应该这么存

81,092

社区成员

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

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