1、db.properties
- jdbc.url= jdbc\:mysql\://localhost\:3306/testdatabase
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.user=root
- jdbc.pwd=1234
- c3p0.initialPoolSize=3
- c3p0.maxPoolSize=10
- c3p0.maxStatements=100
- c3p0.acquireIncrement=2
2、log4j.properties
- ### 设置###
- ###debug,stdout,D,E都是自己起appender的名称
- ###在后面的appender进行了具体的配置
- log4j.rootLogger = debug,stdout,D,E
- ### 输出信息到控制抬 ###
- log4j.appender.stdout = org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target = System.out
- log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
- ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
- log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
- log4j.appender.D.File = E\://logs/log.log
- log4j.appender.D.Append = true
- log4j.appender.D.Threshold = DEBUG
- log4j.appender.D.layout = org.apache.log4j.PatternLayout
- log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
- ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
- log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
- log4j.appender.E.File =E\://logs/error.log
- log4j.appender.E.Append = true
- log4j.appender.E.Threshold = ERROR
- log4j.appender.E.layout = org.apache.log4j.PatternLayout
- log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
3、bean.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:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd">
- <!-- 开启注解扫描 -->
- <context:component-scan base-package="com.dao" />
- <!-- 加载配置文件 -->
- <!--配置数据源属性文件 -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath:mysql.properties</value>
- <!-- <value>/WEB-INF/configs/mysql.properties</value> -->
- </list>
- </property>
- </bean>
- <!-- dao 实例 -->
- <bean id="userDao" class="com.dao.UserDao" />
- </beans>
4、bean-jdbc-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:p="http://www.springframework.org/schema/p"
- 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.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd">
- <!-- JDBC的事务配置 -->
- <!-- 1. 数据源对象: C3P0连接池 -->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="${jdbc.driver}"></property>
- <property name="jdbcUrl" value="${jdbc.url}"></property>
- <property name="user" value="${jdbc.user}"></property>
- <property name="password" value="${jdbc.pwd}"></property>
- <property name="initialPoolSize" value="${c3p0.initialPoolSize}"></property>
- <property name="maxPoolSize" value="${c3p0.maxPoolSize}"></property>
- <property name="maxStatements" value="${c3p0.maxStatements}"></property>
- <property name="acquireIncrement" value="${c3p0.acquireIncrement}"></property>
- </bean>
- <!-- 2. 创建JdbcTemplate对象 -->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <!-- #############5. Spring声明式事务管理配置############### -->
- <!-- 5.1 配置事务管理器类 -->
- <bean id="txManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
- <!-- 5.2 配置事务增强(如果管理事务?) -->
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="find*" read-only="true" />
- <tx:method name="save*" propagation="REQUIRED" />
- <tx:method name="delete*" propagation="REQUIRED" />
- <tx:method name="update*" propagation="REQUIRED" />
- </tx:attributes>
- </tx:advice>
- <!-- 5.3 Aop配置: 拦截哪些方法(切入点表表达式) + 应用上面的事务增强配置 -->
- <aop:config>
- <aop:pointcut expression="execution(* com.dao.*.*(..))"
- id="pt" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="pt" />
- </aop:config>
- </beans>
5、UserDao.Java
- public class UserDao {
- @Resource
- private JdbcTemplate jdbcTemplate;
- public void save(User user) {
- String sql = " insert into user(name) values(?) ";
- jdbcTemplate.update(sql, user.getName());
- }
- public List<User> findAll() {
- String sql = " select * from user ";
- return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(
- User.class));
- }
- public User findById(int id) {
- String sql = " select * from user where id = ?";
- return jdbcTemplate.queryForObject(sql,
- new BeanPropertyRowMapper<User>(User.class), id);
- }
- public void update(User user) {
- String sql = "update user set name = ? where id = ?";
- System.out.println(user.getName());
- jdbcTemplate.update(sql, user.getName(), user.getId());
- }
- public void delete(User user) {
- jdbcTemplate.update("delete from user where id = ?",
- new Object[] { user.getId() },
- new int[] { java.sql.Types.INTEGER });
- }
- }
6、User.java
- public class User {
- private int id;
- private String name;
- public User() {
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "User [id=" + id + ", name=" + name + "]";
- }
- }
7、UserTest.java
- public class UserTest {
- public static void main(String[] args) {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "classpath:bean*.xml");
- UserDao userDao = context.getBean(UserDao.class);
- System.out.println(userDao);
- // 测试单个对象的获取
- User user = userDao.findById(1);
- System.out.println(user);
- // 测试List的获取
- List<User> list = userDao.findAll();
- System.out.println(list);
- // 测试更新
- User updateUser = new User();
- updateUser.setId(1);
- // libk
- updateUser.setName("111");
- userDao.update(updateUser);
- user = userDao.findById(1);
- System.out.println(user);
- // 删除
- // userDao.delete(user);
- // 保存
- // user.setId(1);
- // user.setName("111111");
- // userDao.save(user);
- }
- }
8、 源码下载