简介

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)@SpringBootTestpublic 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曾经给咱们封装好办法了,咱们只有调用就好,上面是增删改查的案例:

@RestControllerpublic 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来实现操作数据源。