文章来自 https://blog.csdn.net/qq_39651022/article/details/78478571
1.背景介绍
Java程序员在以后的工作中很重要的一点就是得和数据库打交道,但是代码和数据库是两个不相干的.
怎么使用代码对数据库进行操作呢,这个时候就用到JDBC。
2.知识剖析
什么是JDBC?
①JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,
可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
而多的这个template,就是模板,是Spring框架为我们提供的.
所以JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板
3.常见问题
jdbc做了什么?
JDBCTemplate做了什么?
jdbcTemplate是怎么做到的?
4.解决方案
JDBC的原理就是通过Connection这个类获取数据库的连接,
然后通过PreparedStatement类处理SQL语句,再通过它的.setObject方法传入数据,
最后通过方法.executeUpdate()和.executeQuery()执行更新,这就是JDBC的基本原理。
JDBCTemplate帮我们省去了很多麻烦.
②指定数据库连接参数.
打开数据库连接.
预编译并执行SQL语句.
遍历查询结果(如果需要的话).
处理抛出的任何异常.
处理事务.
关闭数据库连接
那么JDBCTemplate怎么做到的,这就和spring有关系了
SpringIOC容器将管理数据库连接的数据源当作普通Java Bean一样管理,
然后将数据源注入封装类JdbcTemplate中,:
JdbcTemplate的dataSource属性就是注入配置的数据源
5.编码实战
6.扩展思考
JdbcTemplate对JDBC的差别在哪?
jdbc需要每次进行数据库连接, 然后处理SQL语句,传值,关闭数据库.
甚至有时还可能会出现数据库忘记关闭导致连接被占用.
在以后的工作中,客户的需求肯定不是一成不变的,这就导致经常会改动数据库内容.
通过JDBCtemplate我们只需更改需要更改的那一部分内容就可以了,不需要进行全局修改.
Spring将替我们完成所有的JDBC底层细节处理工作.
7.参考文献
①百度
②http://www.cnblogs.com/binyue/p/4037628.html
8.更多讨论
(1)使用 jdbc.properties 有什么好处?
假如我们需要更改连接数据库的配置,我们直接在jdbc.properties里面更改一次就可以了.而JDBC的话需要增删改查里面每个连接数据库的配置都需要更改.
(2)如果真的发生数据库连接资源被占用,有什么解决方法
修改 MySQL 安装目录下 my.ini 或者 my.cnf 文件内的 max_user_connections 参数的数值,重启 MySQL 服务器。
(3)jdbctemplate和mybatis分别在什么情况下使用,jdbc template 和spring+mybatis一样吗?,和mybatis相比有什么优缺点?
这三个问题其实差不多.JDBCTemplate和Mybatis不一样,Mybatis的sql语句放在了mapper.xml文件里面.相当于配置在了环境当中,随时都可以使用. 而JDBCTemplate则是写在了实现类里面,使用的时候还要进行重新调用配置之类的. 以后的工作中可能对多个表进行操作,配置在环境中使用起来非常方便.
(4)如何来控制数据库的打开关闭.
Class.forName("com.mysql.jdbc.Driver"); 这个初始化驱动就是打开了数据库链接
Connection c = DriverManager.//连接数据库,
//关闭数据链接
ps.close();
c.close();
而JDBCTemplate的打开关闭则是封装在JDBCTemplate当中.
(5)jdbc 和 jdbctemplate 相比 效率有差别么
单从效率方面来说,实际上jdbc比jdbctemplate的效率会高一点.jdbcTemplate则更方便我们进行更改内容,和理解当中的逻辑.
(6)jdbcTemplate 实现执行多条sql语句.
一种直接用mysql的批量处理语句.
另外一种拼接SQL语句直接一次性提交多少条数据.
(7)jdbcTemplate有什么缺点
必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存.