- 浏览: 522291 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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声明。也就是表示事务的头文件。
jdbc.proporties文件
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--> <context:property-placeholder location="classpath: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> <!-- 在JdbcTemplate中注入 dataSource --> <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean name="personService" class="cn.ehoo.service.impl.PersonServiceBean"> <property name="jdbcTemplate" ref="jdbcTemplate" /><!-- 将jdbcTemplate进行注入 --> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- xml方式来管理事务 --> <aop:config> <aop:pointcut id="transactionPointcut" expression="execution(* cn.ehoo.service.impl.PersonServiceBean.*(..))" /><!--表示要拦截的类 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" /><!--要交给谁trAdvice来处理 --> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"><!--对于trAdvice的定义 --> <tx:attributes> <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED" /><!-- 如果事务是以get开始的,就不打开事务 --> <tx:method name="*" /><!-- 其它方法用默认的事务行为 --> </tx:attributes> </tx:advice> </beans>
jdbc.proporties文件
driverClassName=org.gjt.mm.mysql.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 username=root password=123 initialSize=1 maxActive=500 maxIdle=2 minIdle=1
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 org.springframework.jdbc.core.JdbcTemplate; import cn.ehoo.bean.Person; import cn.ehoo.service.PersonService; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public class PersonServiceBean implements PersonService { private JdbcTemplate jdbcTemplate ;//jdbcTemplate已经在beans.xml文件中进行注入. public PersonServiceBean() { } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @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()); } @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}); } @Override public void delete(Long personId) throws Exception{ jdbcTemplate.update("delete from person where id=?", new Object[] {personId}, new int[] {java.sql.Types.BIGINT}); } }
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 { } }
- springjdbcxml.rar (11.2 KB)
- 下载次数: 14
发表评论
-
Spring MVC控制器之SimpleFormController使用
2013-10-31 15:49 3434SimpleFormController已经 ... -
Spring MVC控制器之ParameterizableViewController使用
2013-10-30 15:36 1705这几天在看walker讲的Spring MVC视频教程,在网 ... -
spring 注解Autowired、service、Autowired 的使用
2013-05-30 16:43 6303在spring中可以通过service来把一个业务层的类交 ... -
spring配置文件名字问题
2011-04-27 09:48 15746在做java开发时,如果用到spring,那么在做j2ee开发 ... -
Spring MVC demo
2011-04-26 09:14 160681、新建一web项目 springmvc,并在lib目录中加入 ... -
Struts1.2+Spring2.5+Hibernate3.2 开发时不能用Spring的AOP对继承DispatchAcion的Action里的方法进行拦截
2011-02-12 17:08 1869使用SSH组合开发时,在把所有的Action都交给S ... -
struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现
2011-01-06 14:55 1600在本例中用struts1.3+spring2.5+hibern ... -
Spring中注解事务方面的问题
2011-01-06 10:26 3759我们可以在spring的配置 ... -
spring+JdbcTemple+dbcp数据源 的注解实现
2011-01-05 14:01 2183在本例中使用spring为我们提供的jdbc的模版来对spri ... -
SpringXML方式实现AOP demo
2011-01-04 16:09 13331、新建一个java的工程,导入spring需要的jar包与开 ... -
Spring注解方式实现AOP demo
2011-01-04 15:39 64501、新建一个java的工程,导入spring需要的jar包与开 ... -
CGLIB实现代理demo
2011-01-04 11:43 2505在上片文章里说了如何用jdk自带的类Proxy来实现代理,但是 ... -
Proxy实现代理demo
2011-01-04 10:57 1277save、update、insert方法,只有在用户登录后才能 ... -
Spring是轻量级框架还是重量级框架
2010-12-31 09:56 5301主要看使用了多少服务.使用的服务越多.对于spring容器来说 ... -
使用spring的好处
2010-12-31 09:15 1040a. 降低组件之间的耦合度,实现软件各层之间的解耦。如我们的P ... -
Spring Bean 的作用域
2010-12-30 17:52 978在spring中bean一共有5个作用域。 1、single ... -
Spring 注解 方式配制的小demo
2010-12-30 17:24 14211、新建一个Web程序 在程序中引入Spring所需要的 ... -
Spring xml 方式配制的小demo
2010-12-30 17:19 10751、新建一个Web程序 在程序中引入Spring所需要的 ...
相关推荐
NULL 博文链接:https://huihai.iteye.com/blog/859622
标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...
2. 配置数据源:在application.properties或application.yml中配置数据库连接信息。 3. 创建实体类:定义与数据库表对应的Java类,并添加JPA注解。 4. 创建Repository接口:继承Spring Data JPA的接口,自定义查询...
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)