1.搭建环境:JDK1.8+IDEA+mysql数据库
2.配置数据库信息(application.xml文件)
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/book
driver-class-name: com.mysql.cj.jdbc.Driver
注意
一:此处可能会出现数据库连接问题,具体有指定时区,驱动类加载版本,方言,指定编码的连接错误。完整的数据库连接:
二:可能会出现数据库服务器未响应请求的错误,可以去服务中看看数据库是否开启
3.pojo层的Person类(前提需要在Maven层导入lombak依赖)
package com.example.demo.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String username;
private String password;
}
@Data:该注解可以表示导入属性并创建一系列的get和set方法
@NoArgsConstructor:该注解创建一个无参构造器
@AllArgsConstructor:该注解创建一个全参构造器
Person结构图:
4.启动器
org.springframework.boot
spring-boot-starter-jdbc
只有导入了启动器,Spring boot才能为我们实现自动装配,2.6.1版本所支持的启动器都在这里,可以导入自己想使用的启动器依赖 ,至此,数据库就可以连接了
5.对数据库连接采用单元测试检验一下,并输出Sping默认为咱们配置的数据源
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@SpringBootTest
class DemoApplicationTests {
//注入数据库配置信息
@Qualifier("dataSource")
@Autowired
private DataSource dataSource;
@Test
void contextLoads() {
Connection connection = null;
try {
//调用getConnection ( )进行数据连接
connection = dataSource.getConnection ( );
} catch (SQLException e) {
e.printStackTrace ( );
}
System.out.println (connection );
try {
connection.close ();
} catch (SQLException e) {
e.printStackTrace ( );
}
}
}
@Autowired该注解默认采用Bytape方式注入,当使用该注解进行Byname方式注入时,要同@Qualifier("dataSource")一起使用,指定具体的bean。
结果:
表示连接成功
6.整合具体的Controller层
package com.example.demo.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.List;
import java.util.Map;
@RestController
public class jdbccontroller {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/select")
public List
@RestController这个注解是指明一个方法的返回值应该返回到response body中,我的理解就是输出带网页的body中
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为 父路径。
@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户
@GetMapping:用来响应get形式的http请求
@PostMapping:用来响应Post形式的http请求,表格提交必须得用post形式提交,或者进行get+重定向,不然无法隐藏提交的数据。
jdbcTemplate核心:
sping代码中可以看到:org.springframework.jdbc.core
构造器有三种:
boolean lazyInit:是否进行懒加载,这个懒加载我看了文档,没看懂啥意思。。。
方法太多了,我也只会用一些常用的,大家可以自己去研究一下
注:为了预防SQL注入问题,最好采用PreparedStatement方式
附:完整依赖(导入依赖不知道版本时,可以用依赖+maven形式百度一下,就可以找到版本啦)
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.2
com.example
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
1.8
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.1
org.projectlombok
lombok
1.18.22
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin