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框架知识点(三)_第1张图片

Spring的jdbcTemplate操作

1.Spring框架是一站式轻量级框架
(1)针对Java三层,每一层都有解决技术方法
(2)在dao层,使用jdbcTemplate
2.Spring对各种支持的持久化技术都做了不同的封装,如下图:
Spring框架知识点(三)_第2张图片
(1)jdbcTemplate对jdbc进行封装
3. jdbcTemplate使用和dbutils(更方便)使用很相似,都是对数据库进行crud操作
增加
1.导入jdbcTemplate使用的jar(同时不能忘了导入数据库驱动的jar包)
在这里插入图片描述在这里插入图片描述
2.创建对象,设置数据库信息
3.创建jdbcTemplate对象,设置数据源
4.调用jdbcTemplate对象里面的方法实现操作(增、删、修都调用update()方法)
Spring框架知识点(三)_第3张图片
修改
Spring框架知识点(三)_第4张图片
删除
Spring框架知识点(三)_第5张图片
查询
基于dbutils操作的查询方式:
Spring框架知识点(三)_第6张图片
1.使用jdbcTemplate模板实现查询操作
Spring框架知识点(三)_第7张图片
第一个:查询返回某一个值
调用方法:
Spring框架知识点(三)_第8张图片
(1)第一个参数是sql语句
(2)第二个参数是 返回类型的class
Spring框架知识点(三)_第9张图片
Spring框架知识点(三)_第10张图片
总共四条记录
第二个:查询返回对象
原始的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框架知识点(三)_第11张图片
Spring框架的jdbcTemplate模板实现查询某个返回对象时,需要自己封装的部分数据:
Spring框架知识点(三)_第12张图片
第三个:查询返回集合
调用方法:
在这里插入图片描述
(1)第一个参数是sql语句
(2)第二个参数是可变参数
(3)第三个参数是RowMapper接口,自己写类实现数据封装
Spring框架知识点(三)_第13张图片

Spring配置连接池和dao使用jdbcTemplate

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


在这里插入图片描述
(3)在jdbcTemplate对象里注入dataSource
Spring框架知识点(三)_第18张图片


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


	
        
        
        
        
    

Spring的事务管理

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

搭建转账环境实例

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


Spring框架知识点(三)_第23张图片
3.产生问题:
(1)如果小王少了1000之后,出现异常,小马不会多1000,钱丢失了
4.解决:
(1)添加事务解决,出现异常进行回滚操作(用配置文件或注解方式解决)
Spring框架知识点(三)_第24张图片
声明式事务管理(xml配置)
第一步 配置事务管理器


    
        
        
    

第二步 配置事务增强

    
    
      
      
      
        
      
    

第三步 配置切面

	
	
		
		
		
		
	

声明式事务管理(注解)

第一步 配置事务管理




  

第二步 配置事务注解


	

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

你可能感兴趣的:(java框架)