欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微人事第五天:springboot整合JdbcTemplate

程序员文章站 2022-04-30 23:12:49
...

现在来对springboot对持久层的整合
1.创建项目
勾选web,MYSQL Driver和JDBC API依赖
微人事第五天:springboot整合JdbcTemplate
然后再pom.xml文件中修改连接数据库的版本号(修改成自己数据库的版本)

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>5.1.27</version>
        </dependency>

然后需要配置数据库连接池:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

2.连接数据库的配置
使用JdbcTemplate需要提供数据库连接参数
这里在application.properties中配置

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/javaboy?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.创建对应数据库表的实体类
在mysql数据库中有一个名称为javaboy的数据库,其中有一张表是user
user表中有id,username,address这三个字段。
现在创建的实体类对应的就是user表,并在实体类中创建set和get方法。

package org.javaboy.jdbctemplate.bean;

//创建实体类,对应user表
public class User {
    private Integer id;
    private String username;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

4.创建service类提供业务逻辑(也就是crud方法)

package org.javaboy.jdbctemplate.service;

import org.javaboy.jdbctemplate.JdbctemplateApplication;
import org.javaboy.jdbctemplate.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public Integer addUser(User user) {
        return jdbcTemplate.update("insert into user (id,username,address) value (?,?,?)",
                user.getId(),user.getUsername(),user.getAddress());
    }
}

上面代码的核心就是注入了JdbcTemplate类,然后使用了JdbcTemplate中的update方法(这里你无论是删除,增加还是修改都用update方法,因为crud这些操作本质上就是对数据库进行修改),然后在update中的第一个参数编写sql语句,提供的具体值用?占位,之后的参数就是传递具体的值来替换?

那为何JdbcTemplate可以被注入呢?我们来讲解一下其中的原理
连按两下shift,输入JdbcTemplateAutoConfiguration查看
可以看到注解如下,也就是说生效的条件是要有DataSource和JdbcTemplate
其中DataSource我们在application.properties中已经配置过了,JdbcTemplate也在pom.xml文件中加入依赖了。

微人事第五天:springboot整合JdbcTemplate
其中方法:如果你没有配置一个JdbcOperations系统就会帮你默认配置一个JdbcTemplate,JdbcOperations是JdbcTemplate的父类。

在方法中可以看到会帮你创建一个JdbcTemplate实例,然后返回这个实例
微人事第五天:springboot整合JdbcTemplate
所以就可以解释为何能在service类中注入JdbcTemplate了。

5.测试类中测试
在springboot自带的测试类中注入UserService,然后使用这个类的方法

package org.javaboy.jdbctemplate;

import org.javaboy.jdbctemplate.bean.User;
import org.javaboy.jdbctemplate.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class JdbctemplateApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    void contextLoads() {
        User user = new User();
        user.setId(1);
        user.setUsername("javaboy");
        user.setAddress("www.javaboy.org");
        userService.addUser(user);
    }

}

6.点击运行测试类
在mysql数据库中查看:
微人事第五天:springboot整合JdbcTemplate
可以看到数据添加成功。

上面就是使用JdbcTemplate对数据库进行添加操作,接下来来演示一下修改操作:
假设我们要把刚刚添加的那条数据的username中的javaboy修改掉
首先在service类中添加修改方法:
这里原理和添加是一样的

//更新方法
    public Integer updateUsernameById(User user) {
        return jdbcTemplate.update("update user set username = ? where id = ?",
                user.getUsername(),user.getId());
    }

然后在测试类中进行测试:

 @Test
    public void test1() {
        User user = new User();
        user.setId(1);
        user.setUsername("javaboy-2");
        userService.updateUsernameById(user);
    }

点击运行测试类,刷新数据库:
微人事第五天:springboot整合JdbcTemplate
可以看到修改成功。
删除方法也是同样道理这里就不再演示了。
下面再来演示一下查询操作:
service中添加方法:

 //查询方法
    public List<User> getAllUser2() {
        return jdbcTemplate.query("select * from user",new BeanPropertyRowMapper<>(User.class));
    }

测试类:

@Test
    public void test2() {
        List<User> allUser2 = userService.getAllUser2();
        for (User user : allUser2) {
            System.out.println(user);
        }
    }

运行结果:
微人事第五天:springboot整合JdbcTemplate

相关标签: 微人事课程