使用Spring提供的JdbcTemplate操作数据库

1、db.properties

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. jdbc.url= jdbc\:mysql\://localhost\:3306/testdatabase  
  2. jdbc.driver=com.mysql.jdbc.Driver  
  3. jdbc.user=root  
  4. jdbc.pwd=1234  
  5. c3p0.initialPoolSize=3  
  6. c3p0.maxPoolSize=10  
  7. c3p0.maxStatements=100  
  8. c3p0.acquireIncrement=2  

2、log4j.properties

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. ### 设置###    
  2. ###debug,stdout,D,E都是自己起appender的名称    
  3. ###在后面的appender进行了具体的配置    
  4. log4j.rootLogger = debug,stdout,D,E    
  5.    
  6. ### 输出信息到控制抬 ###    
  7. log4j.appender.stdout = org.apache.log4j.ConsoleAppender    
  8. log4j.appender.stdout.Target = System.out    
  9. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout    
  10. log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n    
  11.    
  12. ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###    
  13. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender    
  14. log4j.appender.D.File = E\://logs/log.log    
  15. log4j.appender.D.Append = true    
  16. log4j.appender.D.Threshold = DEBUG     
  17. log4j.appender.D.layout = org.apache.log4j.PatternLayout    
  18. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n    
  19.    
  20. ### 输出ERROR 级别以上的日志到=E://logs/error.log ###    
  21. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender    
  22. log4j.appender.E.File =E\://logs/error.log     
  23. log4j.appender.E.Append = true    
  24. log4j.appender.E.Threshold = ERROR     
  25. log4j.appender.E.layout = org.apache.log4j.PatternLayout    
  26. log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n   


3、bean.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  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:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop"  
  6.     xsi:schemaLocation="  
  7.         http://www.springframework.org/schema/beans  
  8.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  9.         http://www.springframework.org/schema/context  
  10.         http://www.springframework.org/schema/context/spring-context.xsd  
  11.         http://www.springframework.org/schema/aop  
  12.         http://www.springframework.org/schema/aop/spring-aop.xsd">  
  13.   
  14.     <!-- 开启注解扫描 -->  
  15.     <context:component-scan base-package="com.dao" />  
  16.   
  17.     <!-- 加载配置文件 -->  
  18.     <!--配置数据源属性文件 -->  
  19.     <bean id="propertyConfigurer"  
  20.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  21.         <property name="locations">  
  22.             <list>  
  23.                 <value>classpath:mysql.properties</value>  
  24.                 <!-- <value>/WEB-INF/configs/mysql.properties</value> -->  
  25.             </list>  
  26.         </property>  
  27.     </bean>  
  28.   
  29.     <!-- dao 实例 -->  
  30.     <bean id="userDao" class="com.dao.UserDao" />  
  31.   
  32.   
  33. </beans>   

4、bean-jdbc-tx.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  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:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.          http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.          http://www.springframework.org/schema/context  
  9.          http://www.springframework.org/schema/context/spring-context.xsd  
  10.          http://www.springframework.org/schema/aop  
  11.          http://www.springframework.org/schema/aop/spring-aop.xsd  
  12.          http://www.springframework.org/schema/tx  
  13.          http://www.springframework.org/schema/tx/spring-tx.xsd">  
  14.   
  15.     <!-- JDBC的事务配置 -->  
  16.   
  17.     <!-- 1. 数据源对象: C3P0连接池 -->  
  18.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  19.         <property name="driverClass" value="${jdbc.driver}"></property>  
  20.         <property name="jdbcUrl" value="${jdbc.url}"></property>  
  21.         <property name="user" value="${jdbc.user}"></property>  
  22.         <property name="password" value="${jdbc.pwd}"></property>  
  23.         <property name="initialPoolSize" value="${c3p0.initialPoolSize}"></property>  
  24.         <property name="maxPoolSize" value="${c3p0.maxPoolSize}"></property>  
  25.         <property name="maxStatements" value="${c3p0.maxStatements}"></property>  
  26.         <property name="acquireIncrement" value="${c3p0.acquireIncrement}"></property>  
  27.     </bean>  
  28.   
  29.     <!-- 2. 创建JdbcTemplate对象 -->  
  30.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  31.         <property name="dataSource" ref="dataSource" />  
  32.     </bean>  
  33.   
  34.   
  35.     <!-- #############5. Spring声明式事务管理配置############### -->  
  36.     <!-- 5.1 配置事务管理器类 -->  
  37.     <bean id="txManager"  
  38.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  39.         <property name="dataSource" ref="dataSource"></property>  
  40.     </bean>  
  41.   
  42.     <!-- 5.2 配置事务增强(如果管理事务?) -->  
  43.     <tx:advice id="txAdvice" transaction-manager="txManager">  
  44.         <tx:attributes>  
  45.             <tx:method name="find*" read-only="true" />  
  46.             <tx:method name="save*" propagation="REQUIRED" />  
  47.             <tx:method name="delete*" propagation="REQUIRED" />  
  48.             <tx:method name="update*" propagation="REQUIRED" />  
  49.         </tx:attributes>  
  50.     </tx:advice>  
  51.   
  52.     <!-- 5.3 Aop配置: 拦截哪些方法(切入点表表达式) + 应用上面的事务增强配置 -->  
  53.     <aop:config>  
  54.         <aop:pointcut expression="execution(* com.dao.*.*(..))"  
  55.             id="pt" />  
  56.         <aop:advisor advice-ref="txAdvice" pointcut-ref="pt" />  
  57.     </aop:config>  
  58. </beans>        

