結合上一篇筆記,這一篇是關于數據操作的各種邏輯實現,以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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

