大家好.请问一下怎么样把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我要怎么做.谢谢.

解决方案 »

  1.   


    MAP里的数据是你自己存的,还是从别的地方抓过来的。如果自己存的话,建议你照楼上说的,换个方式存。如果是去解析数据的话,可以遍历。
      

  2.   

    不知道这个做什么用的遍历 set呗
      

  3.   

    是这样的.这些数据从数据库里取出来的.
    数据库有张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对象.
      

  4.   


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

  5.   

    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;
    }

    }
      

  6.   

     
    BeanUtils.populate(bean,map);
     
    请问这是什么意思.需要第三方的架包吗?
    能不能详细说明一下.谢谢.
      

  7.   

    上面的是一个工具类,在JSP/SERVLET核心编程中有源代码!
      

  8.   

    用框架了吗?如果没用hibernate等框架 一般都会把从数据库得到的数据封装成数组。
    例如
    table tb[][] = XXX;//{{张三,111},{李四,222},....}
    这种形式封装;
    对数组循环。可以得到属性Bean;             
      

  9.   

    直说了吧,没有用框架.我用的是jsp+servlet,我想做的事对查询功能进行个封装.
      

  10.   

    不明白为什么你要这样定义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);
    }
      

  11.   


    请问一下,为什么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'(这样也是升序).
    请问是什么原因,谢谢.
      

  12.   


    还请问一点.数据库(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'(这样也是升序).
    请问是什么原因,谢谢.
      

  13.   

    BeanUtils,在Apache的Commons项目里有。
      

  14.   


    因为你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 这样写都可以,没有降序。
      

  15.   


    循环每个map的key
    然后,beanutils里面有一个操作bean的函数,
    意思是按照名字调用“setXXX”方法,然后可以有参数lz自己去查查api吧。good luck