Spring Boot与数据

Spring Boot + Spring Security通过数据库验证用户身份信息 Spring Security 1.mysql数据库中的准备 1.1 建立数据库 db_authority 1.2 建立表 tb_user 表中字段为:id name password role CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL COMMENT '用户名', `password` varchar(255) DEFAULT NUL 阅读详情

Spring Boot与数据

SpringBoot 着眼于JavaEE! 不仅仅局限于 Mybatis 、JDBC、 Spring Data JPA

 

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、 Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持

对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种XXXTemplate, xxRespository来简化我们队数据库访问层的操作。对于我们来说只需要进行简单的设置即可。

 

• Spring Data 包含多个子项目:

– Spring Data Commons

– Spring Data JPA – Spring Data KeyValue

– Spring Data LDAP – Spring Data MongoDB

– Spring Data Gemfire – Spring Data REST

– Spring Data Redis

– Spring Data for Apache Cassandra

– Spring Data for Apache Solr

– Spring Data Couchbase (community module)

– Spring Data Elasticsearch (community module)

– Spring Data Neo4j (community module)

 

 

 

Spring Data是spring的一个子项目。

Spring Data里面又包含很多子项目

 不仅仅可以访问关系型数据库,还有非关系型数据库

 

SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问 技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、 排序和分页的相关操作。

 

特点:

1)统一的Repository接口

Repository<T, ID extends Serializable>:统一接口
RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>>:基于乐观
锁机制
CrudRepository<T, ID extends Serializable>:基本CRUD操作
PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页

2)提供数据访问模板类xxTemplate

   如 MongoTemplate  RedisTemplate

3) JPA 与 Spring Data

  1)、JpaRepository基本功能 编写接口继承JpaRepository既有crud及分页等基本功能

  2)、定义符合规范的方法命名 在接口中只需要声明符合规范的方法,即拥有对应的功能

 

 

Spring Boot底层就是利用Spring Data进行数据库访问的默认处理方式。

导入场景的starters

 

 

整合基本JDBC与数据源


 

为了方便展示,同时引入了web模块

此时的项目pom文件:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

 

如何配置才能跟数据库交互呢?

 

配置好yml:

spring:
  datasource:
    username: root
    password: root
    ##配置好时区 MySQL默认的时区是UTC时区
    url: jdbc:mysql://127.0.0.1:3306/book?serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DataApplicationTests {

    //注入数据源
    @Autowired
    DataSource dataSource;

    @Test
    public void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        //获取连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }
    }

运行结果:

 

 

效果:
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;
数据源的相关配置都在DataSourceProperties里面;
自动配置原理:
org.springframework.boot.autoconfigure.jdbc:
1、参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;可以使用spring.datasource.type指定自定义的数据源类型; 比如经常用的C3P0
2、SpringBoot默认可以支持: org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource、

3、自定义数据源类型 可以自定义数据源类型

/**
 * Generic DataSource configuration.
 */
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type")
static class Generic {
@Bean
   public DataSource dataSource(DataSourceProperties properties) {
       //使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
      return properties.initializeDataSourceBuilder().build();
   }
}

4、DataSourceInitializer:ApplicationListener(就是个监听器)并且实现了InitializingBean接口

 

作用:
1)、runSchemaScripts();运行建表语句;
2)、runDataScripts();运行插入数据的sql语句;
默认只需要将文件命名为:

schema‐*.sql、data‐*.sql
默认规则:schema.sql,schema‐all.sql;
可以使用  
schema:    
      ‐ classpath:department.sql
      指定位置

 

 5、操作数据库:自动配置了JdbcTemplate操作数据库

 

 具体用法我就不冗余了,大家可以自行学习下。平时开发也基本用不到这个。

我们可以点开看下:

 

从自动配置的类中,找到jdbc

这里都是与数据源有关的配置:

包括数据源的配置 

 

 

实际开发过程中一般使用阿里的druid数据源,包括了监控、安全等方案。开发一般用 比较多

整合步骤:

