jdbcTemplate使用方法实例解析
什么是jdbcTemplate
jdbcTemplate
是Spring框架中提供的JDBC操作工具,可以更便捷、简洁的操作数据库。
jdbcTemplate中的主要类有:
org.springframework.jdbc.core.JdbcTemplate
org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
org.springframework.jdbc.object.SqlQuery
其中,JdbcTemplate
是最常用的类,能够执行sql查询和更新操作,并具备结果映射功能。
jdbcTemplate使用方法
1. 配置数据源
如果没有配置数据源,请参考Spring数据源配置,这里不再赘述。
2. 导入依赖
在pom.xml中添加如下依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
3. 创建JdbcTemplate
对象
@Autowired
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init () {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
4. 执行查询操作
public List<User> queryAllUsers () {
String sql = "select * from user";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
return jdbcTemplate.query(sql, rowMapper);
}
5. 执行插入操作
public int addUser (User user) {
String sql = "insert into user (name, age) values (?, ?)";
Object[] args = {user.getName(), user.getAge()};
int[] argTypes = {Types.VARCHAR, Types.INTEGER};
return jdbcTemplate.update(sql, args, argTypes);
}
上面的代码中,?
是一个占位符,可以防止SQL注入攻击。
6. 执行更新操作
public int updateUser (User user) {
String sql = "update user set name = ? where id = ?";
Object[] args = {user.getName(), user.getId()};
int[] argTypes = {Types.VARCHAR, Types.INTEGER};
return jdbcTemplate.update(sql, args, argTypes);
}
7. 执行删除操作
public int deleteUserById (int id) {
String sql = "delete from user where id = ?";
Object[] args = {id};
int[] argTypes = {Types.INTEGER};
return jdbcTemplate.update(sql, args, argTypes);
}
8. 批量插入/更新操作
public int[] batchInsertUsers (List<User> users) {
String sql = "insert into user (name, age) values (?, ?)";
// 实现BatchPreparedStatementSetter接口,设置批量操作参数
BatchPreparedStatementSetter batchPreparedStatementSetter = new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, users.get(i).getName());
ps.setInt(2, users.get(i).getAge());
}
@Override
public int getBatchSize() {
return users.size();
}
};
return jdbcTemplate.batchUpdate(sql, batchPreparedStatementSetter);
}
jdbcTemplate示例说明
示例1:查询用户表的所有记录
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void testQueryAllUsers () {
String sql = "select * from user";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
List<User> users = jdbcTemplate.query(sql, rowMapper);
System.out.println(users);
}
示例2:新增一条用户记录
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void testAddUser () {
User user = new User();
user.setName("Tom");
user.setAge(20);
String sql = "insert into user (name, age) values (?, ?)";
Object[] args = {user.getName(), user.getAge()};
int[] argTypes = {Types.VARCHAR, Types.INTEGER};
int result = jdbcTemplate.update(sql, args, argTypes);
System.out.println(result);
}
总结
使用jdbcTemplate
可以很方便的进行数据库的操作,少写了大量的冗余代码,提高了开发效率。同时,jdbcTemplate
具有灵活的扩展性,支持批量操作等特性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jdbcTemplate使用方法实例解析 - Python技术站