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