今天在学习的时候,实现一个练习:定义一个方法,获取数据库表中的数据,将其封装为对象,并装在到集合里;代码如下
public class JDBCDemo3 {
public static void main(String[] args) {
List<eMP> list = new JDBCDemo3().findAll();
System.out.println(list);
JDBCDemo3 jd = new JDBCDemo3();
List<eMP> all = jd.findAll();
}
public List<eMP> findAll(){
Connection conn = null;
Statement stat =null;
ResultSet rs = null;
List<eMP> list = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///eess_mybatis","root","root");
String sql = "select * from user";
stat = conn.createStatement();
rs = stat.executeQuery(sql);
eMP emp = null;
list =new ArrayList<>();
while (rs.next()){
String username = rs.getString("username");
Date birthday = rs.getDate("birthday");
String sex = rs.getString("sex");
String address = rs.getString("address");
emp=new eMP();
emp.setUsername(username);
emp.setBirthday(birthday);
emp.setSex(sex);
emp.setAddress(address);
// System.out.println(username+birthday+sex+address);
list.add(emp);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
//为了避免空指针异常
if (rs==null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stat==null){
try {
stat.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn==null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
return list;
}
}
因为findAll方法是静态的需要获取对象,基本格式应该是创建类对象,然后调用类方法:
JDBCDemo3 jd = new JDBCDemo3();
List<eMP> all = jd.findAll();
简写后是:
List<eMP> list = new JDBCDemo3().findAll();
这两种方式是等价的,还思考了一会以为是新的创建对象的方法。。。。。。