結合上一篇筆記,這一篇是關于數據操作的各種邏輯實現,以Message類為例
?
Message類,已簡化
?
package com.ccit.bean; public class Message { private Integer id; private String title; private String content; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
?
dao.inter包 MessageDao接口
?
package com.ccit.dao.inter; import com.ccit.bean.Message; import com.ccit.tools.PageDiv; public interface MessageDao { public boolean add(Message m); public boolean update(Message m); public boolean delete(int id); public Message getMsg(int id); public PageDiv<Message> getAll(int pageNo, int pageSize); .。。。。。 }
?
dao.impl包
?
DaoBase類
package com.ccit.dao.impl; import com.ccit.jdbc.template.JDBCTemplate; public class DaoBase { protected JDBCTemplate template = JDBCTemplate.getJDBCTemplate(); }
?MessageDaoImpl類
package com.ccit.dao.impl; import java.sql.Timestamp; import java.util.List; import com.ccit.bean.Message; import com.ccit.dao.inter.MessageDao; import com.ccit.rowmap.MsgRowMapper; import com.ccit.tools.PageDiv; public class MessageDaoImpl extends DaoBase implements MessageDao { @Override public boolean add(Message m) { boolean flag = false; String sql="insert into t_msg(m_title ,m_content)values(?,?)"; if(this.template.ExecuteUpdate(sql, m.getTitle(),m.getContent(),) > 0) { flag = true; } return flag; } @Override public boolean update(Message m) { boolean flag = false; String sql = "update t_msg set m_title=?,m_content=? where id=?"; if(this.template.ExecuteUpdate(sql, m.getTitle(),m.getContent(),m.getId()) > 0) { flag = true; } return flag; } @Override public boolean delete(int id) { boolean flag = false; String sql="delete from t_msg where id = (?)"; if(this.template.ExecuteUpdate(sql,id)>0){ flag = true; } return flag; } @Override public Message getMsg(int id) { Message m = null; String sql="select * from t_msg where id="+id; m = (Message) this.template.getUniquObject(sql, new MsgRowMapper()); return m; } 。。。。。。 }
?
dao.factory包 DaoFactory類
package com.ccit.dao.factory; import java.io.IOException; import java.util.Properties; import com.ccit.dao.impl.DaoBase; public class DaoFactory { public static DaoBase getDao(String daoName){ DaoBase db = null; Properties p = new Properties(); try { p.load(DaoFactory.class.getResourceAsStream("/dao.properties")); db=(DaoBase)Class.forName(p.getProperty(daoName)).newInstance(); } catch (IOException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return db; } }
?
JDBCTemplate類
請參照另一篇筆記 http://ericblog.iteye.com/blog/1014356
?
MsgRowMapper類
實現RowMapper接口
package com.ccit.rowmap; import java.sql.ResultSet; import java.sql.SQLException; import com.ccit.bean.Message; import com.ccit.dao.inter.RowMapper; public class MsgRowMapper implements RowMapper { @Override public Object RowMap(ResultSet rs) { Message m = new Message(); try { m.setContent(rs.getString("m_content")); m.setId(rs.getInt("id")); m.setTitle(rs.getString("m_title")); } catch (SQLException e) { e.printStackTrace(); } return m; } }
?
RowMapper接口
package com.ccit.dao.inter; import java.sql.ResultSet; public interface RowMapper { /** * 把RS中的當前光標的數據轉換為一個對象 * @param rs * @return */ public Object RowMap(ResultSet rs); }
?
dao.properties配置信息
MessageDao=com.ccit.dao.impl.MessageDaoImpl
?
代碼挺多,跑起來之后更有助于理解。
對Message操作全放在MessageDaoImpl這個類中實現,在調用時通過DaoFactory獲得。impl類將寫好的sql語句及其他參數交給JDBCTemplate類執行。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