pom:

引入数据源

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

修改下配置就OK了:

spring:
  datasource:
    username: root
    password: root
    ##配置好市区 MySQL默认的时区是UTC时区
    url: jdbc:mysql://127.0.0.1:3306/book?serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DataApplicationTests {

    //注入数据源
    @Autowired
    DataSource dataSource;

    @Test
    public void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        //获取连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }
    }

 

 结果:

 

 

 数据源除了基本配置还有各种属性配置的,可以参考官网

  这个需要配置类的 (包含web监控)

@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
       return  new DruidDataSource();
    }
    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),
"/druid/*");
        Map<String,String> initParams = new HashMap<>();
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.168.15.21");
        bean.setInitParameters(initParams)
    return bean;
    }
    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return  bean;
    }
}
       

 

 配置Druid的监控

    配置一个管理后台的Servlet   config里面配置,没有web.xml

    配置一个监控的filter

详情请参考官网。

 

 

Spring Boot 整合 Mybatis


 

1、xml的MyBatis

2、注解的MyBatis

 

 SpringBoot  yml指定全局配置文件 和 sql映射配置文件位置就OK了

 

 

SpringBoot 整合JPA


 

Spring data的理想就是同意数据访问的API

 

JPA是操作关系型数据库的,Java持久层api

 

posted @ 2019-04-28 00:15 toov5 阅读(...) 评论(...) 编辑 收藏

​​​​​​​​​​​​​​Spring Boot数据库连接池 在MySQL数据库中,一个连接的最大存活时间通常是由wait_timeout参数来控制的。这个参数定义了非交互式连接可以保持空闲的最长时间,超过这个时间后,连接将被自动关闭。你可以通过修改MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]部分设置wait_timeout的值来更改最大连接存活时间。另外,还有一个interactive_timeout参数,它定义了交互式连接(如通过MySQL客户端进行的连接)可以保持空闲的最长时间。的意思是光,“光”的意思是“… 阅读详情

相关推荐

Spring Boot之使用JPA保存数据

返回JSON之步骤: (1)编写一个实体类UserDo (2)编写UserRepository、UserService、UserController; (3)编写启动类 (4)测试 具体代码如下: 实体类com.mxh.web.bean.UserDo @Entity @Table(name="user") public class UserDo { ...

meng_xiaohua的博客 3025

springboot 数据转换 使用和性能分析

springboot数据转换有两个转换方法:dataChange、 dataChangeToBean。那么它们的使用区别是什么?两者对比,性能又如何?经过性能分析后,可以看出dataChange的数据转换效率还是比较高的。不过,它在数据转换后,返回的是一个map,对要以 数据模型(Model) 来做 接口文档(swagger) 功能的朋友来说,不太方便。如果遇到需要在 数据模型(Model)上标注 日期格式化 或 其他功能等注解 的场景,需要实现自定义兼容模型,把那些注解的功能重写一遍。

qq_36206259的博客 1159

Spring Boot 进阶-详解Spring Boot整合数据库

在自动配置类DruidDataSourceAutoConfigure中有如下一段代码之前我们提到过的@ConditionalOnMissingBean注解,@ConditionalOnClass(DruidDataSource.class)两个注解,分别用来进行条件判断,并且这里我们看到如果引入了Druid数据源之后其对应的数据源就会变成DruidDataSource数据源,并且通过代理设计模式,创建了一个代理对象DruidDataSourceWrapper。这里为什么会使用代理模式呢?

初学者 2606

数据分析体系的架构与实践之java版Spring Cloud+SpringBoot+mybatis+uniapp微服务架构

1.1 名词解释 需要框架源码的朋友可以看我个人简介联系我。推荐分布式架构源码 二、面临的挑战和痛点 2.1【业务方面】 为了让客户清晰地、全面多视角的、多维度指标的查看在爱番番系统中创建线索、分配线索,跟进线索,成单等过程的详细漏斗情况以及了解员工跟进情况,需要数据统计分析为客户提供各环节有价值的数据产品。 1)有价值:如何为客户提供有价值的数据产品服务,是贯穿需求审评阶段需要重点考虑的问题;2)及时性:例如客户给自已的员工分配了一条线索或者员工跟进线索的细节,希望能够快速...

