0

我是使用 Spring MVC 3.0 的新手。我正在编写一个自定义身份验证类,我想知道如何将 SQL 查询中的值提取到变量中?这是我要实现的目标的示例,并且省略了我要询问的一些代码;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.log4j.Logger;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.crimetrack.DAO.LoginDAO;
import com.crimetrack.business.Login;

public class JdbcLoginDAO extends JdbcDaoSupport implements LoginDAO {

    private final Logger logger = Logger.getLogger(getClass()); 
    String dbUserName;
    String dbPassword;

    public boolean AuthenticateUser(Login login) {
        logger.debug("Authenticating User");

        String sql = "SELECT userName, password FROM tblofficers WHERE userName = :userName AND password = :password ";

        //code for parameters : userName and password using login.getPassword() and login.getUsername()
        //and code to get vaules out from query for comparison


        if (dbUserName == login.getUserName()) {

            if (dbPassword == login.getPassword()){
                return true;
            }
        }

        return false;

    }


    public static class LoginMapper implements ParameterizedRowMapper<Login>{

         public Login mapRow(ResultSet rs, int rowNum) throws SQLException {
                Login dbLogin = new Login();
                dbLogin.setUserName(rs.getString("userName"));
                dbLogin.setPassword(rs.getString("password"));
                return dbLogin;
            }       
    }

}
4

1 回答 1

2

使用 JDBCTemplate 和 BeanPropertyRowMapper 将查询作为“登录”类的另一个实例返回,然后比较对象。

您必须查看 JDBCTemplate 来定义数据库连接,但最终看起来像:

UserLogin authenticLogin = (UserLogin) db_connection.queryForObject(sql, new BeanPropertyRowMapper(UserLogin.class));

if (userLogin.getPassword() == authenticLogin.getPassword()) {
    return true
}

基本上,BeanPropertRowMapper 将创建一个类的新实例,设置与查询返回的列同名的任何属性。

于 2012-11-02T13:07:03.390 回答