Springboot学习笔记5:整合JDBC

2023-11-14

一、什么是JDBC?

在web开发中,不可避免的地要使用数据库来存储和管理数据。为了在java语言中提供数据库访问的支持,Sun公司于1996年提供了一套访问数据的标准Java类库,即JDBC。

JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。(API: application programming interface,应用程序编程接口。在不同场合,这个编程接口的含义不同。)应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。应用程序使用JDBC访问数据库的方式如下图所示。

二、springData

对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。

三、整合JDBC

1.导入依赖

<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>

2.编写 yml 配置文件

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456

3.测试连接

@SpringBootTest
class SpringbootDataJdbcApplicationTest {

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

    @Test
    public void contextLoads() throws SQLException {
        //看一下默认数据源
        System.out.println(dataSource.getClass());
        //获得连接
        Connection connection =   dataSource.getConnection();
        System.out.println(connection);
        //关闭连接
        connection.close();
    }
}

Spring Boot 2.2.5 默认使用HikariDataSource 数据源,可以使用 spring.datasource.type 指定自定义的数据源类型,值为 要使用的连接池实现的完全限定名。

四、使用 JDBCTemplate 对象操作数据库

Spring 本身也对原生的JDBC 做了轻量级的封装,即JdbcTemplate。

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

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

测试:

@RestController
@RequestMapping("/jdbc")
public class JdbcController {

    /**
     * Spring Boot 默认提供了数据源,默认提供了 org.springframework.jdbc.core.JdbcTemplate
     * JdbcTemplate 中会自己注入数据源,用于简化 JDBC操作
     * 还能避免一些常见的错误,使用起来也不用再自己来关闭数据库连接
     */
    @Autowired
    JdbcTemplate jdbcTemplate;

    //查询employee表中所有数据
    //List 中的1个 Map 对应数据库的 1行数据
    //Map 中的 key 对应数据库的字段名,value 对应数据库的字段值
    @GetMapping("/list")
    public List<Map<String, Object>> userList(){
        String sql = "select * from employee";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;
    }
    
    //新增一个用户
    @GetMapping("/add")
    public String addUser(){
        //插入语句,注意时间问题
        String sql = "insert into employee(last_name, email,gender,department,birth)" +
                " values ('xiaoyi','111@qq.com',1,101,'"+ new Date().toLocaleString() +"')";
        jdbcTemplate.update(sql);
        //查询
        return "addOk";
    }

    //修改用户信息
    @GetMapping("/update/{id}")
    public String updateUser(@PathVariable("id") int id){
        //插入语句
        String sql = "update employee set last_name=?,email=? where id="+id;
        //数据
        Object[] objects = new Object[2];
        objects[0] = "xiaoer";
        objects[1] = "111@sina.com";
        jdbcTemplate.update(sql,objects);
        //查询
        return "updateOk";
    }

    //删除用户
    @GetMapping("/delete/{id}")
    public String delUser(@PathVariable("id") int id){
        //插入语句
        String sql = "delete from employee where id=?";
        jdbcTemplate.update(sql,id);
        //查询
        return "deleteOk";
    }
    
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot学习笔记5:整合JDBC 的相关文章

随机推荐

  • 最美丽的理论:爱因斯坦引力场方程的推导

    全文共2948字 预计学习时长9分钟 图源 superprof 伟大的前苏联物理学家列夫 朗道和叶夫根尼 利夫希茨在他们的著作 经典场论 中写道 建立在相对论基础上的引力场理论被称为广义相对论 它是由爱因斯坦建立的 并且可能是现存的物理理论
  • 局域网速度测试,三款软件轻松搞定(转)

    局域网络可谓随处可见 我们也十分关注其实际运行速度如何 比如两台计算机间的文件传输 访问对方计算机的快慢等 而决定局域网络速度的因素很多 又不可能通过简单的操作检测出速度的大小 同时也希望能有一些软件能帮助我们管理局域网 以方便故障的排查
  • LeetCode 1967. 作为子字符串出现在单词中的字符串数目(BM、KMP)

    给你一个字符串数组 patterns 和一个字符串 word 统计 patterns 中有多少个字符串是 word 的子字符串 返回字符串数目 子字符串 是字符串中的一个连续字符序列 示例 1 输入 patterns a abc bc d
  • 【GD32F303开发之开发工具的安装与配置】

