转载:https://www.cnblogs.com/primadonna/p/10470472.html

什么是JDBC

Java Database Connectivity 是一种用于执行SQL语句的Java API,与数据库建立连接、发送 操作数据库的语句并处理结果。

Spring Boot 使用 JDBC

增加依赖

  • 修改pom.xml:将dependecies 修改为如下两个

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId></dependency></dependencies>

    创建 Customer.java 类

package com.example.kane.Model;public class Customer {private long id;private String firstName, lastName;public Customer(long id, String firstName, String lastName) {this.id = id;this.firstName = firstName;this.lastName = lastName;}@Overridepublic String toString() {return String.format("Customer[id=%d, firstName='%s', lastName='%s']",id, firstName, lastName);}// getters & setters omitted for brevity
}

修改Application 类

package com.example.kane;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.client.RestTemplate;import com.example.kane.Model.Customer;@SpringBootApplication
//@EnableScheduling
public class RestfulWebService1Application implements CommandLineRunner{private static final Logger log = LoggerFactory.getLogger(RestfulWebService1Application.class);public static void main(String args[]) {SpringApplication.run(RestfulWebService1Application.class, args);}@AutowiredJdbcTemplate jdbcTemplate;@Overridepublic void run(String... strings) throws Exception {log.info("Creating tables");jdbcTemplate.execute("DROP TABLE customers IF EXISTS");jdbcTemplate.execute("CREATE TABLE customers(" +"id SERIAL, first_name VARCHAR(255), last_name VARCHAR(255))");// Split up the array of whole names into an array of first/last namesList<Object[]> splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long").stream().map(name -> name.split(" ")).collect(Collectors.toList());// Use a Java 8 stream to print out each tuple of the listsplitUpNames.forEach(name -> log.info(String.format("Inserting customer record for %s %s", name[0], name[1])));// Uses JdbcTemplate's batchUpdate operation to bulk load datajdbcTemplate.batchUpdate("INSERT INTO customers(first_name, last_name) VALUES (?,?)", splitUpNames);log.info("Querying for customer records where first_name = 'Josh':");jdbcTemplate.query("SELECT id, first_name, last_name FROM customers WHERE first_name = ?", new Object[] { "Josh" },(rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("first_name"), rs.getString("last_name"))).forEach(customer -> log.info(customer.toString()));}
}

说明

官网的例子,没有配置JDBC Template的Datasource,默认使用的是H2 的内存存储的数据库,只能当做测试使用。下面会有介绍更改DataSource的方法

介绍下 CommandLineRunner

功能

在项目启动后,执行执行功能,我们可以定一个类,去实现CommandLineRunner接口,重写run方法,执行一部分操作。需要注意的是,定义类必须标记为Spring管理的组件

测试类

package com.example.kane.Model;import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=1) //因为可能有许多事情要做,Order 可以根据大小,判读执行的顺序
public class run_after_application implements CommandLineRunner{@Overridepublic void run(String... args) throws Exception {// TODO Auto-generated method stubSystem.out.println("-----------------------");}}

介绍下JdbcTempalte

在JDBC核心包中,JdbcTemplate是主要的类,简化了JDBC的使用,避免了一些常规错误。它能够执行JDBC核心流程,在应用代码之上提供SQL语句、导出结果。这个类执行SQL查询、更新、对结果集重复操作捕获JDBC的异常。并将它翻译成org.springframework.dao 包中定义的基本的、信息量更大的异常层次结构。

JDBC构造方法

  • JdbcTemplate()
//为Bean创建一个JdbcTemplate以供使用
//再没配置DataSource的情况下 springboot提供了 一些嵌入式的数据库支持,上面的例子使用的就是H2数据库,是一个内存的数据库
  • JdbcTemplate(javax.sql.DataSource dataSource)
//构造的时候传入一个 DataSource,来获取链接
//JdbcTemplate Spring boot默认链接的是H2 database,

在spring boot中配置mysql 数据库