m0_65038841的博客 1086

Spring Boot:数据库的整合

Spring Boot数据库的整合介绍

啊Q老师 6466

【Spring Boot】Spring Boot集成Redis实现数据缓存

缓存数据的修改也特别简单,重新调用set()方法即可,Redis会判断key是否存在,若存在则更新缓存的数据。通过上面的示例,首先定义key为“ysxq”的BoundValueOperations实例,然后在后续的操作中直接使用定义的boundTemplate实例,操作这个key对应的数据,无须在调用方法中指定key。例如,我们在某个类或方法中需要反复操作某个特定的key中的数据,则可以先定义对应的BoundKeyOperations,然后使用此类重复操作key中的数据,无须再调用方法中指定的key。

衍生星球的博客 1321

SpringBoot篇——SpringBoot操作数据库(整合JDBC、Druid和Mybatis,超详细!)

1、首先在Springboot04DataApplication启动程序的同级建立config文件夹,新建Druid配置类,在该配置类中做绑定配置文件和自定义的监控配置等。八、编写application.yaml配置文件,将来都会整合到一个配置文件中(这一步很关键,不然我们编写的mapper.xml无法被扫描到)一、整合之前回顾当初Spring整合Mybatis时候,需要导入特定的依赖,而如今我们SpringBoot整合Mybatis,也需要导入依赖。预祝猿朋友早日成为全栈工程师!

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 9061

Spring Boot管理用户数据

前端开发,也称为客户端开发,专注于用户界面和用户体验。后端开发,或服务器端开发,处理服务器、应用程序和数据库的逻辑。Web开发可以分为两大主要领域:前端开发和后端开发通过这些步骤,可以在 Spring Boot 应用程序中使用 Thymeleaf 创建一个简单的表单,并处理表单提交的数据。可以根据实际需求进一步扩展这个示例,例如添加更多的表单字段、进行更复杂的表单验证、使用数据库存储数据等。

布说在见的博客 2486

5-Spring Boot的数据访问

访问数据

daqi1983的博客 4572

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 452

【Chisel】2.4 时序逻辑

2.4 时序逻辑@[TOC](2.4 时序逻辑)前言寄存器(`Reg`)实例Chisel的状态函数实例2 RegNext实例3 RegInit移位器附录 显式的时钟信号和复位信号 前言 没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,重要的事情说三遍。 这一节我们将要学习Chisel中的时序逻辑。在最后我们会实现一个移位器。 这里你需要知道的是,前面的这几节实际上都是对Chisel的基础语法的学习,它并不会给你带来很大的“惊喜”。Chisel真正的作用是把电路

快乐学习小猪猪的博客 843

Spring Boot数据访问

Spring Boot提供了一种简单而强大的方式来进行数据访问。它集成了许多流行的持久化框架,如Hibernate、JPA和MyBatis,并提供了自动配置和默认实现,使得在应用中进行数据访问变得非常容易。下面是一个使用Spring Boot进行数据访问的示例代码: 通过以上步骤,你可以通过实现对数据库中表的CRUD操作。只需注入并调用相应的方法即可。总结方法:以上就是使用Spring Boot进行数据访问的简单示例。通过Spring Boot的自动配置和默认实现,我们可以轻松地进行数

ATYE_Y的博客 1086

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 252

Spring Boot教程之四十六: Spring Boot 与 H2 数据库

H2 是一个用 Java 编写的轻量级快速 SQL 数据库。它可以在两种模式下运行:内存模式和嵌入式模式。内存模式对于测试和开发特别有用,因为它允许您创建一个临时数据库,该数据库在应用程序停止时会自动销毁。嵌入式模式适用于需要小型独立数据库的应用程序。

潜洋的专栏 1994

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2729

