简单的 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);
});
}

最新文章

  1. php页面静态化技术;学习笔记
  2. SmallPtAMP: C++ AMP implementation of SmallPt / SmallPtGPU
  3. python3验证码机器学习
  4. Windows下安装 msysGit 以及初始化 Git server环境
  5. javaSE第二十一天
  6. OC3-xml文件解析
  7. ORM之PetaPoco入门(二)--Petapoco基本用法
  8. Java进阶 创建和销毁对象
  9. IOS学习之路(代码实现自动布局)
  10. Linux设置静态IP【转】
  11. Apache和PHP的优化
  12. LF模式是个坑,ZeroIce中间件让你体会这个痛
  13. thinkphp框架的大D方法应用
  14. Mysql根据一个基库生成其他库与其不同的库升级脚本
  15. maven插件--assembly
  16. js 捕捉滚动条事件
  17. EntityFramework 优化建议(转)
  18. jqgrid editrules参数说明
  19. python使用mysql数据库(转)
  20. 【大数据系列】使用api修改hadoop的副本数和块大小

热门文章

  1. django AJAX 的应用
  2. FPM-OVP增强实例-银行账户
  3. CentOS7.5 部署Ceph luminous
  4. ssh修改端口
  5. 使用awstats分析nginx日志
  6. 【HCIA Gauss】学习汇总-数据库管理(数据库基本概念)-3
  7. Python中的列表推导式
  8. Java内存模型中volatile关键字的作用
  9. MySQL 查询排除指定字段、自定义变量、动态执行SQL
  10. C#技巧与解析(部分)