🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页
目录
Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具。我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码
🌟 一、整合POM.XML文件
不仅要加入jdbc依赖,还要加入数据库驱动依赖(这里加入mysql)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
🌟 二、测试实体类
public class User {
private Integer id;
private String username;
private String password;
GET和SET方法省略...
}
🌟 三、测试业务类
🌟🌟 3.1、注册JdbcTemplate
@Autowired
JdbcTemplate jdbcTemplate;
🌟🌟 3.2、增加方法(两种不同用法)
public int adduser(User user){
int i = jdbcTemplate.update("insert into user (username,password)values (?,?)", user.getUsername(), user.getPassword());
return i;
}
下方的方法通过GeneratedKeyHolder可以拿到在插入数据库数据之后,数据库分配给此项数据的ID,并返回给后台
public int adduser2(User user){
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
int update = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement("insert into user (username,password)values (?,?)", Statement.RETURN_GENERATED_KEYS);
ps.setObject(1, user.getUsername());
ps.setObject(2, user.getPassword());
return ps;
}
}, keyHolder);
user.setId(keyHolder.getKey().intValue());
return update;
}
🌟🌟 3.3、删除方法
public int deletebyid(int id){
int update = jdbcTemplate.update("delete from user where id=?", id);
return update;
}
🌟🌟 3.4、修改方法
public int updatebyid(int id,String username){
int update = jdbcTemplate.update("update user set username=? where id=?", username,id );
return update;
}
🌟🌟 3.5、查询方法(两种实用方法)
方法比较繁琐,但是灵活性较高,对属性的命名没有较高的要求
public List<User> getAll(){
List<User> list = jdbcTemplate.query("select * from user", new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
String id = rs.getString("id");
String username = rs.getString("username");
String password = rs.getString("password");
user.setUsername(username);
user.setId(Integer.valueOf(id));
user.setPassword(password);
return user;
}
});
return list;
}
方法简单,便捷高效,但是对数据库表列名和实体类的属性名字有较高的要求,需要两者名字必须一致
public List<User> getAll(){
List<User> list = jdbcTemplate.query("select * from user", new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
String id = rs.getString("id");
String username = rs.getString("username");
String password = rs.getString("password");
user.setUsername(username);
user.setId(Integer.valueOf(id));
user.setPassword(password);
return user;
}
});
return list;
}
🌟 四、总结
在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate或者Spring Data JPA,我们这里讲解JdbcTemplate的整合,只是告诉大家有这么一种操作数据库的方式