Spring框架知识点(三)

目录:
1.基于aspectj的注解aop操作(会用)
2.Spring的jdbcTemplate(模板)操作
(1)实现crud操作
3.Spring配置连接池
(1)配置c3p0连接池
(2)service和dao注入操作
4.Spring事务管理
(1)事务概念
(2)Spring进行事务管理api
(3)Spring进行事务配置(声明式)
— 基于xml配置文件
— 基于注解方式

基于aspectj的注解aop操作(会用)

1.使用注解方式实现aop操作
第一步 创建对象
在这里插入图片描述
第二步 在spring核心配置文件中,开启aop操作
在这里插入图片描述
第三步 在增强类上面使用注解完成aop操作

package cn.itcast.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect // 表示增强
public class MyBook {

	// 在方法上面使用注解完成增强配置
	@Before(value = "execution(* cn.itcast.aop.Book.*(..))") // 前置增强
	public void before1() {
		System.out.println("before...........");
	}
}

执行结果:
在这里插入图片描述

Spring的jdbcTemplate操作

1.Spring框架是一站式轻量级框架
(1)针对Java三层,每一层都有解决技术方法
(2)在dao层,使用jdbcTemplate
2.Spring对各种支持的持久化技术都做了不同的封装,如下图:
在这里插入图片描述
(1)jdbcTemplate对jdbc进行封装
3. jdbcTemplate使用和dbutils(更方便)使用很相似,都是对数据库进行crud操作
增加
1.导入jdbcTemplate使用的jar(同时不能忘了导入数据库驱动的jar包)
在这里插入图片描述在这里插入图片描述
2.创建对象,设置数据库信息
3.创建jdbcTemplate对象,设置数据源
4.调用jdbcTemplate对象里面的方法实现操作(增、删、修都调用update()方法)
在这里插入图片描述
修改
在这里插入图片描述
删除
在这里插入图片描述
查询
基于dbutils操作的查询方式:
在这里插入图片描述
1.使用jdbcTemplate模板实现查询操作
在这里插入图片描述
第一个:查询返回某一个值
调用方法:
在这里插入图片描述
(1)第一个参数是sql语句
(2)第二个参数是 返回类型的class
在这里插入图片描述
在这里插入图片描述
总共四条记录
第二个:查询返回对象
原始的jdbc实现代码

// jdbc实现代码
	@Test
	public void testJDBC() {
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;
		try {
			// 加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 建立连接
			conn = DriverManager.getConnection("jdbc:mysql:///spring_day03", "root", "123456");
			// 编写sql语句
			String sql = "select * from user where username=?";
			// 预编译sql
			psmt = conn.prepareStatement(sql);
			// 设置参数值
			psmt.setString(1, "lucy");
			// 执行sql
			rs = psmt.executeQuery();
			// 遍历结果集
			while (rs.next()) {
				// 得到返回结果值
				String username = rs.getString("username");
				String password = rs.getString("password");
				// 放到user对象里面
				User user = new User();
				user.setUsername(username);
				user.setPassword(password);
				// 输出结果值
				System.out.println(user.getUsername()+"\t"+user.getPassword());
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 关闭资源
			try {
				rs.close();
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

使用jdbcTemplate模板实现以上需求操作,调用的方法特点如下:
在这里插入图片描述
第一个参数是sql语句
第二个参数是RowMapper,是接口,类似于dbutils里面的接口
第三个参数是可变参数
在这里插入图片描述
Spring框架的jdbcTemplate模板实现查询某个返回对象时,需要自己封装的部分数据:
在这里插入图片描述
第三个:查询返回集合
调用方法:
在这里插入图片描述
(1)第一个参数是sql语句
(2)第二个参数是可变参数
(3)第三个参数是RowMapper接口,自己写类实现数据封装
在这里插入图片描述

Spring配置连接池和dao使用jdbcTemplate

1.Spring配置c3p0连接池
第一步 导入jar包
在这里插入图片描述
第二步 创建spring配置文件,配置连接池
在这里插入图片描述
(1)把代码在配置文件中配置
在这里插入图片描述
2.dao使用jdbcTemplate
(1)创建了service 和dao,配置service和dao对象,在service注入dao对象
在这里插入图片描述
(2)创建jdbcTemplate对象,把模板对象注入到dao里面
在这里插入图片描述


在这里插入图片描述
(3)在jdbcTemplate对象里注入dataSource
在这里插入图片描述


在这里插入图片描述
问题:测试的时候连接不上数据库,还各种报错,看似没有问题,却隐藏大量错误信息,最后更换了四个jar包,配置做了点更改就好了,还有注意点(千万不要有种字符,特别是中文空格):
在这里插入图片描述

<!--配置c3p0连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_day03"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
    </bean>

Spring的事务管理

Spring事务管理api
1.Spring事务管理两种方式
第一种 编程式事务管理(一般不用)
第二种 声明式事务管理(重点)
(1)基于xml配置文件实现
(2)基于注解实现(常用)
2.Spring事务管理的api
(1)接口—》PlatformTransactionManager(事务管理器)
(2)Spring针对不同的dao层框架,提供接口不同的实现类
在这里插入图片描述
(3)首先配置事务管理器

搭建转账环境实例

1.创建数据库表,添加数据
在这里插入图片描述
2.创建service 和dao类,完成注入关系
在这里插入图片描述
(1)service层也叫业务逻辑层
(2)dao层,单纯对数据库操作层,在dao层不添加业务
(3)需求:小王转账1000给小马(小王少1000,小马多1000。共同构成事务)
在这里插入图片描述


在这里插入图片描述
3.产生问题:
(1)如果小王少了1000之后,出现异常,小马不会多1000,钱丢失了
4.解决:
(1)添加事务解决,出现异常进行回滚操作(用配置文件或注解方式解决)
在这里插入图片描述
声明式事务管理(xml配置)
第一步 配置事务管理器

<!-- 第一步 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入dataSource -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

第二步 配置事务增强

    <!-- 第二步 配置事务增强 -->
    <tx:advice id="txadvice" transaction-manager="transactionManager">
      <!-- 做事务操作 -->
      <tx:attributes>
      <!-- 设置进行事务操作的方法匹配规则 -->
        <tx:method name="account*"/>
      </tx:attributes>
    </tx:advice>

第三步 配置切面

	<!-- 配置切面 -->
	<aop:config>
		<!-- 切入点 -->
		<aop:pointcut expression="execution(* com.kgc.service.OrderService.*(..))"
			id="pointcut1" />
		<!-- 切面 -->
		<aop:advisor advice-ref="txadvicez" pointcut-ref="pointcut1" />
	</aop:config>

声明式事务管理(注解)

第一步 配置事务管理

<!-- 第一步 配置事务管理 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
  </bean>

第二步 配置事务注解

<!-- 第二步 配置事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

第三步 在要使用事务的方法所在类上面添加注解
在这里插入图片描述
到此,spring框架的基本学习 就结束了,还有相关的知识,在后期学习中做补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值