0

struts2 と hibernate を使用してログイン アプリケーションを作成しました。ログインテーブルからログインの詳細を取得し、hibernate dao クラスのリストに保存します。そのリストはlogin_actionクラスに渡されます。アクションクラスでは、値を取得するためにイテレータを使用していますが、daoクラスの配列リストにデータベース値(オブジェクトではない)を格納したいです。daoクラスの配列リストに値(例:david、103)を格納する方法

public class DAOClass {
    ...
    public List getPwd(LoginModel lm) {
        Session session=null;
        List pwdlist = null;
        session = sessionfactory.openSession(); 
        try {
            Query q=session.createQuery("from LoginModel l where UId='"+lm.getUname()+"'");
            pwdlist=q.list();
        } catch (Exception e){
            e.printStackTrace();
        } 

        return pwdlist;
    }
}
4

1 に答える 1

0

すべての列ではなく、特定の列のみを選択できます。

List<Object[]> list = session.createQuery("select column1, column2 from LoginModel l where UId='"+lm.getUname()+"'");

オブジェクト配列 wherecolumn1 -> array[0]およびのリストを返しますcolumn2 -> array[1]。このクエリは、データベースから特定の列のみを取得するため、少し高速です。ただし、値を取得するにはコレクションを反復処理する必要があります。

ところで、setParameterメソッドを使用して、名前付きクエリ パラメータに値をバインドします。を使用setParameterすると、SQL インジェクションを防ぐことができます。

List<Object[]> list = session.createQuery("select column1, column2 from LoginModel l where UId=:uid").setParameter("uid", lm.getUname());
于 2012-12-05T15:55:20.730 に答える