
那要看你使用了那些框架咯,一般来说分为三层
第一层是表层:就是action那部分,响应jsp *** 作
第二层是service层:就是进行逻辑 *** 作的。
第三层是持久层(DAO):就是进行数据库 *** 作的
比如,增加一个留言(Message)的 *** 作。在action层中将这个Message封装好,重写excute()方法。
调用Service层的方法,进行一些逻辑性的 *** 作,最后到持久层DAO将这个Message对象加入数据库。
我有一个SSH的代码可以看下。 (只贴出了代码,还有一些配置文件省略了)
action:
public class AddMessage extends ActionSupport {
private String content
private String username
private String visior
private MessageService messageService
public String getContent() {
return content
}
public void setContent(String content) {
this.content = content
}
。。。。。//还有其他的set() get()方法省略
@Override
public String execute() throws Exception {
Map session = ActionContext.getContext().getSession()
HttpServletRequest request = ServletActionContext.getRequest()
String username = (String) session.get("username")
String visitor = (String)session.get("visitor")
if (null == username || "".equals(username)) {
return ERROR
} else {
// 封装Message
Message message = new Message()
message.setUsername(username)
message.setContent(content)
if(visitor == null){
message.setVisitor("游客")
}else{
message.setVisitor(visitor)
}
message.setDate(new Date())
messageService.addMessage(message) //这里调用Service层的方法
return this.SUCCESS
}
}
}
service层:
接口:
public interface MessageService {
//添加留言
public void addMessage(Message message)
//删除留言
public void deleteMessage(int id)
//分页查询留言
public Result showUserMessageByPage(String username,Page page)
}
实现类:
public class MessageServiceImpl implements MessageService {
private MessageDAO messageDAO
public MessageDAO getMessageDAO() {
return messageDAO
}
public void setMessageDAO(MessageDAO messageDAO) {
this.messageDAO = messageDAO
}
//刚刚调用的service方法
public void addMessage(Message message) {
messageDAO.add(message)//这里调用了DAO层的方法,将数据保存到数据库
}
public void deleteMessage(int id) {
messageDAO.deleteMessage(id)
}
public Result showUserMessageByPage(String username, Page page) {
page = PageUtil.createPage(page,messageDAO.queryUserAllCount(username))
List<Message>all = messageDAO.queryByPage(username, page)
Result result = new Result()
result.setPage(page)
result.setList(all)
return result
}
}
DAO层:
(接口)
public interface MessageDAO {
//添加留言
public void add(Message message)
//删除留言
public boolean deleteMessage(int id)
//查询某个用会员的全部留言
public List<Message>queryByPage(String username,Page page)
//按照ID俩查询留言
public Message queryById(int id)
//查询数据库中某用户所有留言数目
public int queryUserAllCount(String username)
//获取所访问的用户ID
public int UserID()
}
(实现类)
public class MessageDAOImpl extends HibernateDaoSupport implements MessageDAO {
//这里是刚刚调用的add方法
public void add(Message message) {
this.getHibernateTemplate().save(message)//这里就把message存入数据库中了
}
public boolean deleteMessage(int id) {
this.getHibernateTemplate().delete(this.queryById(id))
return false
}
public Message queryById(int id) {
List<Message>find = this.getHibernateTemplate().find("select meg from Message meg where meg.id = ?", id)
return (Message) find.get(0)
}
public List<Message>queryByPage(final String username,final Page page) {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("select meg from Message meg where meg.username = ? order by meg.date desc")
//设置查询的用户
query.setParameter(0, username)
//设置查询的最大数
query.setMaxResults(page.getEveryPage())
//设置从哪里开始查询
query.setFirstResult(page.getBeginIndex())
return query.list()
}
})
}
public int queryUserAllCount(String username) {
List find = this.getHibernateTemplate().find("select count(*) from Message meg where meg.username = ?",username)
return ((Long)find.get(0)).intValue()
}
public int UserID() {
// TODO Auto-generated method stub
return 0
}
}
其他的 *** 作类似
Struts是针对action的(model层),它本身不具有增删改查功能的。扩展:要通过dao层(spring事务管理)来做增删改查功能的。
可以参考下如下代码实现增删改查:
import java.sql.PreparedStatement
import java.sql.ResultSet
import Bean.Bean
public class shixian implements DAO {
public void delete(Bean bean) throws Exception {
// 删除数据
String sql = "delete from person where name=?"
Conn conn = new Conn()//创建数据库连接
PreparedStatement pre
try {
//获取连接,执行sql
pre = conn.getConn().prepareStatement(sql)
pre.setString(1, bean.getName())
pre.executeUpdate()
pre.close()//关闭数据库连接
} catch (Exception e) {
e.printStackTrace()
}
}
public void insert(Bean bean) throws Exception {
// 增加数据
String sql = "insert into person values(?,?)"
Conn conn = new Conn()//创建数据库连接
PreparedStatement pre = null
try {
//获取连接,执行sql
pre = conn.getConn().prepareStatement(sql)
pre.setString(1, bean.getName())
pre.setString(2, bean.getPassword())
pre.executeUpdate()
pre.close()//关闭数据库连接
}
catch (Exception e) {
e.printStackTrace()
}
}
public Bean select(String name) throws Exception {
// 查询数据
String sql = "select name,password from person where name=?"
Conn conn=new Conn()//创建数据库连接
Bean bean = new Bean()
PreparedStatement pre = null
try{
//获取连接,执行sql
pre = conn.getConn().prepareStatement(sql)
pre.setString(1, name)
ResultSet rs = pre.executeQuery()
if (rs.next()) {
bean.setName(rs.getString(1))
bean.setPassword(rs.getString(2))
}
rs.close()
pre.close()//关闭数据库连接
} catch (Exception e) {
e.printStackTrace()
}
return bean
}
public void update(Bean bean) throws Exception {
// 修改数据
String sql = "insert into person values(?,?)"
Conn conn = new Conn()//创建数据库连接
PreparedStatement pre = null
try {
//获取连接,执行sql
pre = conn.getConn().prepareStatement(sql)
pre.setString(1, bean.getName())
pre.setString(1, bean.getPassword())
pre.executeUpdate()
pre.close()//关闭数据库连接
}
catch (Exception e) {
e.printStackTrace()
}
}
}
Dao层可以继承HibernateDaoSupport然后就可以用 getHibernateTemplate()进行 *** 作。
http://www.2cto.com/kf/201301/186015.html 可以参考这个。
/**
* @param Enterprise
* 删除某实体信息。
*/
public void del(Entity entity) {
this.getHibernateTemplate().delete(entity)
}
/**
* @return 所有的企业信息。
* 查询所有的企业信息。
*/
@SuppressWarnings("unchecked")
public List<Enterprise>findAllEnterprises() {
String hql = "from Enterprise enterprise"
return this.getHibernateTemplate().find(hql)
}
/**
* @param Integer,企业编号。
* @return 某个企业信息。
* 通过企业编号查询企业信息。
*/
public Enterprise findEnterpriseById(Integer id) {
return (Enterprise) this.getHibernateTemplate().load(Enterprise.class, id)
}
/**
* @param Enterprise
* 添加企业信息。
*/
public void save(Enterprise enterprise) {
this.getHibernateTemplate().save(enterprise)
}
/**
* @param Enterprise
* 修改企业信息。
*/
public void update(Enterprise enterprise) {
this.getHibernateTemplate().update(enterprise)
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)