-1

まず、登録 ID とユーザー名の 2 つの文字列があります。これらの 2 つの文字列は連結されます。

ユーザー名は同じでも登録IDが異なる場合があるため、2つの文字列を連結する理由

私はこのコードを持っています:

public ArrayList getStudentUser(int check,int userid,int mgmtid)
{
    ArrayList companyList = new ArrayList();
    Session session = null;
    PreparedStatement pst = null;
    ResultSet rst = null;
    try {
    session = HibernateUtil.getSession();
    if(check==1){
        String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID  where a. RoleId=5 and  SourceId=? and a.User_ID not in (?)";
        pst = session.connection().prepareStatement(query);
        pst.setInt(1, mgmtid);
        pst.setInt(2, userid);
        rst = pst.executeQuery();
        while(rst.next()) {
            companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId"));
        }
    } else {
        String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID  where a. RoleId=5 and  SourceId=? and a.User_ID not in (?)";
        pst = session.connection().prepareStatement(query);
        pst.setInt(1, mgmtid);
        pst.setInt(2, userid);
        rst = pst.executeQuery();
        while(rst.next()) {
            companyList.add(rst.getString("RegistarionId")+","+(rst.getString("firstname"))+""+rst.getString("lastName"));
        }   
    }
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    return companyList;
}

public boolean checkIfNumber(String in) {
      try {
          Integer.parseInt(in);
      } catch (NumberFormatException ex) {
          return false;
      }
      return true; 
}

連結文字列getStudentUserを取得しますが、登録IDのみが必要です分割方法

4

1 に答える 1

2

クエリとは別のエンティティとして値が既にあります。Stringこれらの値を取得して に連結し、 として返すことを主張したため、この質問をする必要がありListます。

companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId"));

より良い解決策は、何らかのオブジェクトを作成し、値を個別のデータ メンバーとして配置し、 のList代わりにそれらのインスタンスのを返すことだと思いますString

休止状態を使用しています。これは ORM ソリューション - オブジェクト リレーショナル マッピングです。オブジェクトはどこにありますか? Hibernate を捨てるか、オブジェクトの作成を開始します。投稿したコードではあまりメリットがありません。

AStringは何に対しても良い抽象化ではありません。それは原始的なものにすぎません。プリミティブではなくオブジェクトの観点から考え始めると、より良いコードを記述できます。

そのモデル オブジェクトの開始点は次のとおりです。

package model;

public class Student {
    private Long id;
    private String firstName;
    private String lastName;
    // Add the rest
}

そしてDAO:

package persistence;

public interface StudentDao {
    List<Student> find();
    Student find(Long id);
    List<Student> find(String lastName);
}

ただし、必要に応じて、split()関数を使用してカンマ区切りの文字列を分割します。

String [] tokens = result.split(",");

IDがどこにあるかを把握する必要があります。

最初のクエリの後に行ったように、コンマを忘れた場合、これは機能しません。タイプミスだと思います。

そこもおすすめStringBuilderです。

于 2013-06-13T10:13:25.780 に答える