zoukankan      html  css  js  c++  java
  • SpringBoot(3):SpringData 数据访问

    一. 简介

    Spring Data是一个用于简化数据库访问,并支持云服务的开源框架;其主要目标是 使得对数据的访问变得方便快捷。对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库

    Sping Data 官网:https://spring.io/projects/spring-data

    二. JDBC

    1.新建一个项目:springboot-date  引入相应的模块

    项目建好之后,springboot会自动帮我们导入了如下的启动器

    2.用IDEA连接上自己的数据库,实现数据库的访问

    3.SpringBoot中,我们需要进行简单的配置,用于实现数据库的连接

    在resources下创建application.yml配置

    1 spring:
    2   datasource:
    3     username: root
    4     password: 123456
    5     #?serverTimezone=UTC解决时区的报错
    6     url: jdbc:mysql://localhost:3306/ssm-books?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    7     driver-class-name: com.mysql.jdbc.Driver

    4.配置完数据库的东西后,我们就可以直接去使用了,因为SpringBoot已经默认帮我们进行了自动配置;我们去测试类测试一下

     1 @RunWith(SpringRunner.class)
     2 @SpringBootTest
     3 public class SpringbootDataApplicationTests {
     4 
     5     //DI注入数据源
     6     @Autowired
     7     DataSource dataSource;
     8 
     9     @Test
    10     public void contextLoads() throws SQLException {
    11 
    12         System.out.println("默认数据源:" + dataSource.getClass());
    13         //获得连接
    14         Connection connection = dataSource.getConnection();
    15         //关闭连接
    16         connection.close();
    17     }
    18 }

    我们可以看到他默认给我们配置的数据源为:class com.zaxxer.hikari.HikariDataSource   我们并没有手动配置

    有了数据库连接,显然就可以 CRUD 操作数据库了

     

    三. CRUD 操作

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

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

    3.数据库操作的所有 CRUD 方法都在 JdbcTemplate 中

    4.SpringBoot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,我们只需注入即可使用

    5.JdbcTemplate 的自动配置原理是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration 类

    JdbcTemplate主要提供以下几类方法

    • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句

    • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句

    • query方法及queryForXXX方法:用于执行查询相关语句

    • call方法:用于执行存储过程、函数相关语句

    代码测试

     1 import org.springframework.beans.factory.annotation.Autowired;
     2 import org.springframework.jdbc.core.JdbcTemplate;
     3 import org.springframework.web.bind.annotation.PathVariable;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 import org.springframework.web.bind.annotation.RestController;
     6 
     7 import java.util.List;
     8 import java.util.Map;
     9 
    10 @RestController
    11 public class JdbcController {
    12 
    13     //JdbcTemplate 会自己注入数据源
    14     @Autowired
    15     JdbcTemplate jdbcTemplate;
    16 
    17     //1.查询
    18     @RequestMapping("/all")
    19     public List<Map<String, Object>> all() {
    20         //插入语句
    21         String sql = "select * from books";
    22         //查询
    23         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
    24         return maps;
    25     }
    26 
    27     //2.增加
    28     @RequestMapping("/add")
    29     public String add() {
    30         String sql = "insert into books (bookId,bookName,bookNumber,bookPrice) values (4,'红楼梦',8,88)";
    31         jdbcTemplate.update(sql);
    32         return "插入成功";
    33     }
    34 
    35     //3.删除
    36     @RequestMapping("/del/{id}")
    37     public String del(@PathVariable("id") Integer id) {
    38         String sql = "delete from books where bookId=?";
    39         jdbcTemplate.update(sql, id);
    40         return "删除成功";
    41     }
    42 
    43     //4.修改
    44     @RequestMapping("/update/{id}")
    45     public String update(@PathVariable("id") Integer id) {
    46         String sql = "update books set bookName=?,bookNumber=?,bookPrice=? where bookId="+id;
    47         //数据
    48         Object[] objects = new Object[3];
    49         objects[0] = "平凡的世界";
    50         objects[1] = 5;
    51         objects[2] = 55;
    52         jdbcTemplate.update(sql, objects);
    53         return "修改成功";
    54     }
    55 }

    测试页面!!!

  • 相关阅读:
    连接数据库修改篇
    连接数据库
    get和post
    php连接mysql
    AJAX基础!
    JAVAsrcipt总结!
    使用AJAX如何得到数据库当中的值!
    AJAX如何做出输入框提示!
    PHP数据连接主键与外键!
    JAVA当中内存管理与垃圾回收!
  • 原文地址:https://www.cnblogs.com/edda/p/13280310.html
Copyright © 2011-2022 走看看