IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot(十)--------整合JDBC -> 正文阅读

[Java知识库]Spring Boot(十)--------整合JDBC

Spring Boot(十)--------整合JDBC

19、整合JDBC

19.1 SpringData简介

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

  • Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。

  • Sping Data 官网:Spring Data

  • 数据库相关的启动器 :可以参考官方文档:Spring Boot Reference Documentation

19.2 整合JDBC

19.2.1 创建测试项目测试数据源

  • 新建测试项目springboot-04-data,导入相应基础模块(Web和SQL)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xEkYhK4C-1646227800889)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220302203427737.png)]

  • 项目自动帮我们导入了一些启动器
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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>
  • 编写yaml配置文件链接数据库,使用mybatis数据库
spring:
  datasource:
    username: root
    password: 123456
    #?serverTimezone=UTC解决时区的报错,也可以去MySQL安装路径 my.ini 下修改配置,一劳永逸
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    # mysql8以上加.cj
    driver-class-name: com.mysql.cj.jdbc.Driver
  • 链接数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0lchcSA1-1646227800890)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220302204330911.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUFQva8A-1646227800892)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220302204524090.png)]

  • 配置完之后,就可以直接使用了,因为Spring Boot已经默认进行了自动配置,去测试类测试一下
@SpringBootTest
class Springboot04DataApplicationTests {

    //把yaml配置的数据库注册过来
    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() throws SQLException {
        //查看默认数据源 :class com.zaxxer.hikari.HikariDataSource
        System.out.println(dataSource.getClass());

        //获得数据库链接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);

        //关闭链接
        connection.close();
    }
}
  • 默认配置的数据源为:class com.zaxxer.hikari.HikariDataSource

  • 数据源所有自动配置都在DataSourceAutoConfiguration文件,其中导入了DataSourceProperties文件

  • Spring Boot 2.2.5 默认使用HikariDataSource 数据源,而以前版本,如 Spring Boot 1.5 默认使用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源

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

19.3 JDBCTemplate

  • xxxxTemplates:Spring Boot已经配置好的模板bean,拿来即用

  • 有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接(java.sql.Connection),有了连接,就可以使用原生的 JDBC 语句来操作数据库;

  • 即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC做了轻量级的封装,即JdbcTemplate

  • 数据库操作的所有CRUD方法都在 JdbcTemplate

  • Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序员只需自己注入即可使用

  • JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration

19.3.1 JDBC Template主要提供以下几类方法

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

19.4 测试

  • 新建一个JDBCController,注入jdbcTemplate,尝试使用原生JDBC对数据进行操作
@RestController
public class JDBCController {
    @Autowired
    JdbcTemplate jdbcTemplate;

    //查询数据库的所有信息
    //没有实体类的情况下,如何获取数据库中的东西?  万能的MAP
    //注意:此处我用IDEA连接了数据库,所以表名要写mybatis.user而不是user
    @GetMapping("/userList")
    public List<Map<String,Object>> userList(){
        String sql = "select * from mybatis.user";
        List<Map<String,Object>> list_maps =  jdbcTemplate.queryForList(sql);
        return list_maps;
    }

    //增加数据
    @GetMapping("/addUser")
    public String addUser() {
        String sql = "insert into mybatis.user(id,name,pwd) values(10,'小明','123456')";
        jdbcTemplate.update(sql);
        return "update-ok";
    }

    //修改数据
    @GetMapping("/updateUser/{id}")
    public String updateUser(@PathVariable("id") int id) {
        String sql = "update mybatis.user set name  = ?,pwd = ? where id = " + id;
        //封装
        Object[] objects = new Object[2];

        objects[0] = "小李";
        objects[1] = "mmmmmm";

        jdbcTemplate.update(sql,objects);
        return "update-ok";
    }

    //删除数据
    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") int id) {
        String sql = "delete from mybatis.user where id = ?";
        jdbcTemplate.update(sql,id);
        return "update-ok";
    }
}
  • 测试成功
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 15:57:54  更:2022-03-03 15:58:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:25:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码