Spring JDBC的使用方法详解
作者:幸福的小耗子 时间:2021-12-08 14:05:42
1、为什么使用Spring提供的JDBC的封装?
因为Spring提供了完整的模板类以及基类可以简化开发,我们只需写少量的代码即可。
2、实例讲解
第一步:导入依赖mysql-connector spring-jdbc spring-tx spring-core spring-beans spring-context 等等
第二步:数据库的建立,配置xml
第三步:获取jdbcTemplate对象
可以这样获得
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource){
this.jdbcTemplate=new JdbcTemplate(dataSource);
}
<bean id="userDao" class="com.test.jdbc.dao.impl.UserDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
也可以继承JdbcDaoSupport,使用super.getJdbcTemplate()获得
第四步:使用jdbcTemplate对象进行增删改查
增删改使用update(),这个方法的参数,第一个为sql语句,之后为可变参数,传入sql语句中的占位符
查询使用queryForObject()方法的第一个参数为sql中需要的参数,第三个参数为实现RowMapper接口的对象,
用于处理结果集,该方法要求返回单一的对象
query()该方法返回对象集合
public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
public void save(User user) {
super.getJdbcTemplate().update("insert into user(id,username,password,date,salary) values(null,?,?,?,?)",
user.getUsername(),user.getPassword(),user.getDate(),user.getSalary());
}
public void update(User user) {
super.getJdbcTemplate().update("update user set username=?,password=?,date=?,salary=? where id=?",
user.getUsername(), user.getPassword(), user.getDate(), user.getSalary(), user.getId());
}
public void delete(Integer id) {
super.getJdbcTemplate().update("delete from user where id=?",id);
}
public User findById(Integer id) {
/* List<User> user = super.getJdbcTemplate().query("select * from user where id=?", new Object[]{id},
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
return user;
}
//方法的返回值会直接封装到集合中
});
return user.size()>0?user.get(0):null;*/
User user = super.getJdbcTemplate().queryForObject("select * from user where id=?", new Object[]{id},
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
return user;
}
});
return user;
}
public List<User> findAll() {
List<User> users = super.getJdbcTemplate().query("select * from user",
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setDate(resultSet.getDate("date"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setSalary(resultSet.getBigDecimal("salary"));
return user;
}
//方法的返回值会直接封装到集合中
});
return users;
}
}
3、JdbcTemplate是JDBC核心包的中心类
知识点查询地址:
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html#jdbc
来源:https://www.cnblogs.com/xfdhh/p/11488317.html
标签:sprin,jdbc,使用
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解JAVA中priorityqueue的具体使用
2022-05-17 22:53:50
![](https://img.aspxhome.com/file/2023/2/68222_0s.png)
Java JDK动态代理(AOP)用法及实现原理详解
2021-11-14 16:45:21
![](https://img.aspxhome.com/file/2023/2/69292_0s.png)
winform 实现选择文件和选择文件夹对话框的简单实例
2022-02-21 07:05:12
Spring boot整合log4j2过程解析
2023-11-29 10:47:53
![](https://img.aspxhome.com/file/2023/7/60107_0s.png)
Java操作IO对象流进行数据的读写
2021-08-25 03:33:49
JAVA JVM面试题总结
2021-07-12 04:55:13
![](https://img.aspxhome.com/file/2023/0/62390_0s.png)
SpringBoot 二维码生成base64并上传OSS的实现示例
2023-05-12 04:41:33
关于MyBatis中SqlSessionFactory和SqlSession简解
2022-02-18 13:57:37
Quartz与Spring集成的两种方法示例
2022-05-22 05:15:41
Java ThreadLocal的使用详解
2023-11-29 04:48:43
File.createTempFile创建临时文件的示例详解
2022-05-03 08:52:41
![](https://img.aspxhome.com/file/2023/8/77448_0s.png)
java实现短信验证码5分钟有效时间
2023-08-30 18:42:26
基于java ssm springboot+mybatis酒庄内部管理系统设计和实现
2023-09-24 23:51:17
![](https://img.aspxhome.com/file/2023/9/58449_0s.jpg)
Spring之spring-context-indexer依赖详解
2023-11-23 12:21:41
![](https://img.aspxhome.com/file/2023/4/59024_0s.jpg)
Android数据存储几种方式讲解
2023-09-25 19:00:35
![](https://img.aspxhome.com/file/2023/7/86747_0s.png)
Spring集成Druid连接池及监控配置的全过程
2023-08-25 05:22:20
![](https://img.aspxhome.com/file/2023/8/63448_0s.png)
springboot 如何设置端口号和添加项目名
2022-01-11 07:31:12
![](https://img.aspxhome.com/file/2023/5/78335_0s.png)
SpringBoot整合OpenApi的实践
2023-08-03 11:59:55
![](https://img.aspxhome.com/file/2023/8/70578_0s.jpg)
Java字典生成算法讲解
2023-11-25 00:17:29
Java接口幂等性设计原理解析
2022-12-22 12:27:01