简介

JDBC是最原基本的连接数据源的方式,在springboot中所有和数据源有关系的都在Spring Data家族中,所以我们看看springboot中如何使用JDBC来实现对数据库的增删改查操作。

简单使用

  • 引入依赖

这里我们只引入基本的依赖就好,创建一个springboot项目(这里版本是2.1.6),然后添加以下依赖:

    <dependencies>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtimen</scope>
        </dependency>

        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
  • 编写配置文件

这里我们需要把数据库的基本连接信息配置好

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    ## 这里如果不配置时区可能会报错,所以配置时区:serverTimezone=UT
    url: jdbc:mysql://localhost:3306/study_springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
  • 编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class BaseTest {

    @Autowired
    private DataSource dataSource;


    @Test
    public void load(){
        // 打印出:class com.zaxxer.hikari.HikariDataSource
        System.out.println(dataSource.getClass());
    }
}

实现增删改查

spring boot中有很多的xxxTemplate,也就是给我们默认配置了 很多的模板,方便我们进行开发,比如上面测试中的 JdbcTemplate,spring boot已经给我们封装好方法了,我们只要调用就好,下面是增删改查的案例:


@RestController
public class TestController {


    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/userList")
    public List<Map<String, Object>> getUserList(){
        String sql = "select * from study_springboot.user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;
    }
    @GetMapping("/addUser")
    public String addUser(){

        String sql = "insert into study_springboot.user(id, name, password) values('1', 'zhangsan', 'qqqq')";
        jdbcTemplate.update(sql);

        return "add success";
    }

    /**
     * 可以通过占位符实现入参
     * @param id
     * @return
     */
    @GetMapping("/updateUser/{id}")
    public String updateUser(@PathVariable("id") int id){
        String sql = "update study_springboot.user set name =?, password = ? where id = "+id;

        // 封装占位符
        Object[] objects = new Object[2];
        objects[0] = "李四";
        objects[1] = "pppppp";

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

    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") int id){
        String sql = "delete from  study_springboot.user where id = ?";
        // int 类型也是一个object,所以这样传参也是可以的
        jdbcTemplate.update(sql, id);

        return "delete success";
    }

}

上面的案例只是展示基本的操作,但是真实项目中是不会这样写的,一般还是整合MyBatis或者JPA来实现操作数据源。


njitzyd
58 声望7 粉丝