首先我有两个字符串:注册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如何分割
答案 0 :(得分:2)
您已将值作为查询中的单独实体。您必须提出这个问题,因为您坚持要将这些值加入String
,并将其作为List
返回。
companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId"));
我认为更好的解决方案是创建某种对象,将值作为单独的数据成员,并返回List
个实例而不是String
。
你正在使用Hibernate。这是一个ORM解决方案 - 对象关系映射。你的对象在哪里?我要么放弃Hibernate,要么开始编写对象。您在发布的代码中没有太多受益。
String
对任何事物都不是一个好的抽象。它只不过是原始的。如果您开始考虑对象而不是基元,那么您将编写更好的代码。
这是该模型对象的开始:
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(",");
你必须找出身份证的位置。
如果您忘记了逗号,就像您在第一次查询后所做的那样,这将无效。我认为这是一个错字。
我也推荐StringBuilder
。