先上一段简单示例
classe pública myTemplate {private DataSource DataSource; public DataSource getDataSource () {return DataSource; } public void SetDataSource (DataSource DataSource) {this.DataSource = DataSource; } public void insert (string sql) lança sqLexception {conexão conn = this.dataSource.getConnection (); Instrução stmt = conn.createstatement (); stmt.executeUpdate (SQL); stmt.close (); Conn.Close (); }}Dao 类
classe pública persondao estende o mytemplate {public void savePerson () lança exceção {this.insert ("inserir na pessoa (pid, pname) valores (3, 'aaa')"); }}primavera 配置文件
<!-引入 Propriedades 配置文件-> <Bean> <propriedade name = "locations"> <Value> ClassPath: jdbc.properties </value> </propriedade> </bean> <bean id = "datasource" de destroy-method = "close"> <nome da propriedade "driver"/") value = "$ {jdbc.url}" /> <propriedade name = "nome de usuário" value = "$ {jdbc.username}" /> <names name = "senha" value = "$ {jdbc.password}" /> < /bean> <repercussão = "myTemplate"> <! bean = "DataSource"/> </ouse> </i bean> <bean id = "persondao"> <propriedade name = "DataSource"> <ref bean = "DataSource"/> </Property> </bean> </ Beans>测试类
classe pública PERSONDAOTEST {@Test public void testPersondao () lança exceção {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"> </shean>
以上例子中 MyTemplate 类似于设计模式中的模板模式也叫模板方法模式 , 模板方法模式是所有模式中最为常见的几个模式之一 , 是基于继承的代码复用的基本技术。
模板模式 = 静态代码+动态变量
在 Spring 中动态变量可以用注入的形式给予。这样的编程方式适合包装成模板。静态代码构成了模板 , 而动态变量则是需要传入的参数。
Spring 与 JDBC 结合核心类 JDBCTEMPLATE
1 、基于模板的设置 (为什么可以设置成基于模板的形式)
2 、完成了资源的创建和释放的工作
3 、简化为我们对 JDBC 的操作
4 、完成了对 jdbc 的核心流程的工作 , 包括 sql 语句的创建和执行
5 、仅需要传递 DataSource 就可以把它实例化
6 、 jdbctemplate 只需要创建一次
7 、 jdbctemplate 是线程安全类
Spring Spring+JDBC 修改上面例子 (MyTemplate 类去掉)
classe pública Persondao estende Jdbcdaosupport {public void savePerson (string sql) {this.getjdbcTemplate (). Execute (sql); }}primavera 配置文件改为
<bean id = "persondao"> <nome da propriedade = "DataSource"> <ref Bean = "DataSource"/> </Property> </i bean>
JDBCTemplate 类结构图
执行过程
说明
1 、执行数据的操作的是 jdbctemplate
2 、最根本的步骤就是要把 DataSource 注入到 JDBCTemplate
3 、通过给 JDBCTEMPLATE 注入 DataSource
A 、采用构造器的形式注入
B 、采用 Setter 方法进行注入
4 、可以给 jdbcdaosupport 注入 DataSource
5 、可以给 jdbcdaosupport 注入 jdbctemplate
所以 Spring 与 Jdbc 整合有三种方法 , 但实际上核心类为 JdbcTemplate
1 、使用 jdbctemplate
在 Dao 类中 , 用 JdbcTemplate 作为属性 , 用 Spring 对 JdbcTemplate 进行注入。再对 JdbcTemplate 进行 DataSource 注入。
注 : 为什么只要对 JdbcTemplate 注入 DataSource 就可以了?
2 、继承 jdbcdaosupport
在 Dao 类中 , Jdbcdaosupport 。因为 jdbcdaosupport 已经有了 jdbctemplate 的引用 , 所以只要继承 jdbcdaosupport 就相当于有了 jdbctemplate 属性。
3 、继承 jdbctemplate
primavera 还提供了其他 orm 框架整合模式都差不多 , 完全可直接套用。
Spring+Hibernate
Spring+JDO
由此可看出 Spring ioc 和 di , ioc 和 di 完成了从接口到类的对应。利用 mola 容器程序员很容易的在客户端实现面向接口编程 , , , , , 类也是自己写的 , 配置文件也是自己写的。Spring 实际完成了创建对象和装配的工作 , 它会自动的对应起来。
以上就是本文的全部内容 , 希望对大家的学习有所帮助 , 也希望大家多多支持武林网。