  • 数据库配置类 db_config
package com.example.kane.config;import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class db_config {//这个类是一个Config类@Value("${db.driver}")private String DRIVER;@Value("${db.password}")private String PASSWORD;@Value("${db.url}")private String URL;@Value("${db.username}")private String USERNAME;@Beanpublic DataSource dataSource1() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName(DRIVER);dataSource.setUrl(URL);dataSource.setUsername(USERNAME);dataSource.setPassword(PASSWORD);return dataSource;}
}
  • application.properties
# Database
# mysqljdbc连接驱动
db.driver:com.mysql.cj.jdbc.Driver
db.url:jdbc:mysql://localhost:3306/test
db.username:root
db.password:root
  • pom.xml
  • application 启动类修改
  •     @AutowiredJdbcTemplate jdbcTemplate;//下面是加载了数据库的配置。只需要增加这个@Autowireddb_config db_config;
<dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>
<!-- 需要用到commons-dbcp连接池,以及连接mysql使用的drver-->

使用JDBC 获取相关的数据相关推荐

  1. 【Spring Boot】使用JDBC 获取相关的数据

    使用JDBC 获取相关的数据 什么是JDBC Java Database Connectivity 是一种用于执行SQL语句的Java API,与数据库建立连接.发送 操作数据库的语句并处理结果. S ...

  2. JDBC 获取被插入数据的主键ID值

    除了用存储过程还有以下方法可以获取: static int create() throws SQLException {     Connection conn = null;     Prepare ...

  3. 获取实时股票数据与股票数据接口API

    http://jobtom.javaeye.com/blog/814594 股票数据的获取目前有如下两种方法可以获取: 1.http/javascript接口取数据  2.web-service接口 ...

  4. Java使用JDBC获取数据并打印出来

    JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API. JDBC API提供了以下接口和类: Tables Cool DriverManage ...

  5. Zabbix如何通过ODBC对接Oracle获取相关数据

    转载来源 :https://mp.weixin.qq.com/s/PNl3c8frgqIYjDnVsQALHA 目 录 什么是ODBC及其主要功能 安装Oracle-instantclient 配置S ...

  6. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  7. 使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  8. java连接as400数据库,原创:用JDBC访问AS/400数据 配置与JDBC编程要点Windows系统 -电脑资料...

    发了半天了,只见鱼过,不见冒泡,正在疑惑各位大大是否对此题目不感兴趣呢?luoshengzh大大的鼓励来了,谢谢luoshengzh, 发了半天了,只见鱼过,不见冒泡,正在疑惑各位大大是否对此题目不感 ...

  9. ceph bluestore源码分析:admin_socket实时获取内存池数据

    环境: 版本:ceph 12.2.1 部署完cephfs 使用ceph-fuse挂载,并写入数据 关键参数: debug_mempool = true 将该参数置为true即可查看详细的blustor ...

最新文章

  1. SAP PM 入门系列6 - PM常用表
  2. 一个工作一年的程序员的告白
  3. oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
  4. vue 监听路由变化
  5. DevOps实战 —— 如何高效地远程部署?自动化运维利器 Fabric 教程
  6. 网红手工耿造了辆电动汽车 罗永浩点赞 网友喊话雷军投资
  7. html5鼠标讯听,HTML5 随鼠标移动而变化的低频信号发生器
  8. Java项目开发流程
  9. 基于IC设计的实用ISP介绍
  10. 常用字典代码推荐标准
  11. 公式法求主合取范式和主析取范式的一种思路
  12. msl3等级烘烤时间_MSL等级
  13. 若依后台实现表连接查询显示,一对一查询
  14. 软件开发的功能性需求和非功能性需求
  15. EA 2022 HSN Plugfest- UNH-IOL以太网联盟高速以太网插拔互操作性测试活动[多图] 400G/800G/112G PAM4
  16. 去中心化和中心化哪个才是未来,Dex.top教你熊市生存指南
  17. Android 手机设置 Charles 代理,pem 证书安装不上?
  18. 1.5 mysql练习题37道,做完这些mysql练习题,立马让你进阶。(附答案)
  19. jquery轮播插件
  20. UE4制作多语言游戏(本地化功能详解)

热门文章

  1. 大数据行业前景如何?有什么岗位?什么要求?一次讲清楚
  2. BUAA_2020级(信息大类)数据结构综合作业编程题_文本摘要生成_哈希表
  3. js 编写一个程序实现统计一串字符串中的英文小写字母个数!
  4. 降低漏洞风险的六大法宝!
  5. 模型优化论文笔记5----采用shuffled block和group convolutional的MBNet(71K)用于AMC
  6. 正则匹配英文括号( 中文括号【 里面的内容 封装工具类
  7. 关于华为应用市场的上架流程
  8. 进入网站后台,提示HTTP错误404.0-NOtFound
  9. UWP 制作汉堡菜单及添加滑动手势
  10. (转)大数据量分页存储过程效率测试附代码