因爲期末考的原因一直沒時間看DAO這一塊的視頻,所以JSP中從el表達式之後就跟不上了,昨天剛考完期末考。終於有些時間來整這玩意了,要乘課程設計這段時間把前面落下的JAVA內容都補回來,加油吧。
概念:
DAO(數據訪問對象),到數據庫存取數據的對象
通常的包名:dao
感想:
DAO其實就是簡化了JDBC的代碼,讓JSP頁面上看起來更簡潔,但是爲了一張表需要封裝至少三個類(UserInfoDao類,DbUtil類,UserInfo類),而且每張表的三個類都不一樣,真的還蠻辛苦的,並沒有簡化多少操作,不知道值不值得。總之先學下去,後面可能會發現別的東西,未完待續
代碼全部
public class UserInfoDao{//extends DbUtil
//不建議使用繼承實現,會讓DAO對DbUtil類產生強依賴(強耦合)
private DbUtil db = new DbUtil();//JDBC的封裝類對象
//通過屬性的方式,使用接口變成可以降低對DbUtil的依賴
//還需要通過set方法配合。或者通過構造函數配合
//這一過程叫作解耦合
//set方法配合
public void setDb(DbUtil db){
this.db=db;
}
//不帶參數的構造方法
public UserInfoDao(){
this.db=new DbUtil();
this.db.setDatabaseName("chatroomsystem");
}
//帶參數的構造方法
public UserInfoDao(DbUtil db){
this.setDb(db);
}
//新增方法
//新增操作,需要的參數其實是表中每個字段的數據
public boolean add(UserInfo userInfo){
return false;
}
//刪除方法
public boolean remove(UserInfo userInfo){
return this.remove(userInfo.getUserId());
}
public boolean remove(int pkId){
return false;
}
//修改方法
public boolean merge(UserInfo userInfo){
return false;
}
//查詢方法
//1.根據主鍵ID
public UserInfo findById(int pkId){
return null;
}
//2.查全部
public List<UserInfo> findAll(){
List<UserInfo> List=new ArrayList<UserInfo>();
//構建查詢語句
StringBuffer sb=new StringBuffer();
sb.append("select u_id,u_pwd,u_name,u_pwd,u_nick,u_img,u_email,");
sb.append("u_phone,u_card_id,u_register_time,u_state,u_remark");
sb.append("from tb_user_info;");
return list;
try{
//執行查詢語句
ResultSet rs=this.db.doQuery(sb.toString());
//封裝結果
return this.buildList(rs);
}catch(SQLException){
e.printStackTrace();
}
}
//3.根據條件查
public List<UserInfo> findByExample(UserInfo userInfo){
List<UserInfo> List=new ArrayList<UserInfo>();
return list;
}
//4.根據SQL查
public List<UserInfo> findBySQL(String sql,Object... params){
List<UserInfo> List=new ArrayList<UserInfo>();
try{
ResultSet rs = this.db.doQuery(sql,params);
return this.buildList(rs);
}catch(SQLException e){
e.printStackTrace();
}
return null;
}
public UserInfo builtObject(ResultSet rs) throws SQLException{
//將一行數據封裝成一個實體對象
UserInfo userInfo=new UserInfo();
userInfo.setUserId(rs.getInt("u_id"));
userInfo.setUserName(rs.getString("u_name"));
userInfo.setUserPwd(rs.getString("u_pwd"));
userInfo.setUserNick(rs.getString("u_nick"));
userInfo.setUserImg(rs.getString("u_img"));
userInfo.setUserEmail(rs.getString("u_email"));
userInfo.setUserPhone(rs.getString("u_phone"));
userInfo.setUserCardId(rs.getString("u_card_id"));
userInfo.setUserRegisterTime(rs.getDate("u_register_time"));
userInfo.setUserState(rs.getBoolean("u_state"));
userInfo.setUserRemark(rs.getString("u_remark"));
return userInfo;
}
public List<UserInfo> buildList(ResultSet rs) throws SQLException{
List<UserInfo> list = new ArrayList<UserInfo>();
rs.beforeFirst();
while(rs.next(){
list.add(this.buildObject(rs));
}
return list;
}
}