java - 将对象类型声明为 String

标签 java mysql string jdbc

这是我的功能:

private boolean CheckPassword(String type, String login, String passwordHash) {
    EntityManagerFactory entityManagerFactory 
            = Persistence.createEntityManagerFactory("kwestionariuszFor" + type);
    EntityManager entityManager 
            = entityManagerFactory.createEntityManager();
    type = type.substring(0, 1).toUpperCase() + type.substring(1, type.length());
    List<Object> entities 
            = entityManager.createNamedQuery(type + ".findByLogin").setParameter("login", login).getResultList();
    if (passwordHash.equals(entities.get(0).Password)) {
        return true;
    }
    else {
        return false;
    }
}

Java 不“知道”任何表中存在密码列。我想这样的表达方式可能是这样的:

List<type.toClass()>

或者什么...有什么办法可以实现我想要的吗?我不想创建 if、after if、after if...-_-'

最佳答案

您必须为代表数据库表的所有类创建一个通用类型。

像这样:

public abstract class PasswordObject {
    private String password;

    public PasswordObject(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }
}

不知道方法是否createNamedQuery将能够返回 List<PassowrdObject> ,但如果没有,您可以像这样转换它(只要这样做是安全的,这只能通过使用它的方式来判断):

PasswordObject po = (PasswordObject) entities.get(0);
String password = po.getPassword();

关于java - 将对象类型声明为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833915/

相关文章:

java - JTree 延迟加载 展开

php - 如何使用 eloquent 根据数据库关系订购 JSON 响应

php - MYSQL查询特定行

sql - 在 SQL 中提取字符之后和最终句号(/句点)之前的字符串

c++ - 读取 string 的字符时出错。分配内存

Java:如何连续扫描输入?

java - 图片加密,为什么不能解密?

java - 在 GXT 中保存对象状态

php - MongoDB AND & OR 条件中的复杂语句

javascript - 使用正则表达式匹配加入的 AmPm 小时数