JDBC operations

Simple JDBC operations are:

JdbcTemplate

  • query
  • queryForObject
  • queryForList
  • update
  • execute

We use the following simple.

Initialize the database

springboot performed automatically data.sql and schema.sql resources folder.

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');

Insert data

@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());
}

Wherein the simpleJdbcInsertinitialization is as follows:

@Bean
public SimpleJdbcInsert simpleJdbcInsert(JdbcTemplate template) {
    return new SimpleJdbcInsert(template)
            .withTableName("FOO").usingGeneratedKeyColumns("ID");
}

Query data

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);
    });
}

Guess you like

Origin www.cnblogs.com/coderJiebao/p/11779832.html