昨天上课主要修改了ATM机。但也讲了一些东西-----内部类。1.内部类 2.静态内部类 3.局部内部类 4.匿名局部内部类
东西看着不难,但是实际应用时我感觉有点难。修改atm主要修改DAHelper,BankDao这两个类。创建一个借口Wapper,然后把DAHelper修改成泛型,虽然老师说了DAHelper<T>是泛型,但是他没有讲的很清楚,导致我有点懵。上代码
1.借口
public interface Wapper<T> {
public T wapper(ResultSet set) throws SQLException;
}
2.DBHelper<T>,我只上一个方法的代码,因为就这个有含量。
public T queryOne(String sql,Wapper<T> wapper,Object... args){//传入三个参数,第二个是实现
Connection connection=null; //Wapper借口的类
PreparedStatement state=null;
ResultSet set= null;
T account=null;
try {
connection=getConnection();
state=connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
state.setObject(i+1, args[i]);
}
set=state.executeQuery();
if (set.next()) {
account=wapper.wapper(set);//调用实现Wapper借口的类的方法wapper(set),返回
} //一个Account对象
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close(set,connection,state);
}
return account;
}
3.BankDao类
public Account checkAccountByName(String name) {
String sql="select id,`name`,`password`,money,isActive from bank where `name`=?";
return helper.queryOne(sql, new UserWapper(), name);//new UserWapper()是实现Wapper的类
}
public class UserWapper implements Wapper<Account>{//该类有个方法,根据传入的ResultSert返回
//一个Account对象
@Override
public Account wapper(ResultSet set) throws SQLException {
Account account=new Account();
account.setId(set.getInt("id"));
account.setName(set.getString("name"));
account.setPassword(set.getString("password"));
account.setMoney(set.getFloat("money"));
account.setActive(set.getBoolean("isActive"));
return account;
}
}
最后上图