java如何做一个像数据库那样的对象  数据就存在对象里 但是取时需要按条件取
比如一个User对象
int id;
String name;
String pass;
我需要按ID取一个对象或者对象集合  或者按name取一个对象或者对象集合
用法就和数据库差不多  但是我现在不能用数据库  请问如何写呢?

解决方案 »

  1.   

    实体类你可以这样写: 如下package cn.wang.usermanager.entities;import java.io.Serializable;public class User implements Serializable { private static final long serialVersionUID = 710652653888362545L; private Integer id;

    private String name;

    private String password;

    private String sex;

    private String address;

    private String email; public User() {}

    public Integer getId() {
    return id;
    } public void setId(Integer id) {
    this.id = id;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public String getSex() {
    return sex;
    } public void setSex(String sex) {
    this.sex = sex;
    } public String getAddress() {
    return address;
    } public void setAddress(String address) {
    this.address = address;
    } public String getEmail() {
    return email;
    } public void setEmail(String email) {
    this.email = email;
    }
    }对应的数据库应有相应的字段
    然后提供一个接口: 如下package cn.wang.usermanager.managers;import java.util.List;import cn.wang.usermanager.entities.User;public interface UserManager { public void addUser(User user);

    public void deleteUserById(Integer id);

    public void updateUser(User user);

    public User getUserById(Integer id);

    public List<User> getAllUsers();

    public boolean validateUser(String name, String password);

    public String isUserRepeated(String name);
    }最后提供一个接口的实现类: 如下, 在这里我是用的Hibernate框架, 你可以直接用JDBC或者其他框架去实现对数据库的访问操作package cn.wang.usermanager.managers.impls;import java.util.List;import org.hibernate.Query;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import cn.wang.usermanager.entities.User;
    import cn.wang.usermanager.managers.UserManager;public class UserMangerImpl extends HibernateDaoSupport implements UserManager { public UserMangerImpl() {}

    public void deleteUserById(Integer id) {
    User user = (User)this.getHibernateTemplate().get(User.class, id);
    if (user != null) {
    this.getHibernateTemplate().delete(user);
    }
    } @SuppressWarnings("unchecked")
    public List<User> getAllUsers() {
    List<User> users = this.getHibernateTemplate().find("from User");
    return users;
    } public User getUserById(Integer id) {
    User user = (User)this.getHibernateTemplate().get(User.class, id);
    if (user != null) {
    return user;
    }
    return null;
    } public void addUser(User user) {
    if (user != null) {
    this.getHibernateTemplate().merge(user);
    }
    } public void updateUser(User user) {
    this.getHibernateTemplate().update(user);
    }

    public boolean validateUser(String name, String password) {
    boolean isValidate = false;

    String hql = "from User where name=?";
    Query query = this.getSession().createQuery(hql);
    query.setParameter(0, name);
    User user = (User)query.uniqueResult();
    if (user != null) {
    if (user.getPassword().equals(password)) {
    isValidate = true;
    } else {
    isValidate = false;
    }
    } else {
    isValidate = false;
    }
    return isValidate;
    }

    public String isUserRepeated(String name) {
    String message = "";
    String hql = "from User where name=?";
    Query query = this.getSession().createQuery(hql);
    query.setParameter(0, name);
    User user = (User)query.uniqueResult();
    if (user == null) {
    message = "The Username can be used!";
    } else {
    message = "The Username already exist!";
    }
    return message;
    }
    }
      

  2.   

    这个,在c#里面有struct结构体,可以这样的,Java里面还没试过,lz可以试一下struct行不!
      

  3.   

    import java.util.HashMap;
    import java.util.Map;
    public class test3 {

    public static void main(String[] arg)
    {
    Map<Integer,C1> idMap = new HashMap();
    Map<Integer,C1> nameMap = new HashMap();
    Map<Integer,C1> passMap = new HashMap();
    while(.....)
    {
    idMap.put(id, C1);
    nameMap.put(name, C1);
    passMap.put(pass, C1);
    }
    /*
     ................
     可以用Map的get来获取
     */
    }
    }class C1
    {
    int id;
    String name;
    String pass;
    public int getId() {
    return id;
    }
    public String getName() {
    return name;
    }
    public String getPass() {
    return pass;
    }
    public void setId(int id) {
    this.id = id;
    }
    public void setName(String name) {
    this.name = name;
    }
    public void setPass(String pass) {
    this.pass = pass;

    }
      

  4.   

    这个C#中有DataSet(引用:System.data;)可以像数据库一样行列储存,在XML中有用;
    我觉得Java中的集合容器和数组已经够用了。
      

  5.   

    其中Map.put(key,value);
    value只是一个地址,不会进行多一份内存拷贝
      

  6.   

    确认ID是无重复的,用键值对存储,如HashMap,HashTable
      

  7.   

    我感觉你应该做一个搜索接口,接口像这样:
    pubic List search(String field, Serializable value){}
    然后在这里通过不同的字段的值返回不同的列表。