在JdbcTemplate类中执行SQL语句的方法大致分为3类:
方法 | 功能说明 | 要求 |
---|---|---|
execute() | 用于执行DDL语句,如:建表 | 了解 |
update() | 用于执行DML语句,实现对数据库表的增删改操作 | 掌握 |
queryXxx() | 用于执行DQL语句,实现对数据库表的各种查询的操作 | 一定掌握 |
- execute()方法:
- 参数:sql语句(建表)
1 | String sql = "create table tb_user(" |
update()语句
参数:sql语句、args(用来替换占位符的真实值,是可变的参数)
1
2String sql = "insert into table tb_user(name, age) value (?, ?);"
jdbcTemplate.update(sql, "hh", 21);总结:
- JdbcTemplate的update方法方法用于执行DML语句[^1]。
- 可以在SQL语句中使用
?
占位符,同时要在在update方法的args可变参数中传入对应的参数。
QueryXxx()语句
- QueryForMap(), 查询一条记录封装成Map, 适合于含有任意key的JSON,没有相应的构造类
- 参数: sql语句,args
1
Map<String, Object> map = jdbcTemplate.queryForMap(“select * from tb_userwhere id=?”, 2);
- 参数: sql语句,args
- queryForObject(), 查询一个数据封装成一个JavaBean对象
- 参数:
queryForObject(String sql,RowMapper rowMapper,Object…args)
- SpringJDBC提供一个接口:RowMapper的实现类BeanPropertyRowMapper,使用起来更方便。值需要在构造方法中传入tb_user.class类对象即可,它会自动封装所有同名属性。
1
jdbcTemplate.queryForObject("select * from tb_user", new BeanPropertyRowMapper(User.class));
- 参数:
- QueryForMap(), 查询一条记录封装成Map, 适合于含有任意key的JSON,没有相应的构造类
query(),查询多条记录封装成List
- 参数:同上个方法
1
List<User> users = jdbcTemplate.query("select * from tb_user", new BeanPropertyRowMapper<>(User.class));
- 参数:同上个方法
当然,上述只是一些常用方法,还有queryForInt()等方法,大家可以自己去了解尝试。
[^1]: DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。 此外,还有DQL(Data Query Language) 简称,数据库查询语言, 关键字为SELECT。