谁知道struts2做增删改查的详细步骤。

谁知道struts2做增删改查的详细步骤。,第1张

那要看你使用了那些框架咯,一般来说分为三层

第一层是表层:就是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)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10060837.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存