博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringData JDBC
阅读量:7128 次
发布时间:2019-06-28

本文共 2803 字,大约阅读时间需要 9 分钟。

Spring的JDBC模板

Spring中提供了一个可以操作数据库的对象,这个对象封装了jdbc技术.这个对象就是JdbcTemplate,它与DBuitls中的QueryRunner很相似.

步骤:

1. 导包

基本4个组件包+2个日志包+c3p0连接池包+数据库驱动包+spring jdbc +spring tx 事务包

2. JDBC模板
public void fun() throws Exception {		ComboPooledDataSource dataSource = new ComboPooledDataSource();		dataSource.setDriverClass("com.mysql.jdbc.Driver");		dataSource.setJdbcUrl("jdbc:mysql:///test");		dataSource.setUser("root");		dataSource.setPassword("root");		JdbcTemplate jt = new JdbcTemplate(dataSource);		String sql = "insert into t_user values(null,'tom')";		jt.update(sql);	}复制代码
3. JdbcTemplate的API
  • 增删改
@Override	public void save(User u) {		String sql = "insert into t_user value(null,?)";		super.getJdbcTemplate().update(sql, u.getName());	}	@Override	public void delete(Integer id) {		String sql = "delete from t_user where id = ?";		super.getJdbcTemplate().update(sql, id);	}	@Override	public void update(User u) {		String sql = "update t_user set name=? where id =?";		super.getJdbcTemplate().update(sql, u.getName(), u.getId());	}复制代码
查询
  • 查询的返回值是一个对象
@Override	public User find(Integer id) {		String sql = "select * from t_user where id =?";		User us = super.getJdbcTemplate().queryForObject(sql, new RowMapper
() { @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); return user; } }, id); return us; }复制代码
  • 查询的返回值是一个整数(聚合函数)
@Override	public int findAllRecord() {		String sql = "select count(*) from t_user";		Integer record = super.getJdbcTemplate().queryForObject(sql, Integer.class);		return record;	}复制代码
  • 查询的返回值是一个集合
@Override	public List
findAll() { String sql = "select * from t_user"; List
list = super.getJdbcTemplate().query(sql, new RowMapper
() { @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { User u = new User(); u.setId(rs.getInt("id")); u.setName(rs.getString("name")); return u; } }); return list; }复制代码

为了不需要手动准备JDBC模板,我们可以继承一个类,从这个类中的方法中获得即可-JdbcDaoSupport

注意:当我们继承这个类的时候,我们直接调用父类的super.getJdbcTemplate()这个方法,即可获得JdbcTemplate.而配置文件中的依赖也不需要注入JdbcTemplate.我们直接在所要执行方法的对象依赖注入dataSource数据源即可.

public class UserDaoImpl extends JdbcDaoSupport implements UserDao {	@Override	public void save(User u) {		String sql = "insert into t_user value(null,?)";		super.getJdbcTemplate().update(sql, u.getName());	}			 
复制代码

在实际开发中,因为数据库连接的配置信息可能会经常改动.所以我们使用properties配置文件

jdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql:///testjdbc.user=rootjdbc.password=root复制代码
复制代码

注意:properties文件中的配置信息,要加上前缀.因为我们的配置信息有可能与spring中的冲突.会导致读取不到我们的配置信息

转载于:https://juejin.im/post/5b7546b26fb9a0099407051e

你可能感兴趣的文章
词法分析
查看>>
Linux命令(二)
查看>>
Web登录验证之 Shiro
查看>>
LeeCode-Sort Colors
查看>>
Snort2.9.2.3 Installation on CentOS 6.2
查看>>
我的友情链接
查看>>
给软件工程师的自学建议
查看>>
Linux下SVN的备份方式
查看>>
hadoop 3.0.0 alpha1 分布式搭建
查看>>
刘宇凡:从吃饭中的道理领悟SEO
查看>>
1.1办公软件概述
查看>>
python中http的一些编码转换
查看>>
5.继续看W3C的 bootstrap
查看>>
PHP中include和require
查看>>
第一次标题
查看>>
H3C ospf router id 重复真的不能建立邻居吗?
查看>>
【symfoware OPEN】数据库基本操作
查看>>
iphone:截屏
查看>>
Mac 下 VirtualBox ubuntu 共享空间
查看>>
CENTOS6.3利用Keepalived构建双主MySQL+双机热备
查看>>