spring使用JdbcTemplate、JdbcDaoSupport模板类的数据源配置及db访问
来源:互联网 发布:mac windows触摸板 编辑:程序博客网 时间:2024/06/05 16:41
目录
- spring的JdbcTemplate类与JdbcDaoSupport类原理
- 使用JdbcDaoSupport的数据库访问
- 使用JdbcTemplate的数据库访问
spring的JdbcTemplate类与JdbcDaoSupport类原理
spring访问数据库的方式有很多,自我理解,大体分为三类:
1.原始jdbc,通过获取数据库连接,然后自己创建、处理和释放连接等原始方式。
2.使用例如:JdbcTemplate、JdbcDaoSupport模板类,这种模板类spring将原始的jdbc的连接处理,封装至模板类中,使用起来方便快捷,避免处理各种资源和异常。
3.使用第三方orm框架,如hibernate、ibatis、mybatis等,与spring结合,配置完成,可方便访问数据库。
今天只是简单分享一下第二种方式。
对于JdbcDaoSupport,其实是在JdbcTemplate之上的一层封装,使dao层的类直接继承该类,就可以获取数据源或模板,对数据库进行操作。JdbcDaoSupport不仅兼容JdbcTemplate,同时还兼容了dataSource。而兼容dataSource,则也是将dataSource封装至JdbcTemplate。看源码,涉及两个方法:
<span style="white-space:pre"></span>public final void setDataSource(DataSource dataSource) {<span style="white-space:pre"></span>if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {<span style="white-space:pre"></span>this.jdbcTemplate = createJdbcTemplate(dataSource);<span style="white-space:pre"></span>initTemplateConfig();<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}
<span style="white-space:pre"></span>protected JdbcTemplate createJdbcTemplate(DataSource dataSource) {<span style="white-space:pre"></span>return new JdbcTemplate(dataSource);<span style="white-space:pre"></span>}由以上源码可知,使用JdbcDaoSupport时,是不能使用Autowired直接注入数据源的,因为setDataSource方法为final类型,无法被重写,只能在xml里配置实例化的dao,配置引用的数据源。
在JdbcTemplate类中,存在构造方法
<span style="white-space:pre"></span>public JdbcTemplate(DataSource dataSource) {setDataSource(dataSource);afterPropertiesSet();}由此构造方法可知,我们可以对JdbcTemplate的数据源进行手动设置,此时,可以使用@Autowired注解,将数据源注入,然后再重新new一个JdbcTemplate。
使用JdbcDaoSupport的数据库访问
无论哪一种方式,都需要配置好数据源,才可以进行数据库访问。
1.配置数据源
<span style="white-space:pre"></span><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${test.jdbc.driver}" /><property name="url" value="${test.jdbc.url}" /><property name="username" value="${test.jdbc.username}" /><property name="password" value="${test.jdbc.password}" /><property name="initialSize" value="${test.jdbc.initialSize}" /><property name="maxActive" value="${test.jdbc.maxActive}" /><property name="maxWait" value="60000" /><property name="poolPreparedStatements" value="true" /><!-- 连接被泄露时是否打印 --><property name="logAbandoned" value="true" /><!--removeAbandoned: 是否自动回收超时连接 --><property name="removeAbandoned" value="true" /><!--removeAbandonedTimeout: 超时时间(以秒数为单位) --><property name="removeAbandonedTimeout" value="10" /><property name="testOnBorrow" value="true" /><property name="validationQuery" value="show databases" /></bean>
2.实现DAO层类
<span style="white-space:pre"></span>import java.util.List;<span style="white-space:pre"></span>import java.util.Map;<span style="white-space:pre"></span>import org.springframework.beans.factory.annotation.Autowired;<span style="white-space:pre"></span>import org.springframework.jdbc.core.support.JdbcDaoSupport;<span style="white-space:pre"></span>import org.springframework.stereotype.Repository;<span style="white-space:pre"></span>public class MyDAO extends JdbcDaoSupport {<span style="white-space:pre"></span>public List<Map<String, Object>> test() {<span style="white-space:pre"></span>String sql = "select * from test limit 10";<span style="white-space:pre"></span>return this.getJdbcTemplate().queryForList(sql);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}
3.在xml中配置DAO实例,并引用数据源
<span style="white-space:pre"></span><bean id="myDAO" class="com.test.MyDAO"><property name="dataSource" ref="dataSource"></property></bean>
4.实现service层,并注入dao层实例引用
<span style="white-space:pre"></span>import java.util.List;<span style="white-space:pre"></span>import java.util.Map;<span style="white-space:pre"></span>import org.springframework.beans.factory.annotation.Autowired;<span style="white-space:pre"></span>import com.baidu.waimai.dao.impl.MyDAO;<span style="white-space:pre"></span>public class TestService {<span style="white-space:pre"></span>@Autowired<span style="white-space:pre"></span>private MyDAO myDAO;<span style="white-space:pre"></span>public void test() {<span style="white-space:pre"></span>List<Map<String, Object>> result = myDAO.test();<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}此种方式,容器在xml配置中拿到dataSource并将其赋给JdbcDaoSupport,并在JdbcDaoSupport中,调用createJdbcTemplate(DataSrouce dataSource)方法,以该数据源创建JdbcTemplate模板。然后进行数据库的操作。
使用JdbcTemplate的数据库访问
1.数据源配置
同上
2.实现DAO层
<span style="white-space:pre"></span>import java.util.List;<span style="white-space:pre"></span>import java.util.Map;<span style="white-space:pre"></span>import javax.sql.DataSource;<span style="white-space:pre"></span>import org.springframework.beans.factory.annotation.Autowired;<span style="white-space:pre"></span>import org.springframework.jdbc.core.JdbcTemplate;<span style="white-space:pre"></span>import org.springframework.stereotype.Repository;<span style="white-space:pre"></span>@Repository<span style="white-space:pre"></span>public class MyDAO {<span style="white-space:pre"></span>@Autowired<span style="white-space:pre"></span>private DataSource dataSource;<span style="white-space:pre"></span>public List<Map<String, Object>> test() {<span style="white-space:pre"></span>String sql = "select * from test limit 10";<span style="white-space:pre"></span>return getJdbcTemplate().queryForList(sql);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>private JdbcTemplate getJdbcTemplate() {<span style="white-space:pre"></span>return new JdbcTemplate(dataSource);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}
3.无需在xml中配置dao实例,因为用注解@Repository。
4.同上
哪种方式,看个人习惯,原理都是一样的,只是形式的不同。附:spring初学阶段,如有错误,欢迎指正。一起学习,共同进步~
0 0
- spring使用JdbcTemplate、JdbcDaoSupport模板类的数据源配置及db访问
- Spring + JdbcTemplate + JdbcDaoSupport。JdbcTemplate 和 JdbcDaoSupport的不同
- Spring mvc中jdbcDaoSupport和jdbcTemplate的使用
- Spring + JdbcTemplate + JdbcDaoSupport examples
- Spring + JdbcTemplate + JdbcDaoSupport
- Spring + JdbcTemplate + JdbcDaoSupport
- Spring + JdbcTemplate + JdbcDaoSupport examples
- Spring + JdbcTemplate + JdbcDaoSupport examples
- Spring - JdbcTemplate 和 JdbcDaoSupport
- JdbcTemplate模板配置及使用
- Spring JdbcTemplate的配置及使用
- Spring JdbcDaoSupport的使用
- 阿里druid数据源及JdbcTemplate配置使用
- jdbcTemplate模板和JdbcDaoSupport工具
- 【框架整合】二、Spring数据源配置及JdbcTemplate配置
- 18、(知识篇)Spring使用JDBCTemplate/JDBCDaoSupport/具名参数
- Spring + JdbcTemplate + JdbcDaoSupport + HibernateDaoSupport examples
- Spring中支持JDBC的JdbcTemplate模板类的使用
- 谷歌浏览器Chrome不再支持showModalDialog的解决办法
- Android OpenGL ES2.0编程教程系列之响应触摸事件(六)
- OpenCV数字图像处理六:图像垂直翻转
- Dubbo高级篇_09_Dubbo负载均衡策略
- MySQL常用指令,java,php程序员,数据库工程师必备。程序员小冰常用资料整理
- spring使用JdbcTemplate、JdbcDaoSupport模板类的数据源配置及db访问
- 10.HTTP层:HTTPRequest,HTTPServer与HTTPConnection---HTTP层的实现
- ajax基本格式
- 实现IOS可调用的库
- 阿里,腾讯 面试经验
- EJB
- Windows 上LAMP环境搭建(MySQL5.7+PHP7+Apache2.4)
- 传感器系列之4.8光敏传感器
- 深入浅出redis-sentinel