-1

首先,我有两个字符串:注册 ID 和用户名。这两个字符串是连接在一起的。

为什么连接两个字符串,因为有时用户名相同但注册ID不同所以

我有这个代码:

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

您已经将值作为查询中的单独实体。您必须问这个问题,因为您坚持采用这些值,将它们连接到 aString中,然后将它们作为 a 返回List

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

我认为更好的解决方案是创建某种对象,将值作为单独的数据成员,并返回List这些实例中的 a 而不是 a 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 回答