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 を使用して「Login」クラスの別のインスタンスとしてクエリを返し、オブジェクトを比較します。

データベース接続を定義するには 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 に答える