【示例】Spring中通过JdbcTemplate来实现数据库的操作
2016-07-02 12:12
711 查看
示例来源于《JavaEE轻量级企业应用实战(第四版)》
示例思路:通过对beans.xml的配置来实现ComboPooledDataSource类的自动注入和相关数据库连接信息的设置。使用之前记得先导入c3p0的相关包,以下是代码实现
beans.xml配置文件
NewsDao接口
NewsDaoImpl实现类
测试代码
数据库设计
这样执行的时候就会自动在NewsDaoImpl类中自动注入dataSource,通过这个dataSource来获取JdbcTemplate,JdbcTemplate是一个Spring封装好的通过JDBC来操作数据库的类,之后使用update方法对数据库表进行操作(update可以支持新增、修改和删除操作)
Slience的CSDN博客
Slience的简书博客
示例思路:通过对beans.xml的配置来实现ComboPooledDataSource类的自动注入和相关数据库连接信息的设置。使用之前记得先导入c3p0的相关包,以下是代码实现
beans.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 定义数据源Bean,使用C3P0数据源实现,并注入数据源的必要信息 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://localhost/spring" p:user="root" p:password="abc123" p:maxPoolSize="40" p:minPoolSize="2" p:initialPoolSize="2" p:maxIdleTime="30"/> <!-- 配置JDBC数据源的局部事务管理器,使用DataSourceTransactionManager 类 --> <!-- 该类实现PlatformTransactionManager接口,是针对采用数据源连接的特定实现--> <!-- 配置DataSourceTransactionManager时需要依注入DataSource的引用 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/> <!-- 配置一个业务逻辑Bean --> <bean id="newsDao" class="com.dao.impl.NewsDaoImpl" p:dataSource-ref="dataSource"/> <!-- 配置事务增强处理Bean,指定事务管理器 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 用于配置详细的事务语义 --> <tx:attributes> <!-- 所有以'get'开头的方法是read-only的 --> <tx:method name="get*" read-only="true"/> <!-- 其他方法使用默认的事务设置,指定超时时长为5秒 --> <tx:method name="*" isolation="DEFAULT" propagation="REQUIRED" timeout="5"/> </tx:attributes> </tx:advice> <!-- AOP配置的元素 --> <aop:config> <!-- 配置一个切入点,匹配org.crazyit.app.dao.impl包下 所有以Impl结尾的类里、所有方法的执行 --> <aop:pointcut id="myPointcut" expression="execution(* com.dao.impl.*Impl.*(..))"/> <!-- 指定在myPointcut切入点应用txAdvice事务增强处理 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/> </aop:config> </beans>
NewsDao接口
package com.dao; public interface NewsDao { public void insert(String title, String content); }
NewsDaoImpl实现类
package com.dao.impl; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import com.dao.NewsDao; import com.mchange.v2.c3p0.ComboPooledDataSource; public class NewsDaoImpl implements NewsDao { private ComboPooledDataSource dataSource; public void setDataSource(ComboPooledDataSource dataSource) { this.dataSource = dataSource; } @Override public void insert(String title, String content) { // TODO Auto-generated method stub JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update("insert into news_inf values(null, ?, ?)", title, content); jdbcTemplate.update("insert into news_inf values(null, ?, ?)", title, content); } }
测试代码
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); NewsDao newDao = applicationContext.getBean("newsDao", NewsDao.class); newDao.insert("测试标题", "测试内容");
数据库设计
CREATE TABLE `news_inf` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
这样执行的时候就会自动在NewsDaoImpl类中自动注入dataSource,通过这个dataSource来获取JdbcTemplate,JdbcTemplate是一个Spring封装好的通过JDBC来操作数据库的类,之后使用update方法对数据库表进行操作(update可以支持新增、修改和删除操作)
Slience的CSDN博客
Slience的简书博客
相关文章推荐
- equals()与==的区别与实际应用
- Spring MVC入门示例
- Javassist的动态代理实现。
- 从eclipse 转到android studio
- 聊一聊Java中double精度去哪了
- spring整合消息队列rabbitmq
- JDK环境变量设置方法
- java基础 继承 重写 多态 自动转型
- [Java并发包学习九]Java中的阻塞队列
- [Java并发包学习八]深度剖析ConcurrentHashMap
- java7中的智能try catch语法
- ZK Java API
- Java类的加载
- HeadFirstJava——3_变量
- 正则表达式总结 java 等
- Java-密码加密
- java环境变量配置
- [Java并发包学习六]Semaphore介绍
- Some elementary algorithms on discrete differential geometry(DDGSpring2016 Demos)
- [Java并发包学习五]CountDownLatch和CyclicBarrier介绍