基于jdbcTemplate的二次操作封装
时间: 2024-01-13 15:02:17 浏览: 22
基于JdbcTemplate的二次操作封装,可以通过创建一个DAO类来实现。DAO类可以封装JdbcTemplate的常见操作,如查询、插入、更新和删除等。
下面是一个示例DAO类的代码:
```java
@Repository
public class UserDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> findAll() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new UserMapper());
}
public User findById(int id) {
String sql = "SELECT * FROM users WHERE id=?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserMapper());
}
public int insert(User user) {
String sql = "INSERT INTO users (name, age, email) VALUES (?, ?, ?)";
return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getEmail());
}
public int update(User user) {
String sql = "UPDATE users SET name=?, age=?, email=? WHERE id=?";
return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getEmail(), user.getId());
}
public int delete(int id) {
String sql = "DELETE FROM users WHERE id=?";
return jdbcTemplate.update(sql, id);
}
private static class UserMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
user.setEmail(rs.getString("email"));
return user;
}
}
}
```
在这个示例中,我们使用了JdbcTemplate的query()、queryForObject()、update()等方法来执行SQL语句。同时,我们还创建了一个UserMapper类来将查询结果映射到User对象中。
在实际使用中,我们可以在Service或Controller中调用DAO类中的方法来完成数据库操作。例如:
```java
@Service
public class UserService {
@Autowired
private UserDAO userDAO;
public List<User> findAll() {
return userDAO.findAll();
}
public User findById(int id) {
return userDAO.findById(id);
}
public void save(User user) {
if (user.getId() == null) {
userDAO.insert(user);
} else {
userDAO.update(user);
}
}
public void delete(int id) {
userDAO.delete(id);
}
}
```
通过这样的封装,我们可以避免重复编写JdbcTemplate的代码,并且让代码更加易于维护和扩展。