聊一聊如何构建一个网站
https://www.bjchuhai.com/ 76Z7D
格式化代码块: Ctrl+Alt+L
全局搜索: Shift+Shift
局部搜索:Ctrl+F
- 模板: (前端的模板)
- 框架: (组件: 我们自己进行组合合并)
Bootstrap
semantic-ui
https://1.semantic-ui.com/
1.前端搞定:页面长什么样子:数据
2.设计数据库
3.前端让他能够自动运行,独立化工程
4.数据接口如何对接,json,对象all in one
5.前后端联调测试
后台框架:xadmin http://x.xuebingsi.com/
前端界面:至少自己能够通过前端框架,组合出来一个网站页面
(十四)、.SpringBoot整合数据库操作
1.整合JDBC
(1).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
(2).整合JDBC
数据库相关的启动器 :可以参考官方文档:
https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot-starter
1.我们创建一个SQL工程项目
2.创建完模板之后 我们在pom.xml中会有以下的依赖
- 我们要记得更改对应的mysql驱动版本依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>
3.编写yaml配置文件 连接数据库---application.yaml
- 全场不需要使用 双引号进行引注
spring: datasource: # 我们这里用户名和密码都不需要双引号 , username: root password: 121788 url: jdbc:mysql://localhost:3306/mybatis?userUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.jdbc.Driver
4.我们配置完以上基本配置之后,我们进行测试数据
- 我们要对DataSource进行控制权的反转。 也就是自动装配
- 调用DataSource的一个getConnection()链接的一个方法
不要在方法里面写形参了
- 然后我们对数据进行遍历
package com.jsxs; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @SpringBootTest class SpringBoot03SqlApplicationTests { // 如果我们这里添加 @AutoWried 出现dataSource爆红,那么我们就进行改成Resource @Resource // 这个数据源的主要目的就是为了连接数据库,里面内敛一个getConnection()这个方法。 private DataSource dataSource; @Test void contextLoads() throws SQLException { // 这里查看一下默认的数据源 System.out.println(dataSource.getClass()); // 链接数据库的操作,切记我们这里不能写形参了。 Connection connection = dataSource.getConnection(); // 输入sql语句 String sql="select *from user"; // 我们进行预编译语句 PreparedStatement preparedStatement = connection.prepareStatement(sql); // 这里我们调用查询的方法 ResultSet resultSet = preparedStatement.executeQuery(); // 我们开始对数据进行遍历 while (resultSet.next()){ System.out.println(resultSet.getInt(1)+resultSet.getString(2)); } connection.close(); } }
5.源码分析:
我们全局搜索 DataSourceProperties.class,我们点开看源码。
利用yaml对DataSource进行赋值的操作。
结果:我们可以看到他默认给我们配置的数据源为 : 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
(3).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方法:用于执行存储过程、函数相关语句。
1.查询数据库的全部信息
我们这里要使用List<>集合内嵌Map集合,因为Map集合的形参必须是两个。所以我们通过内嵌Map集合我们就可以实现对数据库的信息(包括字段名和信息)
我们如果想使用ResultFul风格, (1).需要在请求的路径上加 {xxx} 。(2).需要在形参上添加注解@PathVariable(“xxx”)。
JdbcTempladet类的update()方法形参有很多种, (sql,objects).我们可以使用这样的方法对数据进行动态的处理
package com.jsxs.controller; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; import java.util.Map; @RestController public class JDBCTemplate { @Resource private JdbcTemplate jdbcTemplate; // 查询 @RequestMapping("/userList") public List<Map<String, Object>> Jdbc() { // 查询数据库的所有信息 // 没有实体类,数据库中的属性怎么获取? Map<属性名,值>, List<Object>只能有一个属性形参 // 为什么要这样做? 因为我们传输的是JSON值,要求我们这样做。 List<Map<String, Object>> list_maps = jdbcTemplate.queryForList("select *from user"); return list_maps; } // 增加 @RequestMapping("/addUser") public String addUser() { String sql = "insert into user values(8,'嘿嘿','123444')"; int update = jdbcTemplate.update(sql); if (update > 0) { return "update success"; } else { return "Update on!"; } } // 删除 @RequestMapping("/deleteUser") public String deleteUser() { String sql = "delete from user where id=8"; int update = jdbcTemplate.update(sql); if (update > 0) { return "delete success!"; } else { return "delete no!"; } } // 更改 // 利用ResultFul风格的条件 // (1). 我们在路径添加的时候,我们需要花括号 {} // (2). 我们需要注解 @PathVariable("id") // (3). update(): 后面有很多形参,我们可以添加数组,实现 ? 来实现对数据的更改。 @RequestMapping("/updateUser/{id}") public String updateUser(@PathVariable("id") int id) { String sql = "update user set name=?,pwd=? where id=" + id; // 我们这里对Object设置成数组、 Object[] objects = new Object[2]; objects[0] = "1111111"; objects[1] = "1111111"; // 我们这里多添加一个参数,第一个是sql语句。第二个是objects数组; int update = jdbcTemplate.update(sql, objects); if (update > 0) { return "update success!"; } else { return "update no!"; } } }