JDBC 操作
简单的 JDBC 操作主要有:
JdbcTemplate
- query
- queryForObject
- queryForList
- update
- execute
简单使用如下所示。
初始化数据库
springboot 会自动执行 resources 文件夹下的 data.sql 和 schema.sql。

schema.sql
CREATE TABLE FOO (ID INT IDENTITY, BAR VARCHAR(64));
data.sql
INSERT INTO FOO (ID, BAR) VALUES (1, 'a');
INSERT INTO FOO (ID, BAR) VALUES (2, 'b');
插入数据
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SimpleJdbcInsert simpleJdbcInsert;
public void insertData() {
Arrays.asList("a", "b").forEach(bar -> {
jdbcTemplate.update("INSERT INTO FOO (BAR) VALUES (?)", bar);
});
HashMap<String, String> row = new HashMap<>();
row.put("BAR", "c");
Number id = simpleJdbcInsert.executeAndReturnKey(row);
log.info("ID of c: {}", id.longValue());
}
其中 simpleJdbcInsert 的初始化如下所示:
@Bean
public SimpleJdbcInsert simpleJdbcInsert(JdbcTemplate template) {
return new SimpleJdbcInsert(template)
.withTableName("FOO").usingGeneratedKeyColumns("ID");
}
查询数据
public void listData() {
log.info("Count: {}",
jdbcTemplate.queryForObject("SELECT COUNT(*) FROM FOO", Long.class));
// 查询数据并把每一行转换成String
List<String> bars = jdbcTemplate.queryForList("SELECT BAR FROM FOO", String.class);
bars.forEach(bar -> {
log.info("BAR: {}", bar);
});
// 查询数据并把每一行转换成Foo
List<Foo> foos = jdbcTemplate.query("SELECT * FROM FOO", new RowMapper<Foo>() {
@Override
public Foo mapRow(ResultSet resultSet, int i) throws SQLException {
return Foo.builder()
.id(resultSet.getLong(1)) // 序号从1开始
.bar(resultSet.getString(2))
.build();
}
});
foos.forEach(foo -> {
log.info("FOO: {}", foo);
});
}
JDBC 操作的更多相关文章
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
- hibernate4中使用Session doWork()方法进行jdbc操作(代码)
Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作 首先看看Work接 ...
- jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- JavaWeb用Jdbc操作MySql数据库(一)
一.添加开发包.在JavaWeb中用jdbc操作数据库,使用方法与java一样,但是在处理开发包的问题上有点差别.JavaWeb不能将mysql-connector-java-5.1.7-bin.ja ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- 使用JdbcTemplate简化JDBC操作 实现数据库操作
使用Spring JDBC框架方遍简单的完成JDBC操作,满足性能的需求且灵活性高. Spring JDBC框架由4个部分组成,即core.datasource.object.support. org ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- jdbc操作mysql
本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
随机推荐
- html,css,js(包含简单的 ES6语法) 实现 简单的音乐盒
知识要点 videoObject.load(): 加载某个视频(音频)文件,即重新播放 videoObject.play(): 播放视频(音频)文件 videoObject.remove(): 停止播 ...
- [LeetCode] 62. 不同路径 ☆☆☆(动态规划)
动态规划该如何优化 描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Fi ...
- jquey动画效果
jquery的事件没有on,js的有. 1.show() 显示 由小变大缓慢显示 <html lang="en"> <head> <meta ch ...
- SQL进阶系列之1CASE表达式
配置环境: 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows 使用数据库: C:\Po ...
- RQM — 需求驱动的测试管理工具
嵌入式系统复杂程度越来越高,随之而来的测试要求和任务也越来越繁重,而测试更多的是对产品满足需求情况的测试,因此,在高强度.高频度的测试过程中,难免有需求遗漏.回归测试不充分.缺陷管理不合理.测试人员疏 ...
- k8s安装之etcd备份还原yaml
etcd备份还原方案,这种比较高级. 使用docker,自动化处理. 如果单节点备份,ETCD_ENDPOINTS一个即可. 如果多节点恢复,依次执行恢复脚本即可. apiVersion: batch ...
- Red Hat Enterprise Linux 8正式发布
现在CENTOS 8还没有发布. 了解其主要特点. https://developers.redhat.com/blog/2019/05/07/red-hat-enterprise-linux-8-n ...
- 非正常卸载Chrome浏览器导致无法重新安装
昨晚在使用selenium的时候,Chrome浏览器和Chromedriver.exe不兼容,前几天使用的时候都没问题,查看浏览器版本后发现浏览器已经自动升级为67版本(我之前安装的是61版本). 于 ...
- c++的标准流入流出和使用例子
参考链接 标准输出流(cout) 预定义的对象 cout 是 iostream 类的一个实例.cout 对象"连接"到标准输出设备,通常是显示屏.cout 是与流插入运算符 < ...
- JDK源码那些事儿之LinkedBlockingDeque
阻塞队列中目前还剩下一个比较特殊的队列实现,相比较前面讲解过的队列,本文中要讲的LinkedBlockingDeque比较容易理解了,但是与之前讲解过的阻塞队列又有些不同,从命名上你应该能看出一些端倪 ...