- 浏览: 522899 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Zhouchenyu:
谢谢
1、junit学习之junit的基本介绍 -
wenjieyatou:
1、junit学习之junit的基本介绍 -
huabengao:
不错 很好
1、junit学习之junit的基本介绍 -
prayjourney:
写的不错,很有启发!
1、junit学习之junit的基本介绍 -
wangzhenyu1260:
assertEqualspublic static void ...
1、junit学习之junit的基本介绍
在本例中使用spring为我们提供的jdbc的模版来对spring进行开发。有了spring模版后,程序里就不用再对数据连接进行管理。
所有的 bean均通过自动扫描方式进行注入的。这样可以有效的减少beans.xml中bean的配置。
1、新建一个java项目。名字为 springjdbc。
2、在新建的项目中加入spring、jdbc、dbcp需要的jar包
aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1_3.jar,common-annotations.jar,log4j-1.2.14.jar,commons-dbcp.jar,commons-logging.jar,commons-pool.jar,spring.jar.mysql.jar,junit.jar
加入一上jar包
3、在str目录里加下beans.xml配置文件,并对数据库连接池与事务进行配置(事务用注解进行配置).在beans里要加上事务的xml声明。也就是表示事务的头文件。
4、编写person.java
5、编写personService.java与PersonServiceBean.java类。
PersonService.java接口类
PersonServiceBean.java类
6、PersonRowMapper.java这个类的主要做用是。在对PersonServiceBean.java里的方法getPerson使用。因为在请用getPerson方法后,里面要有一个回调,在回调方法里对perosn类时行填充。
7、junit进行测试。
所有的 bean均通过自动扫描方式进行注入的。这样可以有效的减少beans.xml中bean的配置。
1、新建一个java项目。名字为 springjdbc。
2、在新建的项目中加入spring、jdbc、dbcp需要的jar包
aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1_3.jar,common-annotations.jar,log4j-1.2.14.jar,commons-dbcp.jar,commons-logging.jar,commons-pool.jar,spring.jar.mysql.jar,junit.jar
加入一上jar包
3、在str目录里加下beans.xml配置文件,并对数据库连接池与事务进行配置(事务用注解进行配置).在beans里要加上事务的xml声明。也就是表示事务的头文件。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><!-- spring事务 tx--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="123" /> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1" /> <!-- 连接池的最大值 --> <property name="maxActive" value="500" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1" /> </bean> <!-- 在事务中注入dataSource --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 在JdbcTemplate中注入 dataSource --> <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 以注解的方式对事务进行管理 --> <tx:annotation-driven transaction-manager="txManager"/> <!-- 打开自动扫描 --> <context:component-scan base-package="cn.ehoo"/> </beans>
4、编写person.java
package cn.ehoo.bean; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public class Person { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
5、编写personService.java与PersonServiceBean.java类。
PersonService.java接口类
package cn.ehoo.service; import java.util.List; import cn.ehoo.bean.Person; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public interface PersonService { /** * 保存 * @param person */ public void save(Person person); /** *更新 * @param person */ public void update(Person person); /** * 获取 * @param person */ public Person getPerson(Long personId); /** * 获取所有 * @param person */ public List<Person> getPersons(); /** * 删除指定记录 * @param person */ public void delete(Long personId) throws Exception; }
PersonServiceBean.java类
package cn.ehoo.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import cn.ehoo.bean.Person; import cn.ehoo.service.PersonService; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ @Service("personService") @Transactional//代表事务要交给spring容器来管理 public class PersonServiceBean implements PersonService { @Resource private JdbcTemplate jdbcTemplate ;//jdbcTemplate已经在beans.xml文件中进行注入. public PersonServiceBean() { } @Override public void save(Person person) { //第一个参数结构化查询语言语句,第二个参数占位符的替换,第三个参数是相应参数的类型 jdbcTemplate.update("insert into person(name) values(?)", new Object[] { person.getName() }, new int[] { java.sql.Types.VARCHAR }); } @Override public Person getPerson(Long personId) { System.out.println(jdbcTemplate); return (Person)jdbcTemplate.queryForObject("select * from person where id=?", new Object[] {personId }, new PersonRowMapper()); } @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true,timeout=30)//这个方法不需要事务 readOnly=true只读 timeout=30超时时间,默认是30S @SuppressWarnings("unchecked") @Override public List<Person> getPersons() { return jdbcTemplate.query("select * from person", new PersonRowMapper()); } @Override public void update(Person person) { jdbcTemplate.update("update person set name=? where id=?", new Object[] { person.getName(),person.getId() }, new int[] { java.sql.Types.VARCHAR ,java.sql.Types.BIGINT}); } @Transactional(noRollbackFor =RuntimeException.class) @Override //@Transactional(rollbackFor =Exception.class)//对于能check的例外,spring默认是不会回滚的,如果想进行回滚,可以用rollbackFor进行回滚。 public void delete(Long personId) throws Exception{//对于用户运行其的uncheck例外,spring容器默认会对事务进行回滚,check是会回滚的 jdbcTemplate.update("delete from person where id=?", new Object[] {personId}, new int[] {java.sql.Types.BIGINT}); //throw new RuntimeException("运行其例外");//对于RuntimeException的例外,默认是会进行回滚的,可以用@Transactional(noRollbackFor =RuntimeException.class)设置成不回滚 throw new Exception("运行其例外");//对于Exception的例外,默认是不会回滚的,可以用@Transactional(rollbackFor =Exception.class)设置成回滚 } }
6、PersonRowMapper.java这个类的主要做用是。在对PersonServiceBean.java里的方法getPerson使用。因为在请用getPerson方法后,里面要有一个回调,在回调方法里对perosn类时行填充。
package cn.ehoo.service.impl; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import cn.ehoo.bean.Person; /** * @author whp * @Email whp@ehoo.cn * @Jan 5, 2011 * */ public class PersonRowMapper implements RowMapper { @Override public Object mapRow(ResultSet rs, int index) throws SQLException { Person person = new Person(); person.setId(rs.getLong("id")); person.setName(rs.getString("name")); return person; } }
7、junit进行测试。
package junit.test; import java.util.List; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.ehoo.bean.Person; import cn.ehoo.service.PersonService; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public class AOPTest { static PersonService personService; @BeforeClass public static void setUpBeforeClass() throws Exception { AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml"); personService = (PersonService) cxt.getBean("personService"); } /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public static void main(String[] args) { try { setUpBeforeClass(); Person person = personService.getPerson(2L); System.out.println(person.getName()); } catch (Exception e) { e.printStackTrace(); } } @Test public void getPerson(){ Person person = personService.getPerson(2L); System.out.println(person.getName()+"===="); } @Test public void save(){ Person person = new Person(); person.setName("whp100"); personService.save(person); System.out.println(person.getName()+"===="); } @Test public void update(){ Person person = new Person(); person.setId(15L); person.setName("whp100"); personService.update(person); System.out.println(person.getName()+"===="); } @Test public void getPersons(){ List<Person > persons = personService.getPersons(); System.out.println(persons.size()+"===="); } @AfterClass public static void tearDownAfterClass() throws Exception { } }
- springjdbc.rar (11.3 KB)
- 下载次数: 17
发表评论
-
Spring MVC控制器之SimpleFormController使用
2013-10-31 15:49 3445SimpleFormController已经 ... -
Spring MVC控制器之ParameterizableViewController使用
2013-10-30 15:36 1715这几天在看walker讲的Spring MVC视频教程,在网 ... -
spring 注解Autowired、service、Autowired 的使用
2013-05-30 16:43 6315在spring中可以通过service来把一个业务层的类交 ... -
spring配置文件名字问题
2011-04-27 09:48 15756在做java开发时,如果用到spring,那么在做j2ee开发 ... -
Spring MVC demo
2011-04-26 09:14 160751、新建一web项目 springmvc,并在lib目录中加入 ... -
Struts1.2+Spring2.5+Hibernate3.2 开发时不能用Spring的AOP对继承DispatchAcion的Action里的方法进行拦截
2011-02-12 17:08 1878使用SSH组合开发时,在把所有的Action都交给S ... -
struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现
2011-01-06 14:55 1610在本例中用struts1.3+spring2.5+hibern ... -
spring+JdbcTemple+dbcp数据源 的xml实现
2011-01-06 11:21 1740在本例中使用spring为我们提供的jdbc的模版来对spri ... -
Spring中注解事务方面的问题
2011-01-06 10:26 3766我们可以在spring的配置 ... -
SpringXML方式实现AOP demo
2011-01-04 16:09 13501、新建一个java的工程,导入spring需要的jar包与开 ... -
Spring注解方式实现AOP demo
2011-01-04 15:39 64571、新建一个java的工程,导入spring需要的jar包与开 ... -
CGLIB实现代理demo
2011-01-04 11:43 2515在上片文章里说了如何用jdk自带的类Proxy来实现代理,但是 ... -
Proxy实现代理demo
2011-01-04 10:57 1286save、update、insert方法,只有在用户登录后才能 ... -
Spring是轻量级框架还是重量级框架
2010-12-31 09:56 5311主要看使用了多少服务.使用的服务越多.对于spring容器来说 ... -
使用spring的好处
2010-12-31 09:15 1046a. 降低组件之间的耦合度,实现软件各层之间的解耦。如我们的P ... -
Spring Bean 的作用域
2010-12-30 17:52 985在spring中bean一共有5个作用域。 1、single ... -
Spring 注解 方式配制的小demo
2010-12-30 17:24 14291、新建一个Web程序 在程序中引入Spring所需要的 ... -
Spring xml 方式配制的小demo
2010-12-30 17:19 10801、新建一个Web程序 在程序中引入Spring所需要的 ...
相关推荐
标题 "spring+JdbcTemple+dbcp数据源的xml实现" 涉及到的是在Java环境中,使用Spring框架整合JDBC模板(JdbcTemplate)和Apache的DBCP数据库连接池来管理数据库连接的方式。这一组合是Java后端开发中常见的数据库...
标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...
总结起来,"springboot-jpa加上jdbctemple"的主题涉及Spring Boot项目中JPA和JdbcTemplate的联合使用,旨在提供高效、灵活的数据访问策略。通过合理结合这两种技术,开发者可以更好地应对各种数据库操作场景,提高...
Swing+Druid+jdbcTemple+jdk1.8 数据库: MySQL_5.6.46 开发工具:IDEA_2019.1.3 【使用说明】 导入结构和数据:sql/epms.sql 解压下载zip重命名EPMS-master文件夹为EPMS,IDEA打开该EPMS项目 修改配置数据库连接...
Swing+Druid+jdbcTemple+jdk1.8 数据库: MySQL_5.6.46 开发工具:IDEA_2019.1.3 【项目介绍】 1、该项目是个人高分项目源码(文档+源码),已获导师指导认可通过,答辩评审分达到96分。 2、该资源内项目代码都经过...
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
资源文件包含: commons-logging-1.2.jar , spring-beans-5.0.0.RELEASE.jar , spring-core-5.0.0.RELEASE.jar, spring-jdbc-5.0.0.RELEASE.jar spring-tx-5.0.0.RELEASE.jar
PhoneShop-SSM:✦项目描述...配置spring.xml需要开启spring注解加载数据源注入jdbctemple配置拦截器3.编写业务流程:后台层次划分:控制层(control)服务层(service)数据库操作(dao)实体层(bean)工具类(tools)