Spring(十三)Spring整合JDBC及事务管理

做开发不连接数据库怎么行!Spring整合JDBC过程中,数据源可以直接都在beans.xml里配置,也可以把数据单独放在一个properties文件里,,方便维护。

首先放入各种jar包,连接MySQL当然要放数据驱动文件。

jar包什么的对照项目截图,切面aspect和cglib在这个工程没用到,jar包可以不添加进来

beans.xml,在头文件加上tx事务相关的引用,其他要注意的在文件的注释里基本都点到了

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""xmlns:xsi="" xmlns:context=""xmlns:aop="" xmlns:tx=""xsi:schemaLocation=""><!– 加上classpath明确指定配置文件在类路径底下 –><context:property-placeholder location="classpath:jdbc.properties" /><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/spring_2015?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root" /> <property name="password" value="686175"/> <property name="initialSize" value="1" /> <property name="maxActive" value="500"/> <property name="maxIdle" value="2"/> <property name="minIdle" value="1"/> –><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}" /><property name="maxIdle" value="${maxIdle}" /><property name="minIdle" value="${minIdle}" /></bean><bean id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!– 采用@Transaction注解方式使用事务 –><tx:annotation-driven transaction-manager="txManager" /><!– 将PersonServiceImpl交给Spring管理 –><bean id="personService" class="test.spring.service.impl.PersonServiceImpl"><!– 通过xml的方式对数据源进行注入 –><property name="dataSource" ref="dataSource"></property></bean></beans>

jdbc.properties

driverClassName=org.gjt.mm.mysql.Driverurl=jdbc\:mysql\://localhost\:3306/spring_2015?useUnicode\=true&characterEncoding\=UTF-8username=rootpassword=686175initialSize=1maxActive=500maxIdle=2minIdle=1

测试用到的数据库spring_2015,表person

实体类

package test.spring.entity;public class Person {private Integer id;private String name;public Person() {}public Person(String name) {super();this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "[Person:id = " + id + ",name = " + name + "]";}}业务实现类,注意在类前面加上@Transactional注解,这样能保证一个业务操作在一个单独的事务里面执行package test.spring.service.impl;import java.util.List;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.transaction.annotation.Transactional;import test.spring.entity.Person;import test.spring.service.PersonService;@Transactionalpublic class PersonServiceImpl implements PersonService {// private DataSource dataSource;private JdbcTemplate jTemplate;public void setDataSource(DataSource dataSource) {// this.dataSource = dataSource;this.jTemplate = new JdbcTemplate(dataSource);}@Overridepublic void save(Person person) {// TODO Auto-generated method stubjTemplate.update("insert into person(name) values(?)",new Object[] { person.getName() },new int[] { java.sql.Types.VARCHAR });}@Overridepublic void update(Person person) {// TODO Auto-generated method stubjTemplate.update("update person set name=? where id=?", new Object[] {person.getName(), person.getId() }, new int[] {java.sql.Types.VARCHAR, java.sql.Types.INTEGER });}@Overridepublic Person getPerson(Integer personId) {// TODO Auto-generated method stubPerson person = (Person) jTemplate.queryForObject("select * from person where id=?", new Object[] { personId },new int[] { java.sql.Types.INTEGER }, new PersonRowMapper());return person;}@SuppressWarnings("unchecked")@Overridepublic List<Person> getPersons() {// TODO Auto-generated method stubList<Person> persons = jTemplate.query("select * from person",new PersonRowMapper());return persons;}@Overridepublic void delete(Integer personId) {// TODO Auto-generated method stubjTemplate.update("delete from person where id=?",new Object[] { personId },new int[] { java.sql.Types.INTEGER });}}不要害怕错过什么,因为在路上你就已经收获了自由自在的好心情。

Spring(十三)Spring整合JDBC及事务管理

相关文章:

你感兴趣的文章:

标签云: