Spring 结合 JDBC

Spring 对数据层的支持

     一致的异常层次

     一致的DAO 抽象类

           jdbcDaoSupport                 -JDBC数据访问对象的基类

           HibernateDaoSupport        -Hibernate数据访问对象的基类

           JdoDaoSupport                  -JDO数据访问对象的基类

           JpaDaoSupport                  -JPA数据访问对象的基类

 

JDBC  问题 :

  1. 重复的步骤繁多
  2. 过多的与业务无关的内容 出现在代码中【侵入式】
  3. JDBC 的 connection 是紧耦合的

 

引入 Spring 后

     1、创建数据源 bean

        <!-- 数据源连接池 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost/kgc">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="ok"></property>
	</bean>

     2、注入数据源

        <bean id="userDao" class="com.kgc.user.dao.UserDaoImpl" >
		<property name="dataSource" ref="dataSource"></property>	
	</bean>

     3、创建 JdbcTemplate

            String sql = "insert into user(uuid,name,age) " +	
                "values('"+um.getUuid()+"','"+um.getName()+"','"+um.getAge()+"') ";
	    JdbcTemplate jt = new JdbcTemplate(dataSource);
	    jt.execute(sql);

     4、执行sql 语句

 

Spring 无侵入式框架

    创建JdbcTemplate

    执行 sql 语句

 

Spring 抽象 框架内容

     Core模块          -核心处理模块

     DataSource      -简化DataSource 访问的工具类

     Object 模块      -封装了查询、更新以及存储过程的形成

     Support 模块    -提供了异常转换和相关的工具类

 

JdbcTemplate 介绍

 JdbcTemplate概念 :是一个帮助我们管理资源的工具

 

 

  1. JdbcTemplate是core 包的核心类
  2. 主要作用是完成资源创建以及释放等工作; Spring 还是做了资源相关的内容,只是这一部分不需要我们们来做了
  3. JdbcTemplate 提供PrepareStatementCallback回调函数供我们调用

 演示:

   执行DML

   执行DQL

 

JdbcDaoSupport

目的: DataSource 和 JdbcTemplate 与业务无关

PrepareStatementCallback : 提供 preparedStatement

                             使用方式与JDBC 完全一致

 

	String sql = "insert into user(uuid,name,age) values(?,?,?) ";
		
		PreparedStatementCallback  pscb = new PreparedStatementCallback() {

			@Override
			public Object doInPreparedStatement(PreparedStatement pstmt)
					throws SQLException, DataAccessException {
				
				pstmt.setString(1, um.getUuid());
				pstmt.setString(2, um.getName());
				pstmt.setInt(3, um.getAge());
//				这一步别忘执行
				pstmt.execute();
				return null;
			}
		};
		
		JdbcTemplate jt = new JdbcTemplate(dataSource);
		
		jt.execute(sql,pscb);

NamedParameterJdbcTemplate

 

  1. 对于JdbcTemplate 进行封装
  2. ?,?,? ->按位置传值    提供了对命名参数的支持

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值