Java 当内部方法或查询为对象类型时,如何获取作为字符串返回的方法?

Java 当内部方法或查询为对象类型时,如何获取作为字符串返回的方法?,java,string,jakarta-ee,jdbc,methods,Java,String,Jakarta Ee,Jdbc,Methods,请帮我用这个方法。 有两种方法作为对象返回,我对存储感到困惑 外字符串方法中if返回语句的输出 public String getLogin(StudentTO sto) { String u = sto.getUsername(); String p = sto.getPassword(); String sql = "select * from studentstable"; Object obj = JdbcTemplate.queryForObject

请帮我用这个方法。 有两种方法作为对象返回,我对存储感到困惑 外字符串方法中if返回语句的输出

public String getLogin(StudentTO sto) {
    String u = sto.getUsername();
    String p = sto.getPassword();

    String sql = "select * from studentstable";

    Object obj = JdbcTemplate.queryForObject(sql, new RowMapper() {
        public Object mapRow(ResultSet rs) throws SQLException {
            rs.beforeFirst();
            while (rs.next()) {
                String userdb=rs.getString("username");
                String passdb=rs.getString("password");
                String roledb=rs.getString("role");
                if(userdb.equals(u) && passdb.equals(p) && roledb.equalsIgnoreCase("admin")) {
                    return "ADMIN";
                } else if(userdb.equals(u) && passdb.equals(p) && roledb.equalsIgnoreCase("user")) {
                    return "USER";
                }
                Object obj=string;
            }
            return obj;
        }
    ///errror i dont know how to call object here or a string
    // commented out line because it is misplaced.
    //return rs;
    });

    StudentTO sto1=(StudentTO)obj;
    System.out.println(sto1);
    return sto1.toString();
}

我希望方法
getLogin()
返回
ADMIN
USER
首先,让我们稍微更改一下
getLogin()
方法:

public String getLogin ( StudentTO sto ) {
    String uName = sto.getUsername();
    String uPass = sto.getPassword();

    String uRole = findUserRole( uName, uPass );

    if( "admin".equals( uRole ) || "user".equals( uRole ) ) {
        return uRole .toUpperCase();
    }

    throw new RuntimeException( "Wrong role!" );
}
这是你的方法的一个更简单的版本

然后,您只需要实现
findUserRole()


希望有帮助。

如果出现错误,您可以
抛出一个新异常。你知道如何在Java中处理异常吗?请阅读所有关于如何设置帖子格式的说明。你的问题的格式真的很奇怪。请问任何人都能给我一个解决方案,让我的问题得到结果吗prblm@MiguelKVidal我知道例外情况你应该用WHERE子句查找,不扫描整个表。JdbcTemplate和queryForObjectit如何?必须使用rowMapper选择数据库您必须使用
JdbcTemplate
rowMapper
public String findUserRole( String name, String pass ){
    String sql = "SELECT * FROM studentstable where username = ?";
    // execute and fetch data
    if( passdb.equals( pass ) {
        return roledb;
    }
    throw new RuntimeException( "User not found or wrong password." );
}