java如何做一个像数据库那样的对象 数据就存在对象里 但是取时需要按条件取
比如一个User对象
int id;
String name;
String pass;
我需要按ID取一个对象或者对象集合 或者按name取一个对象或者对象集合
用法就和数据库差不多 但是我现在不能用数据库 请问如何写呢?
比如一个User对象
int id;
String name;
String pass;
我需要按ID取一个对象或者对象集合 或者按name取一个对象或者对象集合
用法就和数据库差不多 但是我现在不能用数据库 请问如何写呢?
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;
}
}
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;
}
}
我觉得Java中的集合容器和数组已经够用了。
value只是一个地址,不会进行多一份内存拷贝
pubic List search(String field, Serializable value){}
然后在这里通过不同的字段的值返回不同的列表。