数据操作逻辑

结合上一篇笔记,这一篇是关于数据操作的各种逻辑实现,以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类执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值