当前位置:Gxlcms > 数据库问题 > JDBC 操作

JDBC 操作

时间:2021-07-01 10:21:17 帮助过:4人阅读

简单的 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 操作

标签:select   code   ide   java   val   tst   vat   ber   into   

人气教程排行