14. Spring Boot整合JDBC

14. Spring Boot 整合JDBC

14.1 Spring Data

对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。

14.2 整合JDBC

  1. 创建一个新项目,引入基础模块

    img

  2. application.yml

    spring:
      datasource:
        username: root
        password: 123456
        # url中加上serverTimezone=UTC解决时区报错
        url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8&&serverTimezone=GMT%2B8
        driver-class-name: com.mysql.cj.jdbc.Driver
    
  3. 测试

    @SpringBootTest
    class Springboot04DataApplicationTests {
    
        @Autowired
        DataSource dataSource;
    
        @Test
        void contextLoads() throws Exception{
            System.out.println(dataSource.getClass());
    
            // 获得数据库连接
            Connection connection = dataSource.getConnection();
            System.out.println(connection);
            connection.close();
    
        }
    
    }
    

14.3 JDBCTemplate

  1. 有了数据源(com.zaxxer.hikari.HikariDataSource),拿到数据库连接(java.sql.Connection),就可以使用原生的 JDBC 语句来操作数据库
  2. Spring 本身对原生的JDBC 做了轻量级的封装,就是JDBCTemplate
  3. 数据库操作的所有 CRUD 方法都在JDBCTemplate 中
  4. Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中
  5. JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类

主要有以下方法

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

测试

@RestController
public class JDBCController {

    @Autowired
    JdbcTemplate jdbcTemplate;

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

    @GetMapping("/addUser")
    public String addUser() {
        String sql = "insert into mybatis.user(id,name,pwd) values (8,'dns','123456')";
        jdbcTemplate.update(sql);
        return "add_ok";
    }

    @GetMapping("/updateUser/{id}")
    public String updateUser(@PathVariable("id") int id) {
        String sql = "update mybatis.user set name = ?,pwd=? where id=" + id;
        Object[] objects = {"www", "123"};
        jdbcTemplate.update(sql,objects);
        return "update_ok";
    }

    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") int id) {
        String sql = "delete from mybatis.user where id =?";
        jdbcTemplate.update(sql,id);
        return "delete_ok";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值