数据操作逻辑

系统 1449 0

结合上一篇笔记,这一篇是关于数据操作的各种逻辑实现,以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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论