Spring boot 第四篇-整合JDBC

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结构图:

Spring boot 第四篇-整合JDBC_第1张图片

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> select()
    {
        String sql="select * from t_user";
        List > maps = jdbcTemplate.queryForList ( sql );
        return maps;
    }
     @RequestMapping("/update/{id}")
    public String update(@PathVariable("id") int id)
    {
        String sql = "update t_user set password='123456' where id="+id;
        jdbcTemplate.update ( sql );
        return "OK";

    }

    @RequestMapping("/delete/{id}")
    public String delete(@PathVariable("id")int id)
    {
        String sql = "delete from t_user where id=?";
        jdbcTemplate.update ( sql,id );
        return "OK";
    }

    //新增一个用户
    @GetMapping("/add")
    public String addUser(){
        //插入语句,注意时间问题
      String sql="insert into t_user(username, password) VALUE('wang','123456')  ";
        jdbcTemplate.update(sql);
        //查询
        return "addOk";
    }
}

 @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

构造器有三种:

Spring boot 第四篇-整合JDBC_第2张图片boolean lazyInit:是否进行懒加载,这个懒加载我看了文档,没看懂啥意思。。。

 方法太多了,我也只会用一些常用的,大家可以自己去研究一下

Spring boot 第四篇-整合JDBC_第3张图片 

注:为了预防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
			
		
	


你可能感兴趣的:(spring,boot,spring,boot,java,intellij-idea)