版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三章Spring的JDBC数据库操作演讲人2024-XX-XX本章学习目标:了解SpringJDBC的设计思路和原理理解JDBCTemplate的常用函数的使用方法掌握SpringJDBC的编程方法在软件系统的开发过程中,数据库或者说持久层的使用都是非常重要的。软件的所有数据,都需要通过数据库系统固化存储到硬盘上,用户的所有信息和操作也都需要通过数据连接来启动和维持。1Spring框架的JDBC简介1.1传统JDBC的问题当开发人员着手开发软件系统时,数据库往往是采用SQL语句进行编码,从而实现数据的增删改查等操作,而业务层往往使用的是面向对象的高级编程语言例如Java等来实现不同的界面和业务逻辑功能。这两种开发语言同处一个软件系统,两者如何进行顺畅的信息交换,就成了软件系统开发中遇到的一个问题。传统JDBC在一定程度上解决了这个问题,它让开发者可以使用Java语言来驱动和解析SQL语句,提供了Java语言环境下对数据库进行操作和管理的方法。但是,如前面章节所讲,传统JDBC中,存在着表关系维护复杂、代码繁琐、SQL语句硬编码、代码复用率较低等问题。1Spring框架的JDBC简介1.2Spring的JDBC的基本思想为了解决这个问题,软件开发者们想到了两种思路。第一种是弃用传统JDBC通过驱动SQL语句来管理数据的方式。为了更好的方便业务层的逻辑开发,适应面向对象编程的思维方式,研究人员决定使用映射的方式来管理数据。将数据库中的多个孤立数据,直接和Java类对象的成员变量形成映射。这就是ORM框架的由来。在ORM框架中,数据库中的数据条目直接和Java对象进行一一映射,可以大大的提升开发效率,降低代码耦合度。前面章节所讲的MyBatis就是ORM框架的典型代表之一。另外一种思路,并不弃用传统JDBC,而是对其进行改进。针对传统JDBC使用过程中的缺点,进行封装和修正,使得新的接口更易用。这就是SpringJDBC的由来。在SpringJDBC中,对传统JDBC进行了封装和增强。一方面可以进行适当的SQL代码复用,在SpringJDBC中管理数据的代码显得更加精炼简洁。另外一方面,SpringJDBC封装了很多底层实现,简化了传统JDBC的调用方法,使得基于SpringJDBC的编码方式更加高效且不易出错。1Spring框架的JDBC简介1.3Spring的JDBC和MyBatis的关联需要注意的是,MyBatis框架和SpringJDBC并不是互相替代的关系,两者并没有特别明显的孰优孰劣之分。一般来说,如果是数据表附和ORM框架应用场景,可以方便的映射成Java对象时,优先考虑使用MyBatis框架来实现相关功能。如果是数据操作较为繁琐细碎的应用场景,只需要轻量的完成部分数据操作且数据不方便映射为Java对象时,就可以优先考虑SpringJDBC来实现。在同一个软件系统中,根据开发者的需求和喜好,有可能根据实际的应用场景,是需要将SpringJDBC和MyBatis两者结合使用的。2Spring框架中的JDBCTemplate2.1JDBCTemplate的简介为了方便开发人员对数据操作进行编程,Spring框架提供了一个模板类JDBCTemplate。类的全称是org.springframework.jdbc.core.JdbcTemplate,它是Spring框架核心功能的组成部分之一。JDBCTemplate类功能强大,它提供了所有操作数据库的基本方法,包括新建或删除数据表、数据的增删改查、常规的SQL语句执行等。其次,它对传统JDBC进行了简化和封装,开发者使用JDBCTemplate可以更方便的进行开发而不用担心底层细节,同时也有助于避免常见错误。它在运行的时候会执行核心JDBC工作流程,让应用层代码提供SQL语句并操作数据库返回结果,省去了很多传统JDBC的复杂步骤,使得开发人员可以更加专注的投入到业务层的逻辑开发中。此外,借助于Spring框架的容器机制,SpringJDBC的功能实现都可以通过Bean对象来实现,且开发者不需要额外编码去管理这个对象,只需要在配置文件中按要求进行设置然后直接使用即可,大大提升了开发效率。2Spring框架中的JDBCTemplate2.1JDBCTemplate的简介从官网进入JDBCTemplate类的主页,可以查看其所有的内置函数方法。如下图所示。图13-1JDBCTemplate类的官网示意图2Spring框架中的JDBCTemplate2.2JDBCTemplate的使用为了应对各种数据操作的应用场景,JDBCTemplate提供了数量繁多的函数接口。这些接口很多都使用了函数重载,函数名一样,但是所需的参数和返回值不同,主要目的就是为了应对各种不同的开发需求。归纳总结后可知,JDBCTemplate类的接口主要分为三类,分别对应数据库的三种操作方式。第一种是DQL数据查询,对应query、queryForObject、queryForList等函数,用于对数据库进行查询操作。第二种是DML数据插入、修改、删除,对应update函数,用于对数据库的内容就行添加、更改、删除等操作。第三种是DDL数据表操作,对应execute函数,用于对数据库中的表进行新增或删除等操作。此外,execute函数还可以直接用于执行常规的SQL语句,功能较为强大。2Spring框架中的JDBCTemplate2.2JDBCTemplate的使用在Spring框架中使用JDBCTemplate是比较方便的,和传统JDBC不同,JDBCTemplate的使用需要充分借助Spring的容器机制。一方面,需要通过配置文件定义DataSource对象,完成数据源的设置和绑定。另一方面,需要定义JDBCTemplate对象,供业务层调用后进行SQL语句的执行并获取返回值。3SpringJDBC的简单使用案例创建工程打开Eclipse,选择新建项目中的DynamicWebProject也就是动态Web项目。相关选项和配置使用默认的,给项目起一个名称,最后点击Finish完成即完成项目的创建。3SpringJDBC的简单使用案例项目的准备工作找到项目的lib文件夹,路径为项目根目录下src/main/webapp/WEB-INF/lib,从之前下载Spring框架的文件夹里找到项目所需的jar包,复制到项目lib文件夹下,完成jar包的导入。如下图所示。图13-2项目所需的jar包示意图3SpringJDBC的简单使用案例编写Java类的代码在项目里新建一个Java包com.pojo,创建Bean对象对应的Java类com.pojo.Student.java,代码如下。Student.java01packagecom.pojo;02publicclassStudent{03privateintid;04privateStringname;05privateintage;06privateStringcourse;07publicintgetId(){3SpringJDBC的简单使用案例编写Java类的代码28publicvoidsetCourse(Stringcourse){29this.course=course;30}31@Override32publicStringtoString(){33return"Student[id="+id+",name="+name+",age="+age+",course="+course+"]";34}3SpringJDBC的简单使用案例编写Java类的代码35}第03~06行代码,定义了四个成员变量。为了后续方便对数据库进行操作,这里的成员变量的数据类型和变量名都基本都和数据表中的字段保持一致。其他是常规的Java类代码,完善getter和setter函数,并完善对象的打印函数。读者可以自行输入,也可以使用eclipse的代码生成功能来快速完成。3SpringJDBC的简单使用案例编写配置文件的代码在项目代码的根目录也就是src/main/java下,创建配置文件applicationContext.xml。在配置文件中,主要是完成相关的命名空间设置、xml的schema配置,以及项目中需要用到的JavaBean的定义和配置。具体代码如下所示。applicationContext.xml01<?xmlversion="1.0"encoding="UTF-8"?>02<beansxmlns="/schema/beans"3SpringJDBC的简单使用案例编写配置文件的代码03xmlns:xsi="/2001/XMLSchema-instance"04xsi:schemaLocation="/schema/beans05/schema/beans/spring-beans.xsd">06<beanid="springJDBCdatasource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">3SpringJDBC的简单使用案例编写配置文件的代码07<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>08<propertyname="url"value="jdbc:mysql://localhost:3306/ssm?useSSL=false"/>09<propertyname="username"value="root"/>10<propertyname="password"value="root"/>11</bean>3SpringJDBC的简单使用案例编写配置文件的代码12<beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate">13<propertyname="dataSource"ref="springJDBCdatasource"/>14</bean>15</beans>第01~05行代码是xml文件的格式声明、命名空间和xmlschema的配置等。3SpringJDBC的简单使用案例编写配置文件的代码第06~11行代码,定义了一个数据源的Bean对象。id值是springJDBCdatasource,对应的Java类路径是org.springframework.jdbc.datasource.DriverManagerDataSource,这是Spring框架自带的Java类。读者在输入这个类路径的时候,一方面要注意不能出错,尤其是类名和英文大小写;另外一方面要注意提前导入正确的Spring框架所需的jar包。如果这两处不对,在项目运行时就会报错。第07~10行代码是对数据源的属性进行详细设置,包括驱动、数据库地址、用户名、密码等,可以看到与之前MyBatis框架的数据源定义模式是很类似的。3SpringJDBC的简单使用案例编写配置文件的代码第12~14行代码,定义了SpringJDBC功能的核心对象JDBCTemplate。id值是jdbcTemplate,对应的Java类路径是org.springframework.jdbc.core.JdbcTemplate。这个Bean对象只需要做基础的设置,即将属性dataSource通过ref设置为刚定义的数据源springJDBCdatasource即可。3SpringJDBC的简单使用案例编写项目的测试代码在根目录下创建Java包com.test,新建测试文档TestMain.java,内部代码如下所示。TestMain.java01packagecom.test;02importjava.util.List;03importorg.springframework.context.ApplicationContext;04importorg.springframework.context.support.ClassPathXmlApplicationContext;3SpringJDBC的简单使用案例编写项目的测试代码05importorg.springframework.jdbc.core.*;06importcom.pojo.Student;07publicclassTestMain{08publicstaticvoidmain(String[]args){09//TODOAuto-generatedmethodstub10ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");3SpringJDBC的简单使用案例编写项目的测试代码11JdbcTemplatejdbcTemplate=context.getBean("jdbcTemplate",JdbcTemplate.class);12//DQL13StringsqlDQL="select*fromstudent";14RowMapper<Student>rowMapper=newBeanPropertyRowMapper<Student>(Student.class);3SpringJDBC的简单使用案例编写项目的测试代码15List<Student>stuList=jdbcTemplate.query(sqlDQL,rowMapper);16for(Studentstudent:stuList){17System.out.println(student.toString());18}19}第10行代码,和之前章节中Spring框架的使用流程一致,载入配置文件,完成ApplicationContext对象的创建。3SpringJDBC的简单使用案例编写项目的测试代码第11行代码,通过getBean获取JDBCTemplate对象。如本章前面所讲,Spring框架的JDBC通过容器来进行管理,这里的JDBCTemplate就是容器中的Bean对象,开发者对数据库的操作都通过这个对象来完成。第12~18行代码,是简单的SpringJDBC的DQL操作流程。第13行代码,将SQL语句定义为一个String变量,作为JDBCTemplate对象操作数据库的输入参数。第14行代码,定义了一个RowMapper对象。RowMapper来自于org.springframework.jdbc.core包,它的作用主要是将数据库中的表字段和Java类的成员变量进行映射,通过这样可以直接获取数据查询后的Java对象返回值。在前面的Java类定义中已经提到,成员变量需要与表字段的命名和数据类型保持一致,就是为了这里的RowMapper可以顺利完成映射。3SpringJDBC的简单使用案例编写项目的测试代码第15行代码,新建一个Java类的List链表,作为JDBCTemplate对象操作数据库的输出返回值。由于查询结果是复数形式,因此需要用到List链表。第16~18行代码,对查询结果的List链表进行遍历,打印出每个对象的String值。3SpringJDBC的简单使用案例项目测试结果项目代码编写完成后,在TestMain.java文件中点击右键,点击运行RunAs,选择JavaApplication。项目运行结果如下图所示。图13-3SpringJDBC的DQL操作的测试示意图3SpringJDBC的简单使用案例项目测试结果可以看到,SQL语句"select*fromstudent"顺利执行,查询到了所有的student表的数据条目。返回值是自动拼装成了Java对象,并可以正常的打印其String值。读者也可以进一步和数据表中的数据进行对比,看看数据是否正确无误。除了DQL操作外,JDBCTemplate也可以方便的进行DML操作。在测试文件TestMain.java中,加入相关的代码如下。//DMLStringsqlDML="updatestudentsetage=30whereid=6";3SpringJDBC的简单使用案例项目测试结果intchangeRows=jdbcTemplate.update(sqlDML);System.out.println("\nchangedrows:"+changeRows);同样的,DML操作中需要将SQL语句定义成String变量,"updatestudentsetage=30whereid=6"。JDBCTemplate对象在执行DML操作时需要使用update函数,函数的返回值是整数类型的changeRows,对应数据表中被修改的数据条目个数。最后将此数值打印出来,用于查看是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁2025年辽宁职业学院招聘23人笔试历年参考题库附带答案详解
- 芜湖2025年安徽芜湖某机关单位招聘派遣工作人员(二)笔试历年参考题库附带答案详解
- 益阳2025年湖南益阳市住房公积金管理中心招聘15人笔试历年参考题库附带答案详解
- 济宁2025年山东济宁嘉祥县教育系统急需紧缺人才引进18人笔试历年参考题库附带答案详解
- 汕尾2025年广东汕尾市市直学校招聘教师13人笔试历年参考题库附带答案详解
- 新疆2025年新疆喀什大学附属中学招聘事业单位工作人员笔试历年参考题库附带答案详解
- 平顶山2025年河南平顶山市卫东区事业单位招聘50人笔试历年参考题库附带答案详解
- 安庆2025年安徽安庆宿松县卫生健康系统部分事业单位招聘22人笔试历年参考题库附带答案详解
- 台州浙江台州玉环市海洋经济发展局招聘编外工作人员笔试历年参考题库附带答案详解
- 南京江苏南京师范大学商学院招聘非事业编制办事员笔试历年参考题库附带答案详解
- 2026年浦发银行社会招聘参考题库必考题
- 2026年腹腔镜缝合技术培训
- 2026年黑龙江省七台河市高职单招职业适应性测试试题题库(答案+解析)
- 2025-2030戏剧行业市场深度调研及发展趋势与投资战略研究报告
- 2025年CNC编程工程师年度述职
- 护坡施工方案审查(3篇)
- 地铁安检施工方案(3篇)
- 小学生寒假心理健康安全教育
- 钢结构工程全面质量通病图册
- 低空智能-从感知推理迈向群体具身
- 2026年化工厂的工作计划
评论
0/150
提交评论