1、架包:commons-dbcp.jar commons-pool.jar mysql-connector-java-5.0.7-bin.jar
2、引入命名空间,如下:
xmlns:tx=http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
3、配置数据源,如下:
<!-- 配置数据源 --> <context:property-placeholder location="jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClassName}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <!-- 连接池启动时的初始值 ,连接池对象个数--> <property name="initialSize" value="${initialSize}"/> <!-- 连接池的最大值 -连接对象--> <property name="maxActive" value="${maxActive}"/> <!-- 最大空闲值,当经过一个高峰时间后,连接池可以慢慢地将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="${maxIdle}" /> <!-- 最小空闲值,当空闲的连接数少于阀值时,连接池就会预申请一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="${minIdle}"/> </bean>
4、配置事务:需要在xml配置文件中引入声明事务的tx命名空间,事务配置有两种方式:注解和基于xml配置方式
1)采用注解
1.事务配置
<!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/><!-- 注入数据源 --> </bean>
2.配置事务处理器
<!-- 采用 @transactionl 注解方式使用事务 --> <tx:annotation-driven transaction-manager="transactionManager"/>
3.将UserServiceImp.java交给容器
<!-- 将UserServiceImp类交个spring容器管理 --> <bean id="userServiceImp" class="com.qh.service.imp.UserServiceImp"> <!-- UserServiceImp类中set方法的对象 ,采用JdbcTemplete--> <property name="dataSource" ref="dataSource"/> </bean>
到此注解配置结束
2)采用xml配置
1.引入AOP命名空间
xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
2.配置事务管理
<!-- 基于xml文件配置事务 --> <aop:config> <aop:pointcut id="myPointCut" expression="execution(* com.qh.service..*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointCut"/> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" propagation="NOT_SUPPORTED"/> <tx:method name="*"/> </tx:attributes> </tx:advice>
到此xml文件配置结束,详细参见下载
5、基于注解的核心代码:(关于xml文件配置代码看下载)
UserBean.java
package com.qh.bean; public class UserBean { private int id; private String username; private String password; private String email; public UserBean(){} public UserBean(String username, String password, String email) { this.username = username; this.password = password; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
UserService.java
package com.qh.service; import java.util.List; import com.qh.bean.UserBean; public interface UserService { //保存 public void save(UserBean userBean); //更新 public void update(UserBean userBean); //根据id查询 public UserBean getUserBeanById(Integer id); //获取所有记录 public List<UserBean> getUserBeans(); //根据id删除记录 public void delete(Integer id); }
UserServiceImp.java
package com.qh.service.imp; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Transactional; import com.qh.bean.UserBean; import com.qh.service.UserService; @Transactional //保证同一个方法中的所有操作都在同一个事务中执行 public class UserServiceImp implements UserService { // 获取数据源,提供set方法,将数据源注入到bean中 private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } public void save(UserBean userBean) { String sql = "insert into user(username,password,email) values(?,?,?)"; jdbcTemplate.update(sql, new Object[] { userBean.getUsername(), userBean.getPassword(), userBean.getEmail() }, new int[] { java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.VARCHAR }); } public void update(UserBean userBean) { String sql = "update user set username=?,password=?,email=? where id=?"; jdbcTemplate.update(sql, new Object[] { userBean.getUsername(), userBean.getPassword(), userBean.getEmail(), userBean.getId() }, new int[] { java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.INTEGER }); } public UserBean getUserBeanById(Integer id) { String sql = "select * from user where id=?"; return (UserBean)jdbcTemplate.queryForObject(sql, new Object[] { id }, new int[] { java.sql.Types.INTEGER }, new UserRowMapper());//回调; } @SuppressWarnings("unchecked") public List<UserBean> getUserBeans() { String sql = "select * from user"; return (List<UserBean>)jdbcTemplate.query(sql,new UserRowMapper());//回调; } public void delete(Integer id) { String sql = "delete from user where id=?"; jdbcTemplate.update(sql, new Object[] { id }, new int[] {java.sql.Types.INTEGER }); } }
UserRowMapper.java
package com.qh.service.imp; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import com.qh.bean.UserBean; public class UserRowMapper implements RowMapper { // 当外部调用此方法时,rs.next()已经调用 public Object mapRow(ResultSet rs, int index) throws SQLException { UserBean userBean = new UserBean(rs.getString("username"), rs.getString("password"), rs.getString("email")); userBean.setId(rs.getInt("id")); return userBean; } }
UserTest.java
package com.qh.test; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.qh.bean.UserBean; import com.qh.service.UserService; public class UserTest { private static UserService userServiceImp; @BeforeClass public static void init(){ try { ApplicationContext apx=new ClassPathXmlApplicationContext("beans.xml"); userServiceImp=(UserService) apx.getBean("userServiceImp");//注意 } catch (BeansException e) { e.printStackTrace(); } } @Test public void getUserBeans() { for(UserBean temp : userServiceImp.getUserBeans()){ System.out.println(temp.getUsername()); } } @Test public void delete(){ userServiceImp.delete(3); } @Test public void save(){ UserBean userBean=new UserBean("aa", "aa", "qq.com"); userServiceImp.save(userBean); } @Test public void update(){ UserBean userBean=new UserBean("bb", "bb", "qq.com"); userBean.setId(4); userServiceImp.update(userBean); } @Test public void getUserById(){ System.out.println(userServiceImp.getUserBeanById(1).getUsername()); } }
至此,基于注解的开发结束了。
附:使用properties文件引入
将beans.xml中的数据源的配置放到jdbc.properties中
driverClassName=org.gjt.mm.mysql.Driver url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8 username=root password=123 initialSize=1 maxActive=500 maxIdle=2 minIdle=1
然后在beans.xml中引用:${driverClassName}
在beans.xml中需要引入命名空间
xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
该命名空间支持以下内容
<context:property-placeholder location="jdbc.properties"/>
此内容是将jdbc.properties引入到xml文件中
配置结束
发表评论
-
@transitional事务传播行为和数据库隔离级别
2011-07-31 13:04 1223@transitional事务传播行为 ... -
spring+jdbc组合开发
2011-07-28 23:13 7spring+jdbc组合开发 1、架包:commons-d ... -
AOP_使用spring框架进行面向切面编程
2011-07-25 21:33 1182用spring实现AOP有两种方 ... -
AOP_基本概念
2011-07-23 00:00 708分散关注 将通用需求功能从不相关类之中分离出来;同时,能 ... -
AOP_使用CGLIB实现AOP功能
2011-07-22 00:02 785好处:不需要目标对象实现接口 使用的架包:cglib-nod ... -
AOP__使用JDK中的Proxy技术实现AOP功能
2011-07-21 22:28 540AOP主要用于权限的验证 细粒度的权限控制:对方法进行拦截, ... -
DI依赖注入_自动装配_autowire
2011-07-20 21:27 695自动装入:容器自动装 ... -
DI依赖注入_手动装配_注解基础
2011-07-20 22:50 1307以下的注释不管在那种配置组件的方法中都能用,这里只是实际需要才 ... -
DI依赖注入_手动装配_非注解
2011-07-18 23:15 916基本数据类型的注入(将以下代码放到对象的bean中即可) 可 ... -
spring中的方法
2011-07-18 08:03 01、实例化spring容器 ApplicationConte ... -
spring基本概念
2011-07-17 21:38 575Ioc(控制反转):应用本 ...
相关推荐
本主题将深入探讨"Spring+JDBC组合开发",讲解如何利用Spring简化JDBC操作,提高代码的可维护性和可测试性。 首先,让我们了解Spring如何处理JDBC。Spring通过JdbcTemplate和NamedParameterJdbcTemplate两个核心...
在学习和实践"Spring+JDBC组合开发及环境搭建"的过程中,通过创建简单的项目,编写数据库操作的代码,理解并掌握上述知识点,将使你能够高效地利用Spring框架进行数据访问。同时,不断查阅官方文档,参考优秀的博客...
总结起来,Spring MVC、Spring核心模块和Spring JDBC的整合,构建了一个完整的Web应用开发解决方案。通过Spring MVC处理HTTP请求,Spring核心模块提供依赖管理和AOP支持,Spring JDBC则简化了数据库操作。这样的架构...
Struts、Spring和Jdbc的集成是其中的一个经典组合,它们各自的优势互补,共同构建出高效、可维护的Web应用系统。下面将详细阐述这一集成过程的关键步骤。 #### 一、建立WEB PROJECT 首先,通过MyEclipse创建一个新...
Struts1、Spring 2.5.6 和 JDBC 是经典的Java Web开发技术组合,它们各自在应用程序架构中扮演着不同的角色。Struts1是MVC(Model-View-Controller)框架,Spring则是一个全面的轻量级应用框架,而JDBC(Java ...
总之,"spring+jdbc"是Java开发中的重要组合,它融合了Spring的灵活性和数据库操作的便利性,为开发者提供了强大且易于维护的数据库访问能力。了解并熟练掌握这些知识点,对于提升Java开发者的技能水平和工作效率至...
6. 小型应用适用性:由于Spring+MyBatis+jDBC这套组合提供了灵活性和可扩展性,同时相对轻量级,所以适合中小规模应用的开发。对于快速开发和维护,这样的框架组合具有较高的效率。 7. 开发工具:在开发过程中,...
在上述过程中,"v512工作室_刘伟_Hibernate与Struts2和Spring组合开发.pdf"这份文档可能会提供详细的步骤和示例,帮助你更深入地理解和实践Struts2+Spring+Hibernate的整合开发。记得根据实际情况调整配置,以适应你...
SpringMVC、Spring和JDBC是Java Web开发中常用的三个技术框架,它们组合在一起形成了SSM(Spring MVC、Spring、MyBatis)架构的一种变体。在这个项目中,"SpringMVC+Spring+JDBC环境"指的是利用这些技术构建一个完整...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
总结来说,Spring+WebWork+iBatis的组合为Java Web开发提供了一个强大且灵活的框架,能够帮助开发者快速构建高质量的应用程序。通过深入理解各个框架的功能和配置,我们可以更好地利用这些工具来满足项目需求。
标题中的"spring+springmvc+springjdbc+redis"是一个典型的Java Web开发技术组合,涵盖了Spring框架的核心组件,Spring MVC作为Web层的处理框架,Spring JDBC用于数据库操作,以及Redis作为高速缓存系统。这个组合在...
在IT行业中,构建大型、模块化的Java应用时,通常会采用一些成熟的框架组合,例如Spring、Spring MVC和Hibernate。这些框架协同工作,可以提供强大的后端功能,包括依赖注入、模型-视图-控制器(MVC)架构以及对象...
在IT领域,构建一个图书管理系统是一项常见的任务,它涉及到多种技术的综合运用。在这个案例中,"SpringMVC+Spring+Hibernate+Oracle ...理解并掌握这些技术的组合使用,对于开发高效、稳定的Java Web应用至关重要。
《Spring MVC + Quartz 整合实现...这一组合不仅提供了强大的任务调度能力,还结合了Spring MVC的Web处理优势,使得任务管理更加便捷直观。在实际项目中,这种方案已被广泛采用,为企业的自动化运维提供了有力支撑。
"Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...
标题 "ext2.0+struts2.1+spring2.0+jdbc框架" 提到的是一个基于Java的Web开发架构,它结合了四个关键组件:EXT JS的2.0版本,Struts2.1,Spring2.0,以及JDBC(Java Database Connectivity)。这个组合在早期的Web...