//1.创建数据源DataSource
DataSource dataSource = DataSourceUtils.getDataSource();
//2.创建JdbcTemplate,new JdbcTemplate(dataSource)
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3.调用JdbcTemplate的方法操作db,如增删改查
List<Map<String, Object>> maps = jdbcTemplate.queryForList(“select * from t_user”);
System.out.println(maps);
}
输出
[{id=114, name=路人}, {id=115, name=java高并发}, {id=116, name=spring系列}]
t_user表数据
mysql> select id,name from t_user;
±----±--------------+
| id | name |
±----±--------------+
| 114 | 路人 |
| 115 | java高并发 |
| 116 | spring系列 |
±----±--------------+
3 rows in set (0.00 sec)
上面查询返回了t_user
表所有的记录,返回了一个集合,集合中是一个Map,Map表示一行记录,key为列名,value为列对应的值。
有没有感觉到特别的方便,只需要jdbcTemplate.queryForList("select * from t_user")
这么简单的一行代码,数据就被获取到了。
下面我们继续探索更强大更好用的功能。
增加、删除、修改操作
JdbcTemplate中以update开头的方法,用来执行增、删、改操作,下面来看几个常用的。
无参情况
Api
int update(final String sql)
案例
@Test
public void test1() {
DataSource dataSource = DataSourceUtils.getDataSource();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int updateRows = jdbcTemplate.update(“INSERT INTO t_user (name) VALUE (‘maven系列’)”);
System.out.println(“影响行数:” + updateRows);
}
有参情况1
Api
int update(String sql, Object… args)
案例
sql中使用?作为占位符。
@Test
public void test2() {
DataSource dataSource = DataSourceUtils.getDataSource();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int updateRows = jdbcTemplate.update(“INSERT INTO t_user (name) VALUE (?)”, “mybatis系列”);
System.out.println(“影响行数:” + updateRows);
}
有参情况2
Api
int update(String sql, PreparedStatementSetter pss)
通过PreparedStatementSetter来设置参数,是个函数式接口,内部有个setValues方法会传递一个PreparedStatement参数,我们可以通这个参数手动的设置参数的值。
案例
@Test
public void test3() {
DataSource dataSource = DataSourceUtils.getDataSource();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int updateRows = jdbcTemplate.update(“INSERT INTO t_user (name) VALUE (?)”, new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
ps.setString(1, “mysql系列”);
}
});
System.out.println(“影响行数:” + updateRows);
}
获取自增列的值
Api
public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder)
案例
@Test
public void test4() {
DataSource dataSource = DataSourceUtils.getDataSource();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = “INSERT INTO t_