《Java轻量级框架技术与应用》 课件 项目五 Spring Boot数据访问与事务_第1页
《Java轻量级框架技术与应用》 课件 项目五 Spring Boot数据访问与事务_第2页
《Java轻量级框架技术与应用》 课件 项目五 Spring Boot数据访问与事务_第3页
《Java轻量级框架技术与应用》 课件 项目五 Spring Boot数据访问与事务_第4页
《Java轻量级框架技术与应用》 课件 项目五 Spring Boot数据访问与事务_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五

SpringBoot数据访问与事务认识大数据采集与预处理目录Content1搭建数据采集与预处理开发环境2项目导言零JdbcTemplate提供了众多方法事务访问数据库的操作序列事务+数据库,以便保持数据的完整性学习目标零知识目标了解SpringDataJDBC的概念与使用方法;了解Druid的基本内容;熟悉Druid的基本配置参数的使用;掌握JDBCTemplate的使用场景;熟悉MyBatis的优缺点以及架构组成;掌握SpringBoot整合MyBatis的方法;了解MyBatis-Plus的概念;熟悉MyBatis-Plus中的基本配置接口BaseMapper;了解JPA的概念;掌握SpringDataJPA的接口使用方法;了解SpringBoot的事务的概念;熟悉事务的传播机制与隔离级别;掌握Spring中实现事务的方式。能力目标具备独立为SpringBoot整合Druid数据库连接池的能力;具备独立为SpringBoot整合MyBatis-Plus的能力;具备在任意场景下灵活使用SpringDataJPA接口的能力;具备独立在SpringBoot中实现事务的能力。素质目标具备精益求精、坚持不懈的精神;具有独立解决问题的能力;具备灵活的思维和处理分析问题的能力;具有责任心。任务1:智慧信息管理系统的部门管理壹MyBatis概述任务技能MyBatis是一个开源的Java持久层框架,用于简化数据库操作和对象关系映射(ORM)的过程。MyBatis-plusMyBatis-Plus是国人在MyBatis基础上进行增强开发的工具,旨在简化开发过程并提供更好的性能。任务1-1:MyBatis概述壹1mybatis简介MyBatis是一个开源的Java持久层框架,用于简化数据库操作和对象关系映射(ORM)的过程。任务1-1:MyBatis概述壹2mybatis主要功能和优点1支持存储过程2高级映射3支持XML文件或注解配置4将接口和Java的POJO映射到数据库记录5减少JDBC代码任务1-1:MyBatis概述壹3MyBatis架构这种设计可以让MyBatis实现更好的模块化和可维护性,同时也可以提供更好的性能和可靠性。任务1-1:MyBatis概述壹4SpringBoot整合MyBatis第一步:新建数据库mydb,并在该数据库中创建表名为user,并插入数据。第二步:创建项目创建SpringBoot项目,在Dependencies中选择MySQL和MyBatis的依赖,完成项目搭建。如右图所示任务1-1:MyBatis概述壹第三步:在application.yml配置数据库文件,代码如下。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:rooturl:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8编写User实体类。创建pojo包,在pojo包中创建于user表对应的User类,代码如下。publicclassUser{privateIntegerid;privateStringname;privateStringemail;privateStringtel;//忽略getter、setter和toString方法。}任务1-1:MyBatis概述壹第四步:整合MyBatis1.使用注解的方式整合MyBatis创建Mapper接口,创建一个mapper包,在包下创建一个UserMapper接口,在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类,能够被SpringBoot自动扫描到Spring容器中。编写单元测试进行测试。2.使用的配置文件的方式整合MyBatis创建一个Mapper接口文件,在mapper包下创建一个名为ConsumerMapper的接口文件,创建一个查询方法和一个添加方法。创建XML映射文件。配置XML映射文件的路径。编写单元测试进行测试。0102任务1-2:MyBatis-plus壹MyBatis-Plus是国人在MyBatis基础上进行增强开发的工具,旨在简化开发过程并提供更好的性能。ABCD丰富的条件构造器E支持高级查询提供无SQL的CRUD操作内置代码生成器性能分析插件除了以上的功能,MyBatis-Plus还提供了一些其他的增强特性,例如性能分析插件、全局配置、多数据源支持等,可以根据具体需求进行配置和使用。任务1-2:MyBatis-plus壹在MyBatis-Plus中,基本配置主要包括以下几个方面:在配置文件中配置数据库连接信息,包括数据库驱动、URL、用户名和密码等。数据源配置可以通过MyBatis-Plus提供的MybatisConfiguration类进行配置。MyBatis配置配置MyBatis-Plus扫描Mapper接口的包路径,使其能够自动扫描并注册到Spring容器中。Mapper接口扫描MyBatis-Plus提供了一个分页插件,可以方便地进行分页查询。分页插件配置MyBatis-Plus支持逻辑删除功能,可以通过配置逻辑删除的字段和逻辑删除的值来开启逻辑删除。逻辑删除配置MyBatis-Plus支持自动填充功能,可以在插入或更新数据时自动填充某些字段的值。自动填充配置任务1-2:MyBatis-plus壹MyBatis-plus中的基本配置接口BaseMapper,包含了基本的CRUD操作方法,提供了一些常用的数据库操作方法。BaseMapper接口的主要方法如下。方法描述insert插入一条记录deleteById根据ID删除一条记录selectById根据ID查询一条记录selectList查询多条记录selectPage分页查询记录selectCount查询记录总数updateById更新一条记录selectBatchIds根据ID列表查询记录这些方法提供了常见的增删改查操作,被其他Mapper接口继承后可以直接使用这些方法而无需重新编写相同的代码。任务1-2:MyBatis-plus壹接下来整合MyBatis-plus。在使用SpringBoot中,整合MyBatis-plus步骤如下所示。第一步:创建一个普通的SpringBoot项目,创建完成后,在pom.xml中引入MyBatis-plus依赖。<!--MyBatis-Plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version></dependency>第二步:application.yml配置,代码如下所示。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:rooturl:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8任务1-2:MyBatis-plus壹第三步:创建一个继承自BaseMapper接口的Mapper接口,例如:importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importorg.apache.ibatis.annotations.Mapper;importorg.springframework.stereotype.Repository;@Repository@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{}第四步:创建UserMapper接口,代码如下所示。@Repository@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{//booleanselectById(intid);}任务1-2:MyBatis-plus壹第五步:编写测试类,进行整合后的测试,代码如下所示。importcom.example.springbootmybatic.mapper.ConsumerMapper;importorg.junit.jupiter.api.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestclassSpringbootMybaticApplicationTests{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidselectByID(){System.out.println(userMapper.selectById(1));}}测试结果如图所示。任务2:智慧信息管理系统的角色管理贰SpringDataJDBC任务技能SpringDataJDBC提供了一些通用的CRUD操作,如save、delete、findById等,以及一些高级特性。Druid概述Druid最初是阿里巴巴开源平台上的一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点。JdbcTemplateJdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错。任务2-1:SpringDataJDBC贰SpringDataJDBC是SpringData提供的一个基于JDBC的数据访问框架,它简化了数据访问层的开发,使得开发者可以更加专注于业务逻辑的实现。要在SpringBoot应用程序中使用SpringDataJDBC并添加依赖关系启动器,步骤如下所示。第一步:新建Spring初始化项目,在添加模块过程中勾选SpringDataJDBC和数据库驱动程序的依赖项,点击“Create”。任务2-1:SpringDataJDBC贰创建项目完成之后,打开pom.xml文件,会发现里面添加了SpringDataJDBC和数据库驱动程序的依赖项,效果如图所示。第二步:在application.yml文件中配置数据库连接信息。例如:spring:datasource:url:jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver任务2-1:SpringDataJDBC贰第三步:创建一个测试类,用来查看数据库链接情况,代码如下所示。packagecom.inspure;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjavax.sql.DataSource;importjava.sql.Connection;importjava.sql.SQLException;@SpringBootTestclassChapter0501ApplicationTests{@AutowiredDataSourcedataSource;@TestvoidcontextLoads()throwsSQLException{//默认使用的数据源System.out.println("数据源:"+dataSource.getClass());Connectionconnection=dataSource.getConnection();System.out.println("connection:"+connection);}}运行代码,效果如图。任务2-2:Druid概述贰1Druid简介Druid是一个分布式的、支持实时多维OLAP分析的数据处理系统,它的特点包括:列式存储格式A可扩展分布式系统B大规模并行处理C实时或批量摄取D自修复、自平衡、易于操作E任务2-2:Druid概述贰2Druid基本配置参数配置说明配置说明name配置该属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开。如果没有配置,将会生成一个名字,格式:“DataSource-”+System.identityHashCode(this),另外配置此属性至少在1.0.5版本中不起作用,强行设置name会出错maxActive最大连接池数量,默认值为8url连接数据库的url,例如:mysql:jdbc:mysql://:3306/mysqlDB;oracle:jdbc:oracle:thin:@:1521:oracleDBmaxIdle已经不再使用,配置了也没效果username连接数据库的用户名minIdle最小连接池数量password连接数据库的密码。如果不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFiltermaxWait获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁driverClassName这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassNamepoolPreparedStatements是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭,默认值为falseinitialSize初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时maxOpenPreparedStatements要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100,默认值为-1任务2-2:Druid概述贰配置说明配置说明validationQuery用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用numTestsPerEvictionRun不再使用,一个DruidDataSource只支持一个EvictionRunvalidationQueryTimeout单位:秒,检测连接是否有效的超时时间。底层调用jdbcStatement对象的voidsetQueryTimeout(intseconds)方法minEvictableIdleTimeMillis连接保持空闲而不被驱逐的最长时间,默认值为30分钟testOnBorrow申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能,默认值为trueconnectionInitSqls物理连接初始化的时候执行的sqltestOnReturn归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能,默认值为falseexceptionSorter当数据库抛出一些不可恢复的异常时,抛弃连接testWhileIdle建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认值为falsefilters属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:walltimeBetweenEvictionRunsMillis有两个含义:1、Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接;2、testWhileIdle的判断依据,详细看testWhileIdle属性的说明proxyFilters类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系任务2-2:Druid概述贰3SpringBoot整合Druid数据库连接池第一步:新建Spring初始化项目,在添加模块过程中勾选MyBatisFramework和数据库驱动程序的依赖项,点击“Create”。任务2-2:Druid概述贰第二步:打开Maven主依赖网页,找到DruidSpringBootStarter相关依赖,并在pom.xml文件中添加,代码如下<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.6</version></dependency>第三步:在perties文件中配置Druid,配置如下:spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8spring.datasource.druid.username=rootspring.datasource.druid.password=rootspring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

#初始化时建立物理连接的个数spring.datasource.druid.initial-size=5#最大连接池数量spring.datasource.druid.max-active=30任务2-2:Druid概述贰#最小连接池数量spring.datasource.druid.min-idle=5#获取连接时最大等待时间,单位毫秒spring.datasource.druid.max-wait=60000spring.datasource.druid.time-between-eviction-runs-millis=60000spring.datasource.druid.min-evictable-idle-time-millis=300000spring.datasource.druid.validation-query=SELECT1FROMDUALspring.datasource.druid.test-while-idle=truespring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=falsespring.datasource.druid.pool-prepared-statements=truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=50spring.dataso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论