Jdbc和Jdbctemplate

大家好,我是IT修真院郑州分院第11期的JAVA学员何爽,一枚正直纯洁善良的java程序员。

今天给大家分享一下,修真院官网Java任务1,深度思考中的知识点————Jdbc和Jdbctemplate。

1.背景介绍

Java程序员最基本的也是最重要的技能之一就是去和数据库打交道,但代码和数据库是互不相干的,那么我们怎样去让我们写的代码去操作数据库呢?这个时候我们就需要去用到jdbc去连接数据库和我们的代码。

2.知识剖析

(一)什么是jdbc,jdbctemplate

JDBC(Java Data Base

Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板,那么JDBCTemplate怎么做到的,这就和spring有关系了。

SpringIOC容器将管理数据库连接的数据源当作普通Java

Bean一样管理,然后将数据源注入封装类JdbcTemplate中,JdbcTemplate的dataSource属性就是注入配置的数据源。

JDBCTemplate是涉及到spring框架的一种方法,JDBCTemplate就是通过.xml配置文件极大的简化了我们代码量,并且提高了安全性,通过配置文件实现代码简化。

(二)jdbc操作数据库的使用

(1)初始化驱动:

通过Driver接口,装载MySql驱动:                  

Class.forName("com.mysql.jdbc.Driver")

(2)创建数据库连接:

connection = DriverManager.getConnection(url,name,密码);

(3)创建sql语句           

(4)获得向数据库发送sql语句的parperstasement对象

preparedStatement =

connection.prepareStatement(sql);

(5)执行SQL语句:

preparedStatement.executeUpdate();如果使用的select查询,则需使用preparedStatement.executeQuery()方法。

(5)对结果集做相应的处理(增,删,改,查)

(6)关闭资源:

Close(resultSet,preparedStatement,connection);

(三)jdbctemplate操作数据库的使用

1.要使用JDBCTemplate对象来完成JDBC操作。通常情况下,有三种种方式得到JDBCTemplate对象。

(1)我们可以在自己定义的DAO 实现类中注入一个DataSource 引用来完成JdbcTemplate 的实例化。也就是它是从外部“注入” DataSource 到DAO 中,然后自己实例化JdbcTemplate,然后将DataSource 设置到JdbcTemplate 对象中。

(2)在 Spring 的 IoC 容器中配置一个 JdbcTemplate 的 bean,将 DataSource 注入进来,然后再把JdbcTemplate 注入到自定义DAO 中。

(3)Spring 提供了 org.springframework.jdbc.core.support.JdbcDaoSupport 类,这个类中定义了 JdbcTemplate 属性,也定义了DataSource属性,当设置DataSource 属性的时候,会创建jdbcTemplate 的实例,所以我们自己编写的DAO 只需要继承JdbcDaoSupport 类,然后注入DataSource 即可

2. JdbcTemplate类主要提供以下几类方法:

(1)execute方法:用于执行任何SQL语句,一般用于执行DDL语句;

(2)update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句,batchUpdate方法用于执行批处理相关语句;

(3)query方法及queryForXXX方法:用于执行查询相关语句;

3.常见问题

数据库连接资源被占用

PreparedStatement和Statement有什么区别?

JDBCTemplate和JDBC的优缺点

4.解决方案

(1)如果真的发生数据库连接资源被占用,有什么解决方法::

修改 MySQL 安装目录下 my.ini 或者 my.cnf 文件内的 max_user_connections 参数的数值,重启 MySQL 服务器。

(2)PreparedStatement和Statement有什么区别?

Statement每次执行SQL语句,相关数据库都要进行SQL语句编译,PreparedStatement是预编译,对批量处理大大提高效率,可以防止SQL注入攻击,防止数据库缓冲池溢出,代码的可读性,可维护性都更好(运行代码)

(3)JDBCTemplate和JDBC的优缺点

JDBC

优点:运行期:快捷、高效

缺点:编辑器:代码量大、繁琐异常处理、不支持数据库跨平台

JDBCTemplate

优点:运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务

缺点:必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存

5.编码实战

6.扩展思考

使用连接池的好处

1).当有多个线程,每个线程都需要连接数据库执行SQL语句的话,那么每个线程都会创建一个连接,并且在使用完毕后,关闭连接。创建连接和关闭连接的过程也是比较消耗时间的,当多线程并发的时候,系统就会变得很卡顿。同时,一个数据库同时支持的连接总数也是有限的,如果多线程并发量很大,那么数据库连接的总数就会被消耗光,后续线程发起的数据库连接就会失败。

2.).连接池在使用之前,就会创建好一定数量的连接。如果有任何线程需要使用连接,那么就从连接池里面借用,而不是自己重新创建. 使用完毕后,又把这个连接归还给连接池供下一次或者其他线程使用。倘若发生多线程并发情况,连接池里的连接被借用光了,那么其他线程就会临时等待,直到有连接被归还回来,再继续使用。整个过程,这些连接都不会被关闭,而是不断的被循环使用,从而节约了启动和关闭连接的时间。

7.    参考文献

https://blog.csdn.net/qq_40127655/article/details/80147358

https://www.yiibai.com/jdbc/jdbc-select-records.html         

http://alex4java.iteye.com/blog/2294833

https://www.jianshu.com/p/bf7fde798851

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:26435812,或者你可以直接点击此链接:http://www.jnshu.com/login/1/26435812。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容