SpringBoot JdbcTemplate

JdbcTemplate基本使用

一、开发工具及环境

  • 电脑操作系统:Win10

  • Java版本:JDK1.8

  • MySQL数据库版本:mysql-8.0.26-winx64

  • 编辑器:IntelliJ IDEA 2021.2 企业版

  • SpringBoot版本:2.6.3

  • 工作目录

    image-20220122212139932

二、Spring Boot基本配置

1、Spring initializr 设置

image-20220122162041625

2、pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>jdbcTemplate</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>jdbcTemplate</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

3、JdbcTemplateApplication类

package com.example.jdbcTemplate;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JdbcTemplateApplication {

	public static void main(String[] args) {
		SpringApplication.run(JdbcTemplateApplication.class, args);
	}

}

4、JdbcTemplateApplicationTests类

package com.example.jdbcTemplate;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class JdbcTemplateApplicationTests {

	@Test
	void contextLoads() {
	}

}

5、MyMvcConfig类

package com.example.jdbcTemplate.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;

//全面扩展SpringMVC  dispatcherServlet
@Configuration
@EnableWebMvc
public class MyMvcConfig implements WebMvcConfigurer {

    //ViewResolver 实现了视图解析器接口的类,我们就可以把它看做视图解析器
    @Bean
    public ViewResolver myViewResolver(){
        return new MyViewResolver();
    }

    public static class MyViewResolver implements ViewResolver{
        @Override
        public View resolveViewName(String viewName, Locale locale) throws Exception {
            return null;
        }
    }
}

三、数据库搭建

1、数据准备

创建User表,并插入三行数据

CREATE TABLE `jdbctemplate`.`User`( `id` INT(4) NOT NULL, `username` VARCHAR(30) NOT NULL, `password` VARCHAR(30) NOT NULL, `email` VARCHAR(30), `gender` INT(1), `birth` DATE, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci; 

INSERT INTO `jdbctemplate`.`user` (`id`, `username`, `password`, `email`, `gender`, `birth`) VALUES ('1', 'zhangsan', '123456', 'test01@qq.com', '1', '2000-06-14'); 
INSERT INTO `jdbctemplate`.`user` (`id`, `username`, `password`, `email`, `gender`, `birth`) VALUES ('2', 'xiaoming', '654321', 'test02@qq.com', '1', '2001-07-03'); 
INSERT INTO `jdbctemplate`.`user` (`id`, `username`, `password`, `email`, `gender`, `birth`) VALUES ('3', 'zhangcuihua', '123456789', 'test03@qq.com', '0', '1999-08-12'); 

2、application.properties 配置数据库连接

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/jdbcTemplate?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3、测试是否能连接上数据库

package com.example.jdbcTemplate;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

@SpringBootTest
class JdbcTemplateApplicationTests {

	//DI注入数据源
	@Autowired
	DataSource dataSource;

	@Test
	void contextLoads() throws SQLException {
		//看一下默认数据源
		System.out.println(dataSource.getClass());
		//获得连接
		Connection connection = dataSource.getConnection();
		System.out.println(connection);
		//关闭连接
		connection.close();
	}

}

运行测试是否运行成功,如果成功,则说明成功连接数据库。

四、整合JdbcTemplate

先创建pojo、dao、controller三个文件夹

1、创建实体类User.java

在pojo文件夹中新建User类

package com.example.jdbcTemplate.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;
    private String username;
    private String password;
    private String email;
    private Integer gender;//0:女生;1:男生
    private Date birth;

}

2、创建UserDao.java

在Dao文件夹中创建UserDao.java并整合JdbcTemplate

package com.example.jdbcTemplate.dao;

import com.example.jdbcTemplate.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public class UserDao {

    @Autowired
    JdbcTemplate jdbcTemplate;

    public List<Map<String,Object>> getUserList(){
        String sql = "select * from `user`";
        List<Map<String, Object>> userList = jdbcTemplate.queryForList(sql);
        return userList;
    }

    public User getUserById(int id){
        String sql = "select * from `user` where id="+id;
        User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(User.class));
        return user;
    }

    public String addUser(User user){
        String sql = "insert into `user`(id,username,password,email,gender,birth) values(?,?,?,?,?,?)";

        Object[] objects = new Object[6];
        objects[0] = user.getId();
        objects[1] = user.getUsername();
        objects[2] = user.getPassword();
        objects[3] = user.getEmail();
        objects[4] = user.getGender();
        objects[5] = user.getBirth();

        jdbcTemplate.update(sql,objects);
        return "add ok";
    }

    public String updateUser(User user){
        String sql = "update `user` set username=?,password=?,email=?,gender=?,birth=? where id=?";

        Object[] objects = new Object[6];
        objects[0] = user.getUsername();
        objects[1] = user.getPassword();
        objects[2] = user.getEmail();
        objects[3] = user.getGender();
        objects[4] = user.getBirth();
        objects[5] = user.getId();

        jdbcTemplate.update(sql,objects);
        return "update ok";
    }

    public String deleteUserById(int id){
        String sql = "delete from `user` where id="+id;
        jdbcTemplate.update(sql);
        return "delete ok";
    }
}

3、创建JdbcController

package com.example.jdbcTemplate.controller;

import com.example.jdbcTemplate.dao.UserDao;
import com.example.jdbcTemplate.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;
import java.util.Map;

@RestController
public class JdbcController {

    @Autowired
    UserDao userDao;

    @GetMapping({"/","/userList"})
    public String getUserList(){
        List<Map<String, Object>> userList = userDao.getUserList();
        return userList.toString();
    }

    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") Integer id){
        User user = userDao.getUserById(id);
        return user.toString();
    }

    @GetMapping("/addUser")
    public String addUser(){
        User user = new User(4, "chenyonwu", "xiangyue2035", "test04@qq.com", 1, new Date());
        String s = userDao.addUser(user);
        return s;
    }

    @GetMapping("/updateUser")
    public String updateUser(){
        User user = new User(4, "AAA", "123456", "test05@qq.com", 0, new Date());
        String s = userDao.updateUser(user);
        return s;
    }

    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") Integer id){
        String s = userDao.deleteUserById(id);
        return s;
    }
}
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你想了解关于 Spring Boot 中使用 JdbcTemplate 的相关内容,是吗?那我来回答你的问题。 JdbcTemplateSpring Framework 中提供的一个用于简化 JDBC 操作的工具类,它封装了 JDBC 的核心代码,提供了一组简单的方法,可以让我们更加方便地进行数据库操作。在 Spring Boot 中,我们可以通过注入 JdbcTemplate 对象来使用它。 具体来说,使用 JdbcTemplate 需要进行以下几个步骤: 1. 在 pom.xml 文件中添加 spring-jdbc 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ``` 2. 在 application.properties 文件中配置数据源信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 在代码中注入 JdbcTemplate 对象,并使用它进行数据库操作,例如: ```java @Autowired private JdbcTemplate jdbcTemplate; public List<User> findAll() { String sql = "SELECT * FROM user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } public void save(User user) { String sql = "INSERT INTO user(name, age) VALUES(?, ?)"; jdbcTemplate.update(sql, user.getName(), user.getAge()); } ``` 以上就是使用 JdbcTemplate 进行数据库操作的基本流程。需要注意的是,在使用 JdbcTemplate 进行增删改操作时,需要使用 update 方法;在进行查询操作时,需要使用 query 方法。同时,为了方便操作,可以使用 RowMapper 将数据库中的数据转换为 Java 对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值