    GD32F303开发系列文章目录 第一章 GD32微控制器开发工具的安装与配置 第二章 GD32基准工程实验 第三章 GD32串口通信实验 第四章 GD32EXMC与LCD显示实验 文章目录 GD32F303开发系列文章目录 前言 一 GD
  • 为了使用学校GPU集群而离线安装Python和pytorch

    参考 https blog csdn net zhangdongren article details 82685932 学校GPU集群为无网环境 所以要离线安装 1 下载python 源文件 2 解压到 下的某个目录 make编译源文件
  • 冒泡排序法

    冒泡排序 冒泡排序的排序过程 N个数最外层的for循环次数为 N 1 次 内层for循环为 N 1 i 次 每一轮凑从第1个数开始对比 每一次都是和它下一个元素对比 将最大值元素放到最后 其他元素向前移位 重复以上动作 知道N 1次循环全部
  • 钢琴音阶识别_基础知识:关于大小音阶的简单说明

    大小音阶 Scales 简单说明 音阶是音乐的构造块 building blocks 有上千种不同的音阶 有时称调式 每一种都有其特性与功能 peculiarities and functions 从我们称为 西方 音乐中 从欧洲国家起源的
  • Golang中常用的代码优化点

    写代码其实也有很多套路和经验 这篇介绍几个让golang代码更优雅的四个套路 大家好 我是轩脉刃 这篇想和大家聊一聊golang的常用代码写法 在golang中 如果大家不断在一线写代码 一定多多少少会有一些些代码的套路和经验 这些经验是代
  • Centos SSH免密登录

    1 防火墙操作相关 systemctl stop firewalld 永久关闭防火墙 systemctl disable firewalld 2 关闭Selinux 1 查看状态 getenforce 2 临时关闭 setenforce 0
  • java “Unsupported major.minor version 52.0错误“解决办法

    java Unsupported major minor version 52 0错误 解决办法 java Unsupported major minor version 52 0错误 解决办法 解决办法 java Unsupported
  • Landsat数据下载

    Landsat数据下载步骤 0 Landsat数据介绍 1 下载地址 2 下载步骤 2 1 检索数据 2 1 1 设置地点 有多种方法 2 1 2 选择时间范围 2 1 3 在Data Sets界面选择传感器 卫星或者传感器的名称 2 2
  • el-select可以输入选择项以及选择某一项后出现输入文本框

    效果 直接上代码做笔记 通过ref属性获取输入内容 在 blur中进行赋值 很好的实现了可选择 可输入
  • 进程概念

    基本概念 进程是程序的一个执行实例 从内核来看 进程是担当分配系统资源的实体 注 在Linux操作系统中 大多数指令都是创建了一个个的进程 操做系统如何管理内存 答 使用一个结构体 PCB 来描述进程 使用高效的数据结构来组织进程 描述进程
  • 学习记录-Qt读取条码扫描枪

    一 条码简介 条形码 barcode 是将宽度不等的多个黑条和空白 按照一定的编码规则排列 用以表达一组信息的图形标识符 常见的条形码是由反射率相差很大的黑条 简称条 和白条 简称空 排成的平行线图案 条形码可以标出物品的生产国 制造厂家
  • git强制更新(覆盖)本地仓库与远程仓库一致

    问题描述 在远程改好代码 且改动较多 不想耗费精力进行合并的操作 于是想强制覆盖本地仓库 解决方案 使用以下指令 git fetch all git reset hard origin master
  • 在kali中常见的三种扫描

    第一步 确保要扫描的电脑和执行扫描的电脑是否在同一个网段上 Kali里面查看ip地址的命令为ifconfig ifconfig Win7系统查看IP地址的命令为ipconfig ipconfig 在kali中输入ping 192 168 5
  • 多级菜单 jquery折叠菜单

    多级jquery折叠菜单 前言 效果图 分析 前言 先上代码 DOCTYPE html gt
  • C++模板初阶

    C 模板初阶 泛型编程 函数模板 概念 函数模板格式 函数模板原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 我们前面学习了C 的函数重载功能 那么我们如何实现一个通用的交换函数呢 比如 我传
  • git上传遇到 GitHub could not read Username 的解决办法

    Gitversion 1 8 5 2 执行git push命令异常 如下 1 Push failed 2 Failed with error unable to read askpass response from C Users eddy
  • Springboot学习笔记5:整合JDBC

    一 什么是JDBC 在web开发中 不可避免的地要使用数据库来存储和管理数据 为了在java语言中提供数据库访问的支持 Sun公司于1996年提供了一套访问数据的标准Java类库 即JDBC JDBC的全称是Java数据库连接 Java D