SimSwap复现指引及代码分析【2023有更新】

我的环境!!!😚😚😚 之后会遇到:还会遇到至此环境配置完毕!下面是所需要的checkpoint。至此环境准备结束。先试试环境是否有问题,图片是代码包中给的。我用的是512的checkpoint,无水印,a是源脸,b是目标脸。输出到./output/result_whole_swapsingle.jpg 如图是可以成功换脸的:(为了方便查看将图像裁剪到了128x128) 表示图像预处理,相应的改为也是一样。不加就是对已经面部对齐的图像进行简单的面部交换。 加上就是无水印。 交换一张图片中的所有面孔。

zik的博客 2047

【Spring Boot 入门三】Spring Boot与数据库集成 - 构建数据驱动的应用

主要探讨Spring Boot与数据库集成。首先回顾前文引出数据库在现代应用中的重要性及Spring Boot的支持。接着阐述选择数据库(MySQL、PostgreSQL、Oracle等)及添加依赖的方式。然后讲述数据库连接配置,包括参数设置和数据源使用。还介绍了JPA在Spring Boot中的应用,如创建实体类、编写数据访问层。最后讲解数据库事务管理,包括事务概念、`@Transactional`注解、传播行为和隔离级别。总结部分强调本文重点并预告下一篇将探讨Spring Boot安全机制。

实践是检验真理的唯一标准 1754

Vue3 - 详解实现网站接入微信扫码登录功能,微信授权生成登录二维码用户用手机扫描二维码登陆,微信扫描二维码登录详细流程及示例代码,支持弹框式、浏览器单独新开页显示,最新vue集成微信扫码授权登录!

vue3,nuxt3,PC网站,网页,微信扫码登录,微信登陆,vue3微信扫码登录,获取个人信息,扫码登录后如何获取用户手机号,微信扫码授权登录,vue3详细实现微信扫一扫登陆,pc网页微信登录,vue3集成微信扫码登录,详细流程和示例源码,第三方扫码登录,vue3微信扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,微信扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描微信二维码登录网站,最好用的插件,vue-wxlo

🏆 前端领域优质创作者 1万+

Spring Boot 动态数据源

动态数据源流程说明 Spring Boot 的动态数据源,本质上是把多个数据源存储在一个 Map 中,当需要使用某个数据源时,从 Map 中获取此数据源进行处理。 而在 Spring 中,已提供了抽象类 AbstractRoutingDataSource 来实现此功能。......

Vincent Vic 3757

MOS五类漏电流与优化策略

分析了五种主要漏电流机制:1)反偏结泄漏,由PN结热激发和隧

硬核科技 443

RT-DETR-R18 上下文信息融合:引入全局特征提升遮挡目标检测

"""轻量化全局特征提取器(2层Transformer编码器)"""# 特征投影层(将多尺度特征统一维度)# 轻量化Transformer编码器(分组卷积优化)# 全局特征池化(输出 [bs, hidden_dim])# local_features: 多尺度特征列表 [C3, C4, C5],各 [bs, c, h, w]# 统一投影至 hidden_dim 并展平为序列# Transformer编码全局上下文# 全局池化得到全局向量。

走向CTO的路上... 495

Spring Boot 数据层开发

【代码】Spring Boot 数据层开发。

2401_87851627的博客 890

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Spring Boot —— 数据源

Spring Boot —— 数据源 背景 从jdbc到spring-boot-starter-jdbc jdbc 是一种用于执行SQL语句的API,可以为多种关系数据库提供统一访问,它是由一组用Java语言编写的类和接口。是Java访问数据库的标准规范。 严格来说,JDBC是Java提供的一种标准规范,具体的实现由各个数据库厂商去实现。对开发者来说屏蔽了不同数据库之间的区别,可以使用相同的方式(Java API)去操作不同的数据库。两个设备之间要进行通信需要驱动,不同数据库厂商对JDBC的实现类就是去连接

qq_42216517的博客 811

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: SprigBoot核心技术
下一篇: 总结
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值