5、UserDao.Java

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class UserDao {  
  2.   
  3.     @Resource  
  4.     private JdbcTemplate jdbcTemplate;  
  5.   
  6.     public void save(User user) {  
  7.         String sql = " insert into user(name) values(?) ";  
  8.         jdbcTemplate.update(sql, user.getName());  
  9.     }  
  10.   
  11.     public List<User> findAll() {  
  12.         String sql = " select * from user ";  
  13.         return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(  
  14.                 User.class));  
  15.     }  
  16.   
  17.     public User findById(int id) {  
  18.         String sql = " select * from user where id = ?";  
  19.         return jdbcTemplate.queryForObject(sql,  
  20.                 new BeanPropertyRowMapper<User>(User.class), id);  
  21.     }  
  22.   
  23.     public void update(User user) {  
  24.         String sql = "update user set name = ? where id = ?";  
  25.         System.out.println(user.getName());  
  26.         jdbcTemplate.update(sql, user.getName(), user.getId());  
  27.     }  
  28.   
  29.     public void delete(User user) {  
  30.         jdbcTemplate.update("delete from user where id = ?",  
  31.                 new Object[] { user.getId() },  
  32.                 new int[] { java.sql.Types.INTEGER });  
  33.     }  
  34. }  

6、User.java

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class User {  
  2.     private int id;  
  3.     private String name;  
  4.   
  5.     public User() {  
  6.     }  
  7.   
  8.     public int getId() {  
  9.         return id;  
  10.     }  
  11.   
  12.     public void setId(int id) {  
  13.         this.id = id;  
  14.     }  
  15.   
  16.     public String getName() {  
  17.         return name;  
  18.     }  
  19.   
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.   
  24.     @Override  
  25.     public String toString() {  
  26.         return "User [id=" + id + ", name=" + name + "]";  
  27.     }  
  28.   
  29. }  


7、UserTest.java

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class UserTest {  
  2.     public static void main(String[] args) {  
  3.         ApplicationContext context = new ClassPathXmlApplicationContext(  
  4.                 "classpath:bean*.xml");  
  5.         UserDao userDao = context.getBean(UserDao.class);  
  6.         System.out.println(userDao);  
  7.         // 测试单个对象的获取  
  8.         User user = userDao.findById(1);  
  9.         System.out.println(user);  
  10.         // 测试List的获取  
  11.         List<User> list = userDao.findAll();  
  12.         System.out.println(list);  
  13.         // 测试更新  
  14.         User updateUser = new User();  
  15.         updateUser.setId(1);  
  16.         // libk  
  17.         updateUser.setName("111");  
  18.         userDao.update(updateUser);  
  19.         user = userDao.findById(1);  
  20.         System.out.println(user);  
  21.   
  22.         // 删除  
  23.         // userDao.delete(user);  
  24.         // 保存  
  25.         // user.setId(1);  
  26.         // user.setName("111111");  
  27.         // userDao.save(user);  
  28.     }  
  29. }  

8、 源码下载
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值