springboot 整合JDBC

整合JDBC

创建测试项目测试数据源

1、新建一个项目测试

springboot 整合JDBC

 

 

选择依赖

springboot 整合JDBC

 

 

2、编写yaml配置文件连接数据库

spring:
  datasource:
    username: root
    password: root
    #?serverTimezone=UTC解决时区的报错
    url: jdbc:mysql://192.168.116.136:3306/springbootdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

3、编写测试

    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() {
        System.out.println(dataSource.getClass());
        try {
            Connection connection= dataSource.getConnection();
            System.out.println(connection);
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

结果

springboot 整合JDBC

 

 

默认数据源为 : class com.zaxxer.hikari.HikariDataSource

两次敲击Shift 可以打开SearchEveryWhere

JDBCTemplate

Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序员只需自己注入即可使用

JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类

JdbcTemplate主要提供以下几类方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

  • query方法及queryForXXX方法:用于执行查询相关语句;

  • call方法:用于执行存储过程、函数相关语句。

测试

数据准备SQL语句

springboot 整合JDBC
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT 用户名称,
  `birthday` date DEFAULT NULL COMMENT 生日,
  `sex` char(1) DEFAULT NULL COMMENT 性别,
  `address` varchar(256) DEFAULT NULL COMMENT 地址,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 王五, null, 2, null);
INSERT INTO `user` VALUES (10, 张三, 2014-07-10, 1, 北京市);
INSERT INTO `user` VALUES (16, 张小明, null, 1, 河南郑州);
INSERT INTO `user` VALUES (22, 陈小明, null, 1, 河南郑州);
INSERT INTO `user` VALUES (24, 张三丰, null, 1, 河南郑州);
INSERT INTO `user` VALUES (25, 陈小明, null, 1, 河南郑州);
INSERT INTO `user` VALUES (26, 王五, null, null, null);
View Code

Java代码

springboot 整合JDBC
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@RestController // 如果不可用,原因未导入web依赖(spring-boot-starter-web)
public class JdbcController {
    /**
     * Spring Boot 默认提供了数据源,默认提供了 org.springframework.jdbc.core.JdbcTemplate
     * JdbcTemplate 中会自己注入数据源,用于简化 JDBC操作
     * 还能避免一些常见的错误,使用起来也不用再自己来关闭数据库连接
     */
    @Autowired
    JdbcTemplate jdbcTemplate;

    //查询employee表中所有数据
    //List 中的1个 Map 对应数据库的 1行数据
    //Map 中的 key 对应数据库的字段名,value 对应数据库的字段值
    @GetMapping("/list")
    public List<Map<String, Object>> userList(){
        String sql = "select * from user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;
    }

    //新增一个用户
    @GetMapping("/add")
    public String addUser(){
        //插入语句,注意时间问题
        String sql = "INSERT INTO user VALUES (‘2‘, ‘张三‘, ‘"+ LocalDateTime.now() +"‘, ‘1‘, ‘北京市‘)" ;
        jdbcTemplate.update(sql);
        //查询
        return "addOk";
    }

    //修改用户信息
    @GetMapping("/update/{id}")
    public String updateUser(@PathVariable("id") int id){
        //插入语句
        String sql = "update user set username=?,sex=? where id="+id;
        //数据
        Object[] objects = new Object[2];
        objects[0] = "Test";
        objects[1] = "0";
        jdbcTemplate.update(sql,objects);
        //查询
        return "updateOk";
    }

    //删除用户
    @GetMapping("/delete/{id}")
    public String delUser(@PathVariable("id") int id){
        //插入语句
        String sql = "delete from user where id=?";
        jdbcTemplate.update(sql,id);
        //查询
        return "deleteOk";
    }
}
View Code

 

springboot 整合JDBC

上一篇:Windows下安装MySQL详细教程


下一篇:小程序-浅谈云函数获取数据和云数据库api获取数据的区别