SpringData JDBC

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<User>() {

			@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<User> findAll() {

		String sql = "select * from t_user";

		List<User> list = super.getJdbcTemplate().query(sql, new RowMapper<User>() {

			@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());
	}
	
	
	 <bean name="UserDao" class="madness.dao.UserDaoImpl">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
复制代码
在实际开发中,因为数据库连接的配置信息可能会经常改动.所以我们使用properties配置文件
 jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///test
jdbc.user=root
jdbc.password=root
复制代码
 <bean name="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
复制代码

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值