欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JDBC 操作

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

简单的 jdbc 操作主要有:

jdbctemplate

  • query
  • queryforobject
  • queryforlist
  • update
  • execute

简单使用如下所示。

初始化数据库

springboot 会自动执行 resources 文件夹下的 data.sql 和 schema.sql。

JDBC 操作

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