博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA框架 Spring 调用jdbcsuport简化开发
阅读量:5260 次
发布时间:2019-06-14

本文共 3703 字,大约阅读时间需要 12 分钟。

一)使用DAO的jdbcsuport来简化开发

首先来清楚一个概念:

我们在进行配置文件来进行依赖注入的时候,主要是通过set方法来进行设置的。

正常我们使用spring的jdbctemplate的时候,我们需要注入DataSource和jdbctemplate两个类。而jdbcsuport帮我们做了这些事情。所以我们只需要在Dao层继承这类即可。

一起来看jdbcsuport源码:

首先提供了字段jdbctemplate字段:

然后分别给提供了该字段的set方法和get方法:

也就是说我们在获取该字段(private修饰),设置该字段(提供注入),可以给配置文件进行依赖注入。

然后在看:

如果获取jdbctemplate的时候,是null,会调用createJdbcTemplate方法,new jdbctemplate的对象。

所以现在我们可以不依赖注入:jdbctemplate。只是注入DataSource即可。

这种方法,其实并不好,因为spring 一直强调低耦合,实例化交给IOC处理。

完整代码例子:

Dao'层:

1 // 2 // Source code recreated from a .class file by IntelliJ IDEA 3 // (powered by Fernflower decompiler) 4 // 5  6 package org.springframework.jdbc.core.support; 7  8 import java.sql.Connection; 9 import javax.sql.DataSource;10 import org.springframework.dao.support.DaoSupport;11 import org.springframework.jdbc.CannotGetJdbcConnectionException;12 import org.springframework.jdbc.core.JdbcTemplate;13 import org.springframework.jdbc.datasource.DataSourceUtils;14 import org.springframework.jdbc.support.SQLExceptionTranslator;15 16 public abstract class JdbcDaoSupport extends DaoSupport {17     private JdbcTemplate jdbcTemplate;18 19     public JdbcDaoSupport() {20     }21 22     public final void setDataSource(DataSource dataSource) {23         if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {24             this.jdbcTemplate = this.createJdbcTemplate(dataSource);25             this.initTemplateConfig();26         }27 28     }29 30     protected JdbcTemplate createJdbcTemplate(DataSource dataSource) {31         return new JdbcTemplate(dataSource);32     }33 34     public final DataSource getDataSource() {35         return this.jdbcTemplate != null ? this.jdbcTemplate.getDataSource() : null;36     }37 38     public final void setJdbcTemplate(JdbcTemplate jdbcTemplate) {39         this.jdbcTemplate = jdbcTemplate;40         this.initTemplateConfig();41     }42 43     public final JdbcTemplate getJdbcTemplate() {44         return this.jdbcTemplate;45     }46 47     protected void initTemplateConfig() {48     }49 50     protected void checkDaoConfig() {51         if (this.jdbcTemplate == null) {52             throw new IllegalArgumentException("'dataSource' or 'jdbcTemplate' is required");53         }54     }55 56     protected final SQLExceptionTranslator getExceptionTranslator() {57         return this.getJdbcTemplate().getExceptionTranslator();58     }59 60     protected final Connection getConnection() throws CannotGetJdbcConnectionException {61         return DataSourceUtils.getConnection(this.getDataSource());62     }63 64     protected final void releaseConnection(Connection con) {65         DataSourceUtils.releaseConnection(con, this.getDataSource());66     }67 }

 

service层:

1 package jd.com.UserService; 2  3  4 import jd.com.UserDao.userdao; 5 import org.springframework.stereotype.Service; 6  7 import javax.annotation.Resource; 8  9 10 public class UserServiceImpl implements UserService {11 12     private userdao userdaoIMpl;13 14     public void setUserdaoIMpl(userdao userdaoIMpl) {15         this.userdaoIMpl = userdaoIMpl;16     }17 18     @Override19     public void toaccount(int mon1, int mon2) {20 21         System.out.println(this.userdaoIMpl);22         userdaoIMpl.addMoney(mon1);23         userdaoIMpl.delMoney(mon2);24     }25 }

 

配置文件:

1 
2
15 16 17 18 19
20 21
22
23
24
25
26
27
28
29
30
31
32
33 34

 

注意:

       这里采用的xml配置文件方式进行注入和依赖注入。

  如果都使用注解,会导致datasource无法注入的情况。

个人认为合理方式:不继承jdbcsuport这个类。

 

转载于:https://www.cnblogs.com/evilliu/p/8897371.html

你可能感兴趣的文章
mysql启动过程
查看>>
ORACLE的启动过程
查看>>
ORACLE 清理SYSAUX表空间
查看>>
postgressql启动与关闭
查看>>
sqlserver数据库的启动
查看>>
浅析Kubernetes资源管理-资源预留
查看>>
机器学习在360私有云容器服务上的实践
查看>>
【Flink】数据流编程模型
查看>>
应用Python来计算排列中的逆序数个数
查看>>
2017前端面试题总结
查看>>
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
关于拷贝构造函数与赋值构造函数的深刻解析
查看>>
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
用原生JS获取非行间样式
查看>>
toolbox类
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>