• Spring Boot (7) JdbcTemplate访问数据库


    使用jdbcTemplate操作数据库

      spring framework对数据库的操作在jdbc上面做了深层次的封装,通过依赖注入功能,可以将datasource注册到jdbcTemplate中,学习成本低,毕竟是jdbc的基础知识。

    在pom.xml中添加jdbc模块和mysql数据库驱动

            <!--jdbc -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <!--mysql数据库驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>

    application.yml

      spring boot的jdbc模块会加载以下参数,并且根据url可以识别并自动加载mysql驱动,自动创建数据库实例,自动实现连接池。

    server:
      port: 8088
      servlet:
        context-path: /
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/david2018_db?characterEncoding=utf8
        username: root
        password: 1234

    创建t_user表

    CREATE TABLE `david2018_db`.`t_user` (
      `id` INT NOT NULL AUTO_INCREMENT,
      `username` VARCHAR(45) NULL,
      `password` VARCHAR(45) NULL,
      PRIMARY KEY (`id`));

    t_user.java

    package com.spring.boot.bean;
    
    public class t_user {
        private Integer id;
    
        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 getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        private String username;
        private String password;
    }

    t_userDao.java

      jdbc模块还会自动创建一个JdbcTemplate实例,可以在程序中直接注入使用,下面的dao实现了两个方法:

      update方法:执行增删改操作

      queryForList方法:执行查询操作

      params:任意数量的数组,配置sql中的?占位符

    package com.spring.boot.dao;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
    import java.util.List;
    
    @Repository
    public class t_userDao {
        @Autowired
        JdbcTemplate jdbcTemplate;
    
        public int update(){
            String sql = "update t_user set username = ? where id = ?";
            Object[] params = new Object[]{"boot",1};
            return jdbcTemplate.update(sql,params);
        }
    
        public List queryForList(){
            String sql = "select * from t_user";
            return jdbcTemplate.queryForList(sql);
        }
    }

    helloService.java

      spring boot同样自动配置好了事务,在service上 直接加一个注解即可。

    package com.spring.boot.service;
    
    import com.spring.boot.dao.t_userDao;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import java.util.List;
    
    @Transactional //开启事务
    @Service
    public class t_userService {
        @Autowired
        private t_userDao dao;
    
        public int update() {
            return dao.update();
        }
    
        public List queryForList() {
            return dao.queryForList();
        }
    }

    t_userController.java

    package com.spring.boot.controller;
    
    import com.spring.boot.bean.t_user;
    import com.spring.boot.service.t_userService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RequestMapping("/t_user")
    @RestController
    public class t_userController {
        @Autowired
        private t_userService service;
    
        @GetMapping("/update")
        public String update(){
            service.update();
            return "update";
        }
    
        @GetMapping("/list")
        public List<t_user> list(){
            return service.queryForList();
        }
    }

    输入 http://localhost:8088/t_user/list list 进行测试

  • 相关阅读:
    第47课 父子间的冲突
    第46课 继承中的构造与析构
    第45课 不同的继承方式
    3.天线-网络规划-网络优化
    2.多址技术
    断剑重铸013
    断剑重铸012
    断剑重铸011
    1.LTE系统概述
    断剑重铸010
  • 原文地址:https://www.cnblogs.com/baidawei/p/9104377.html
Copyright © 2020-2023  润新知