游戏网站上做银商为网站人员,网页设计首页怎么设计,自己可以做类似拓者的网站吗,建网站怎么搭建自己的服务器整合JDBC
SpringData简介
对于数据访问层#xff0c;无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)#xff0c;Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。
Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库#xff0c;Sprin…整合JDBC
SpringData简介
对于数据访问层无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。
Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。
Sping Data 官网https://spring.io/projects/spring-data
数据库相关的启动器 可以参考官方文档
https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot-starter
整合JDBC
测试数据源
1、我去新建一个项目测试springboot-data-jdbc ; 引入相应的模块基础模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yt7ZMtY6-1610102948043)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210108162430550.png)]
2、项目建好之后发现自动帮我们导入了如下的启动器
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope
/dependency3、编写yaml配置文件连接数据库
spring:datasource:username: rootpassword: 123456#?serverTimezoneUTC解决时区的报错url: jdbc:mysql://localhost:3306/mybatis?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8driver-class-name: com.mysql.cj.jdbc.Driver4、配置完这一些东西后我们就可以直接去使用了因为SpringBoot已经默认帮我们进行了自动配置去测试类测试一下
SpringBootTest
class SpringbootDataJdbcApplicationTests {//DI注入数据源AutowiredDataSource dataSource;Testpublic void contextLoads() throws SQLException {//看一下默认数据源System.out.println(dataSource.getClass());//获得连接Connection connection dataSource.getConnection();System.out.println(connection);//关闭连接connection.close();}
}结果我们可以看到他默认给我们配置的数据源为 : class com.zaxxer.hikari.HikariDataSource 我们并没有手动配置
我们来全局搜索一下找到数据源的所有自动配置都在 DataSourceAutoConfiguration文件
Import( {Hikari.class, Tomcat.class, Dbcp2.class, Generic.class, DataSourceJmxConfiguration.class})protected static class PooledDataSourceConfiguration { protected PooledDataSourceConfiguration() { }}这里导入的类都在 DataSourceConfiguration 配置类下可以看出 Spring Boot 2.2.5 默认使用HikariDataSource 数据源而以前版本如 Spring Boot 1.5 默认使用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源
HikariDataSource 号称 Java WEB 当前速度最快的数据源相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀
可以使用 spring.datasource.type 指定自定义的数据源类型值为 要使用的连接池实现的完全限定名。
关于数据源我们并不做介绍有了数据库连接显然就可以 CRUD 操作数据库了。但是我们需要先了解一个对象 JdbcTemplate
JDBCTemplate
1、有了数据源(com.zaxxer.hikari.HikariDataSource)然后可以拿到数据库连接(java.sql.Connection)有了连接就可以使用原生的 JDBC 语句来操作数据库
2、即使不使用第三方第数据库操作框架如 MyBatis等Spring 本身也对原生的JDBC 做了轻量级的封装即JdbcTemplate。
3、数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。
4、Spring Boot 不仅提供了默认的数据源同时默认已经配置好了 JdbcTemplate 放在了容器中程序员只需自己注入即可使用
5、JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类
JdbcTemplate主要提供以下几类方法
execute方法可以用于执行任何SQL语句一般用于执行DDL语句update方法及batchUpdate方法update方法用于执行新增、修改、删除等语句batchUpdate方法用于执行批处理相关语句query方法及queryForXXX方法用于执行查询相关语句call方法用于执行存储过程、函数相关语句。
测试
编写一个Controller注入 jdbcTemplate编写测试方法进行访问测试
package com.kuang.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;
import java.util.List;
import java.util.Map;RestController
RequestMapping(/jdbc)
public class JdbcController {/*** Spring Boot 默认提供了数据源默认提供了 org.springframework.jdbc.core.JdbcTemplate* JdbcTemplate 中会自己注入数据源用于简化 JDBC操作* 还能避免一些常见的错误,使用起来也不用再自己来关闭数据库连接*/AutowiredJdbcTemplate jdbcTemplate;//查询employee表中所有数据//List 中的1个 Map 对应数据库的 1行数据//Map 中的 key 对应数据库的字段名value 对应数据库的字段值GetMapping(/list)public ListMapString, Object userList(){String sql select * from employee;ListMapString, Object maps jdbcTemplate.queryForList(sql);return maps;}//新增一个用户GetMapping(/add)public String addUser(){//插入语句注意时间问题String sql insert into employee(last_name, email,gender,department,birth) values (狂神说,24736743qq.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 idid;//数据Object[] objects new Object[2];objects[0] 秦疆;objects[1] 24736743sina.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;}}测试请求结果正常
到此CURD的基本操作使用 JDBC 就搞定了。