Spring事务

JdbcTemplate

Spring 提供的JDBC模板 1. tx.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

    <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="root"></property>
        <property name="password" value="Gepoint"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mqtt"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="initialPoolSize" value="10"></property>
        <property name="maxPoolSize" value="100"></property>
        <property name="minPoolSize" value="10"></property>
        <property name="maxIdleTime" value="30"></property>
    </bean>
</beans>
  1. MyTx.java

    public class MyTx {
     ApplicationContext context = new ClassPathXmlApplicationContext("tx.xml");
     @Test
     public void test01() throws SQLException {
         DataSource dataSource =  context.getBean("datasource",ComboPooledDataSource.class);
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
         String sql = "select * from user";
         RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
         List<User> list = jdbcTemplate.query(sql,rowMapper);
         System.out.println("hello"+list +"\n" +  jdbcTemplate.getMaxRows());
     }
    }
    

    总结:第一步加入容器管理,第二步配置数据源,第三步,使用JdbcTemplate管理连接

备注:jdbcTemplate可以通过bean注入

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg ref="datasource"></constructor-arg>
</bean>

Spring Transaction事务

<context:component-scan base-package="amrom.dao,amrom.service"></context:component-scan>    

<!-- 事务管理器 -->
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="comboPooledDataSource"></property>
</bean>
<!-- 开启注解 -->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager" />
@Transactional
public void checkout(User user) {
    userDao.query();
    userDao.update(user);
}