博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Spring框架]Spring JDBCTmplate基础入门总结.
阅读量:4669 次
发布时间:2019-06-09

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

前言:

前面有讲过 Spring IOC以及AOP的基本使用方法, 这里就再来讲下Spring JDBCTemplate的使用方法.
一, 概述
这里先说一下Spring 整合的一些模板:
    
从上图中可以看出 Spring为各种支持的持久化技术,都提供了简单操作的模板和回调.
二, 使用JdbcTemplate

2.1 Spring JDBC是Spring提供的持久层技术

简化JDBC API开发,使用上和Apache公司的DBUtils框架非常类似
具体开发使用的jar包结构如图:
    |
2.2, Spring配置连接池
  1, 配置Spring的内置的连接池 

1 
2
3
4
5
6
7

  2, 配置DBCP连接池

1 
2
3
4
5
6
7

注: 这里如果使用DBCP连接池的话还需要导入Spring 整合DBCP的两个jar包.

  3. C3P0连接池

1 
2
3
4
5
6
7

  4,引入属性文件: 写jdbc.properties 文件, 然后直接将配置文件注入到Spring中

      jdbc.properties 配置文件:

jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///spring_day02jdbc.user=rootjdbc.password=123

  Spring的核心配置中引入属性文件: 两种 方式

1 
2
3
4
5
6

三, 开发案例, 使用Spring JDBCTemplate 进行CRUD操作.

Customer.java:

1 public class Customer { 2     private Integer cid; 3     private String cname; 4     private Integer age; 5     public Integer getCid() { 6         return cid; 7     } 8     public void setCid(Integer cid) { 9         this.cid = cid;10     }11     public String getCname() {12         return cname;13     }14     public void setCname(String cname) {15         this.cname = cname;16     }17     public Integer getAge() {18         return age;19     }20     public void setAge(Integer age) {21         this.age = age;22     }23     @Override24     public String toString() {25         return "Customer [cid=" + cid + ", cname=" + cname + ", age=" + age26                 + "]";27     }28     29 }

CustomerDao.java:

1 /** 2  * 完成对Customer的CRUD的操作 3  *  4  */ 5 public class CustomerDao extends JdbcDaoSupport {
12 13 public void save(Customer customer) {14 this.getJdbcTemplate().update("insert into customer values (null,?,?)",15 customer.getCname(), customer.getAge());16 }17 18 public void update(Customer customer) {19 this.getJdbcTemplate().update(20 "update customer set cname = ?,age = ? where cid = ?",21 customer.getCname(), customer.getAge(), customer.getCid());22 }23 24 public void delete(Integer cid) {25 this.getJdbcTemplate()26 .update("delete from customer where cid = ?", cid);27 }28 29 public Integer findCount() {30 int count = this.getJdbcTemplate().queryForInt(31 "select count(*) from customer");32 return count;33 }34 35 public String findNameById(Integer cid) {36 String cname = this.getJdbcTemplate().queryForObject(37 "select cname from customer where cid = ?", String.class, cid);38 return cname;39 }40 41 public Customer findById(Integer cid) {42 Customer customer = this.getJdbcTemplate().queryForObject(43 "select * from customer where cid = ?",44 new BeanPropertyRowMapper
(Customer.class), cid);45 return customer;46 }47 48 public List
findAll() {49 List
list = this.getJdbcTemplate().query("select * from customer",50 new BeanPropertyRowMapper
(Customer.class));51 return list;52 }53 }

SpringDemo2.java 测试类:

1 @RunWith(SpringJUnit4ClassRunner.class) 2 @ContextConfiguration("classpath:applicationContext2.xml") 3 public class SpringDemo2 { 4  5     @Resource(name="customerDao") 6     private CustomerDao customerDao; 7      8     @Test 9     public void demo1(){10         11         Customer customer = new Customer();12         customer.setCname("马大帅");13         customer.setAge(48);14         15         customerDao.save(customer);16     }17     18     @Test19     public void demo2(){20         21         Customer customer = new Customer();22         customer.setCid(8);23         customer.setCname("马小帅");24         customer.setAge(38);25         26         customerDao.update(customer);27     }28     29     @Test30     public void demo3(){31         customerDao.delete(7);32     }33     34     @Test35     public void demo4(){36         int count = customerDao.findCount();37         System.out.println(count);38     }39     40     @Test41     public void demo5(){42         String cname = customerDao.findNameById(8);43         System.out.println(cname);44     }45     46     @Test47     public void demo6(){48         Customer customer = customerDao.findById(8);49         System.out.println(customer);50     }51     52     @Test53     public void demo7(){54         List
customers = customerDao.findAll();55 for (Customer customer : customers) {56 System.out.println(customer);57 }58 }59 }

applicationContext.xml 配置文件:

1 
2
8 9 10
11 12
13
14
15
16
17
18
19 20 21
22
23
24
25

好了, 一个基本的CRUD操作就完成了, 在这里我们可以发现配置文件特别的简洁, 我们只是给customerDao注入了一个dataSource , 然后在CustomerDao.java中就可以用this.getJdbcTemplate()获取到JDBCTemplate的实例了, 这个原理是因为我们的CustomerDao继承了 JdbcDaoSupport , 这里我们就来看下它的源码:
首先我们使用this.getJdbcTemplate而获取到一个jdbcTemplate实例:

1 /**2  * Return the JdbcTemplate for this DAO,3  * pre-initialized with the DataSource or set explicitly.4  */5 public final JdbcTemplate getJdbcTemplate() {6   return this.jdbcTemplate;7 }

那么又返回的这个this.jdbcTemplate是否是有值得呢?  再看源代码原来是在我们setDataSource的时候生成了jdbcTemplate实例.

1 /**2  * Set the JDBC DataSource to be used by this DAO.3  */4 public final void setDataSource(DataSource dataSource) {5     if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {6         this.jdbcTemplate = createJdbcTemplate(dataSource);7         initTemplateConfig();8     }9 }

 

好了, 到了这里就没有了, 关于JDBCTemplate的总结就这么多了. (该睡觉了.)

转载于:https://www.cnblogs.com/wang-meng/p/5645395.html

你可能感兴趣的文章
ctype
查看>>
jsp 修饰 Request 及Response
查看>>
HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
查看>>
对象的类型转换P109
查看>>
sqlite 查询表和字段是否存在
查看>>
http => https 升级
查看>>
Window 分布式学习-好文收藏
查看>>
Android TextUtils类介绍
查看>>
linux echo设置颜色
查看>>
英文参考文献标准格式:论文参考文献格式规范(转载)
查看>>
css div框加小箭头
查看>>
Eclipse快捷键与使用技巧总结
查看>>
Solr4.8.0源码分析(16)之SolrCloud索引深入(3)
查看>>
PEP8 - Python编码规范
查看>>
div放置图片总结
查看>>
FZOJβ #45. 染色问题
查看>>
Python之SYS模块
查看>>
webapi文件上传和下载
查看>>
HDU 1540 Tunnel Warfare [二分 + 线段树]
查看>>
C++:构造函数和析构函数能否为虚函数
查看>>