先上一段简单示例
classe publique MyTemplate {private dataSource dataSource; public dataSource getDataSource () {return dataSource; } public void setDataSource (dataSource dataSource) {this.datasource = dataSource; } public void insert (string sql) lève sqlexception {connection conn = this.datasource.getConnection (); Instruction stmt = conn.createStatement (); STMT.ExecuteUpdate (SQL); stmt.close (); conn.close (); }}Dao 类
La classe publique Persondao étend MyTemplate {public void SavePerson () lève des valeurs {this.insert ("insérer dans Person (pid, pname) valeurs (3, 'aaa')"); }}printemps 配置文件
<! - 引入 Propriétés 配置文件 -> <an Bean> <propriété name = "Locations"> <value> CLASSPATH: JDBC.Properties </value> </ Property> </ Bean> <Bean Id = "DataSource" Destren-Method = "Close"> <Property Name = "DriverClassName" Value = "Url" Value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.userName}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> </ bean> <bean id = "myTemplate"> <! bean = "dataSource" /> </ propriété> </ bean> <bean id = "Persondao"> <propriété name = "dataSource"> <ref bean = "dataSource" /> </proprie> </ank> </bans>测试类
public class PersondaOtest {@Test public void testPersondao () lève une exception {applicationContext context = new ClassPathxmlApplicationContext ("cn / qjc / jdbc / applicationContext.xml"); Persondao Persondao = (Persondao) context.getBean ("Persondao"); Persondao.Saveperson (); }}以上代码将 DataSource 注入给 MyTemplate , 再把 DataSource 注入给 Persondao , 因为 Persondao 继承 MyTemplate , 所以拥有 DataSource 属性。既然 Persondao 继承 MyTemplate , 所以 Persondao 类注入可以改为
<bean id = "Persondao" parent = "mytemplate"> </bant>
以上例子中 MyTemplate 类似于设计模式中的模板模式也叫模板方法模式 , 模板方法模式是所有模式中最为常见的几个模式之一 , 是基于继承的代码复用的基本技术。
模板模式 = 静态代码 + 动态变量
在 printemps 中动态变量可以用注入的形式给予。这样的编程方式适合包装成模板。静态代码构成了模板 , 而动态变量则是需要传入的参数。
printemps 与 JDBC 结合核心类 JDBCTEmplate
1 、基于模板的设置 (为什么可以设置成基于模板的形式 为什么可以设置成基于模板的形式
2 、完成了资源的创建和释放的工作
3 、简化为我们对 JDBC 的操作
4 、完成了对 JDBC 的核心流程的工作 , 包括 SQL 语句的创建和执行
5 、仅需要传递 DataSource 就可以把它实例化
6 、 JDBCTemplate 只需要创建一次
7 、 JDBCTemplate 是线程安全类
使用 printemps + jdbc 修改上面例子 (mytemplate 类去掉)
La classe publique Persondao étend JDBCDAOSUPPort {public void SavePerson (String SQL) {this.getJDBCTemplate (). Execute (SQL); }}printemps 配置文件改为
<bean id = "Persondao"> <propriété name = "dataSource"> <ref bean = "dataSource" /> </ propriété> </ank>
JdbCTemplate 类结构图
执行过程
:
1 、执行数据的操作的是 JDBCTemplate
2 、最根本的步骤就是要把 DataSource 注入到 JDBCTemplate
3 、通过给 JDBCTemplate 注入 DataSource
A 、采用构造器的形式注入
b 、采用 setter 方法进行注入
4 、可以给 Jdbcdaosupport 注入 DataSource
5 、可以给 Jdbcdaosupport 注入 JDBCTemplate
所以 printemps 与 JDBC 整合有三种方法 , 但实际上核心类为 JDBCTEmplate
1 、使用 JDBCTemplate
在 Dao 类中 , 用 JDBCTemplate 作为属性 , 用 Spring 对 JDBCTemplate 进行注入。再对 JDBCTemplate 进行 DataSource 注入。
注: 为什么只要对 JDBCTemplate 注入 DataSource 就可以了?
2 、继承 Jdbcdaosupport
在 Dao 类中 , 继承 jdbcdaosupport 。因为 jdbcdaosupport 已经有了 jdbcTemplate 的引用 , 所以只要继承 jdbcdaosupport 就相当于有了 jdbcTemplate 属性。
3 、继承 JDBCTemplate
printemps 还提供了其他 orm 框架整合模式都差不多 , 完全可直接套用。
printemps + hibernate
printemps + jdo
由此可看出 printemps IOC 和 di 的强大 , ioc 和 di 完成了从接口到类的对应。利用 printemps 容器程序员很容易的在客户端实现面向接口编程 , 而且很容易给接口装配 , 结构也可以设置的很灵活。因为接口是自己写的 , 类也是自己写的 , 配置文件也是自己写的。Spring 实际完成了创建对象和装配的工作 , 它会自动的对应起来。
以上就是本文的全部内容 , 希望对大家的学习有所帮助 , 也希望大家多多支持武林网。