Spring介绍,SSH整合增删改查代码

Spring就是一个大工厂,专门负责生成Bean。
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

1.Spring快速入门
在官网下载Spring 开发包
导入Spring的jar包4+1例如
spring-core-3.2.RELEASE.jar
spring-beans-3.2.RELEASE.jar
spring-context-3.2.RELEASE.jar
spring-expression-3.2.RELEASE.jar
com.springsource.org.apache.commons.logging-1.1.1.jar

配置Spring的核心xml文件
在程序中读取Spring的配置文件来获取Bean。
2.加载spring容器(类路径获得配置文件)
ApplicationContext context =
new ClassPathXmlApplicationContext(“com/hgs/spring/demo/beans.xml”);
------------------------------------------------------注解
@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层
@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称
@Resource(“名称”)
@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁

AOP联盟
•前置通知 org.springframework.aop.MethodBeforeAdvice
•后置通知 org.springframework.aop.AfterReturningAdvice
•在目标方法执行后实施增强
•环绕通知 org.aopalliance.intercept.MethodInterceptor
•在目标方法执行前后实施增强
•异常抛出通知 org.springframework.aop.ThrowsAdvice
•在方法抛出异常后实施增强**

4.配置DBCP

<?xml version="1.0" encoding="UTF-8"?>







5.配置c3p0






6.配置proerties
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///spring01
user=root
password=root
6.1知识点---------事务四大特性
原子性:整体 原子性是指事务包含的所有操作要么全部成功,要么全部失败
一致性:数据 一个事务执行之前和执行之后都必须处于一致性状态。
隔离性:并发 对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
持久性:结果 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的。
隔离问题
脏读:一个事务读到另一个事务未提交的内容
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。
不可重复读:一个事务读到另一个事务已提交的内容
这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。
虚读(幻读):一个事务读到另一个事务已提交的内容
一个事务读到另一个事务已提交的内容(update)
这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。
Serializable(可串行化)
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
事务代码
Connection conn = null;
try{
//1 获得连接
conn = …;
//2 开启事务
conn.setAutoCommit(false);
H
G
C
//3 提交事务
conn.commit();
} catche(){
//4 回滚事务
conn.rollback();
}

SSH实现增删改查的部分代码
package entity;

public class Cuser {
private int id;
private String name;
private String email;
private String companyname;
private String subject;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCompanyname() {
return companyname;
}
public void setCompanyname(String companyname) {
this.companyname = companyname;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
@Override
public String toString() {
return “Cuser [id=” + id + “, name=” + name + “, email=” + email
+ “, companyname=” + companyname + “, subject=” + subject + “]”;
}

}

package dao;

import java.util.List;

import entity.Cuser;

public interface CuserDao {
//保存用户信息
public void saveUser(Cuser cuser);//传对象
//删除用户信息
public void removeUser(Cuser cuser);
//查询指定用户信息
public void findUserById(int id);
//查询所有用户信息
public List findAllUserList();
//更新用户信息
public void updateUser(Cuser cuser);

}

package dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import dao.CuserDao;
import entity.Cuser;

public class CuserDaoImpl extends HibernateDaoSupport implements CuserDao {
@Override
public void saveUser(Cuser cuser) {
// TODO Auto-generated method stub
this.getHibernateTemplate().save(cuser);
}

@Override
public void removeUser(Cuser cuser) {
	// TODO Auto-generated method stub
	this.getHibernateTemplate().delete(cuser);

}

@Override
public void findUserById(int id) {
	// TODO Auto-generated method stub
	this.getHibernateTemplate().get(Cuser.class, id);
	
	//return user;
}

@SuppressWarnings("unchecked")
@Override
public List<Cuser> findAllUserList() {
	// TODO Auto-generated method stub
	String hql="from Cuser cuser order by cuser.id desc";
	return (List<Cuser>)this.getHibernateTemplate().find(hql);
}

@Override
public void updateUser(Cuser cuser) {
	// TODO Auto-generated method stub
	this.getHibernateTemplate().update(cuser);

}

}

package action;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import service.CuserService;

import com.opensymphony.xwork2.ActionSupport;

import entity.Cuser;

@SuppressWarnings(“serial”)
public class CuserAction extends ActionSupport{
private CuserService cuserService;
private Cuser cuser;

//保存用户信息

public String save() throws Exception {
	
	this.cuserService.save(cuser);
	return "save";
}
//删除用户信息
public String delete() throws Exception{
	this.cuserService.remove(cuser);
	return "delete";
}
//查询指定用户信息
public String find() throws Exception{
	HttpServletRequest request = ServletActionContext.getRequest();
	Integer id = Integer.parseInt(request.getParameter("user.id"));
	this.cuserService.findById(id);
	/*Map map = (Map) ServletActionContext.getContext().get("request");
	map.put("user", user);*/
	request.setAttribute("cuser", cuser);
	return "query";
}

//查询所有用户信息
public String queryAll() throws Exception {
	// TODO Auto-generated method stub
	List<Cuser> list = cuserService.findAllList();
	//ActionContext actionContext = ServletActionContext.getContext(); 
	//Map map = (Map) ActionContext.getContext().get("request");
	Map map = (Map) ServletActionContext.getContext().get("request");
	map.put("list", list);
	
	/*List<User> list = userService.findAllList();
	HttpServletRequest request = ServletActionContext.getRequest();
	request.setAttribute("list", list);*/
	
	return "success";
}
//更新用户信息
public String update() throws Exception{
	this.cuserService.update(cuser);
	return "update";
}
public CuserService getCuserService() {
	return cuserService;
}
public void setCuserService(CuserService cuserService) {
	this.cuserService = cuserService;
}
public Cuser getCuser() {
	return cuser;
}
public void setCuser(Cuser cuser) {
	this.cuser = cuser;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值