zoukankan      html  css  js  c++  java
  • Spring与C3p0连接数据库对事务操作

    maven包:

     1 <properties>
     2     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     3     <maven.compiler.source>1.7</maven.compiler.source>
     4     <maven.compiler.target>1.7</maven.compiler.target>
     5     <spring.version>4.3.24.RELEASE</spring.version>
     6   </properties>
     7 
     8   <dependencies>
     9     <dependency>
    10       <groupId>junit</groupId>
    11       <artifactId>junit</artifactId>
    12       <version>4.11</version>
    13       <scope>test</scope>
    14     </dependency>
    15     <!-- Spring -->
    16     <dependency>
    17       <groupId>org.springframework</groupId>
    18       <artifactId>spring-core</artifactId>
    19       <version>${spring.version}</version>
    20     </dependency>
    21     <dependency>
    22       <groupId>org.springframework</groupId>
    23       <artifactId>spring-context</artifactId>
    24       <version>${spring.version}</version>
    25     </dependency>
    26     <dependency>
    27       <groupId>org.springframework</groupId>
    28       <artifactId>spring-web</artifactId>
    29       <version>${spring.version}</version>
    30     </dependency>
    31     <dependency>
    32       <groupId>org.springframework</groupId>
    33       <artifactId>spring-context-support</artifactId>
    34       <version>${spring.version}</version>
    35     </dependency>
    36     <dependency>
    37       <groupId>org.springframework</groupId>
    38       <artifactId>spring-webmvc</artifactId>
    39       <version>${spring.version}</version>
    40     </dependency>
    41     <dependency>
    42       <groupId>org.springframework</groupId>
    43       <artifactId>spring-test</artifactId>
    44       <version>${spring.version}</version>
    45     </dependency>
    46     <!-- aop -->
    47     <dependency>
    48       <groupId>org.springframework</groupId>
    49       <artifactId>spring-aop</artifactId>
    50       <version>${spring.version}</version>
    51     </dependency>
    52     <dependency>
    53       <groupId>org.aspectj</groupId>
    54       <artifactId>aspectjweaver</artifactId>
    55       <version>1.8.13</version>
    56     </dependency>
    57     <dependency>
    58       <groupId>cglib</groupId>
    59       <artifactId>cglib</artifactId>
    60       <version>3.2.4</version>
    61     </dependency>
    62     <!-- spring jdbc -->
    63     <dependency>
    64       <groupId>mysql</groupId>
    65       <artifactId>mysql-connector-java</artifactId>
    66       <version>5.1.47</version>
    67     </dependency>
    68     <dependency>
    69       <groupId>org.springframework</groupId>
    70       <artifactId>spring-jdbc</artifactId>
    71       <version>${spring.version}</version>
    72     </dependency>
    73     <dependency>
    74       <groupId>org.springframework</groupId>
    75       <artifactId>spring-tx</artifactId>
    76       <version>${spring.version}</version>
    77     </dependency>
    78     <!-- C3p0-->
    79     <dependency>
    80       <groupId>com.mchange</groupId>
    81       <artifactId>c3p0</artifactId>
    82       <version>0.9.5.4</version>
    83     </dependency>
    84   </dependencies>
    View Code

    applicationContext.xml:

    C3p0连接配置:

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <beans xmlns="http://www.springframework.org/schema/beans"
      3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
      4        xmlns:tx="http://www.springframework.org/schema/tx"
      5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
      6 
      7 
      8     <!-- 配置Jdbc模板-->
      9     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
     10         <property name="dataSource" ref="dataSource"></property>
     11     </bean>
     12 
     13     <bean id="userDao" class="com.etc.dao.UserDAO">
     14         <property name="jdbcTemplate" ref="jdbcTemplate"></property>
     15     </bean>
     16 
     17     <bean id="bankDao" class="com.etc.dao.BankDao">
     18         <property name="jdbcTemplate" ref="jdbcTemplate"></property>
     19     </bean>
     20 
     21     <bean id="bankServiceImpl" class="com.etc.service.serviceImpl.BankServiceImpl">
     22         <property name="bankDao" ref="bankDao"></property>
     23     </bean>
     24 
     25 
     26     <!--基于数据源的事务管理器,通过属性引用数据源-->
     27     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     28         <property name="dataSource" ref="dataSource"></property>
     29     </bean>
     30     <aop:config>
     31         <aop:pointcut expression="execution(* com.etc.service.*.*(..))" id="pc"/>
     32         <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
     33     </aop:config>
     34 
     35     <tx:advice id="txAdvice" transaction-manager="transactionManager">
     36         <tx:attributes>
     37             <tx:method name="*"/>
     38         </tx:attributes>
     39     </tx:advice>
     40 
     41     <!-- 配置数据源 -->
     42     <bean id="dataSource"
     43           class="com.mchange.v2.c3p0.ComboPooledDataSource"
     44           destroy-method="close">
     45         <property name="driverClass">
     46             <value>com.mysql.jdbc.Driver</value>
     47         </property>
     48         <property name="jdbcUrl">
     49             <value>jdbc:mysql://localhost:3310/day07?characterEncoding=UTF-8</value>
     50         </property>
     51         <property name="user">
     52             <value>root</value>
     53         </property>
     54         <property name="password">
     55             <value>123456</value>
     56         </property>
     57 
     58         <!--连接池中保留的最小连接数。-->
     59         <property name="minPoolSize">
     60             <value>5</value>
     61         </property>
     62 
     63         <!--连接池中保留的最大连接数。Default: 15 -->
     64         <property name="maxPoolSize">
     65             <value>30</value>
     66         </property>
     67 
     68         <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
     69         <property name="initialPoolSize">
     70             <value>10</value>
     71         </property>
     72 
     73         <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
     74         <property name="maxIdleTime">
     75             <value>60</value>
     76         </property>
     77 
     78         <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
     79         <property name="acquireIncrement">
     80             <value>5</value>
     81         </property>
     82 
     83         <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
     84          属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
     85          如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
     86         <property name="maxStatements">
     87             <value>0</value>
     88         </property>
     89 
     90         <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
     91         <property name="idleConnectionTestPeriod">
     92             <value>60</value>
     93         </property>
     94 
     95         <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
     96         <property name="acquireRetryAttempts">
     97             <value>30</value>
     98         </property>
     99 
    100         <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
    101          保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
    102          获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
    103         <property name="breakAfterAcquireFailure">
    104             <value>true</value>
    105         </property>
    106 
    107         <!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
    108          时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
    109          等方法来提升连接测试的性能。Default: false -->
    110         <property name="testConnectionOnCheckout">
    111             <value>false</value>
    112         </property>
    113     </bean>
    114 </beans>

    userDao

     1 package com.etc.dao;
     2 
     3 import com.etc.entity.User;
     4 import org.springframework.jdbc.core.JdbcTemplate;
     5 import org.springframework.jdbc.core.RowMapper;
     6 
     7 import java.sql.ResultSet;
     8 import java.sql.SQLException;
     9 import java.util.List;
    10 
    11 public class UserDAO {
    12 
    13     private JdbcTemplate jdbcTemplate;
    14 
    15     public void save() {
    16         jdbcTemplate.execute("insert into t_user (username,password) values ('3','4')");
    17     }
    18 
    19 
    20     public List<User> queryAll() {
    21         return jdbcTemplate.query("select * from t_user", new RowMapper<User>() {
    22             @Override
    23             public User mapRow(ResultSet resultSet, int i) throws SQLException {
    24                 return result(resultSet);
    25             }
    26         });
    27     }
    28 
    29     public User query(User user) {
    30         return jdbcTemplate.queryForObject("select * from t_user where id=?", new Object[]{user.getId()}, new RowMapper<User>() {
    31             @Override
    32             public User mapRow(ResultSet resultSet, int i) throws SQLException {
    33                 return result(resultSet);
    34             }
    35         });
    36     }
    37 
    38 
    39     public static User result(ResultSet resultSet) throws SQLException {
    40         User user = new User();
    41         user.setId(resultSet.getInt("id"));
    42         user.setUsername(resultSet.getString("username"));
    43         user.setPassword(resultSet.getString("password"));
    44         return user;
    45     }
    46 
    47 
    48     public JdbcTemplate getJdbcTemplate() {
    49         return jdbcTemplate;
    50     }
    51 
    52     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    53         this.jdbcTemplate = jdbcTemplate;
    54     }
    55 }
    View Code
  • 相关阅读:
    H5新增——html概述
    H5新增———html5概述
    ASP.NET Web API Demo OwinSelfHost 自宿主 Swagger Swashbuckle 在线文档
    如何写个死循环,既不独占线程,又不阻塞UI线程?
    C# 扩展TaskScheduler实现独立线程池,支持多任务批量处理,互不干扰,无缝兼容Task
    C# async await 异步执行方法封装 替代 BackgroundWorker
    巨坑!
    C# .NET Socket SocketHelper 高性能 5000客户端 异步接收数据
    一个简单的例子看明白 async await Task
    一个非常轻量级的 Web API Demo
  • 原文地址:https://www.cnblogs.com/LiuOOP/p/11189210.html
Copyright © 2011-2022 走看看