spring第三天 jdbcTemplate和spring管理事务

1. 基于aspectj的注解aop(会用)

  • 在bean.xml创建对象
    在这里插入图片描述
  • 在bean.xml中开启aop操作
    在这里插入图片描述
  • 在增强类的上面使用aop注解:@Aspect
  • 在增强方法的上面配置增强类型:@Before(value=“切入点”)等
    –例如:
    在这里插入图片描述
    在这里插入图片描述

2.Spring的jdbcTemplate操作

2.1 spring框架一站式框架

用途:spring针对javaee三层,每一层都有解决技术。对于在dao层,使用 jdbcTemplate类。
实现:spring对不同的持久化层技术都进行封装
在这里插入图片描述

2.2 jdbcTemplate

其实是对jdbc进行封装, jdbcTemplate使用和dbutils使用很相似,都数据库进行crud操作。

(0)导包:导入jdbcTemplate使用的jar包,还有数据库驱动包
在这里插入图片描述
实际上下面的增删查改的对象创建都可以通过配置文件是实现。
(1)增
创建数据源对象,设置数据库信息
创建jdbcTemplate对象,设置数据源
调用jdbcTemplate对象里面的update(sql,args..)方法实现操作
增加,删除,修改都是用update方法
在这里插入图片描述
在这里插入图片描述
(2)删
在这里插入图片描述
(3)改
在这里插入图片描述
(4)查:
包括下面三种情况,其中后面两种情况需要自己自己写类实现RowMapper接口用于数据封装

  • 第一种 查询返回某一个值在这里插入图片描述
    在这里插入图片描述
  • 第二种 查询返回对象在这里插入图片描述
    在这里插入图片描述
  • 第三种 查询返回list集合在这里插入图片描述在这里插入图片描述

实现类MyRowMapper :
用于从结果集获取数据

class MyRowMapper implements RowMapper<User> {

	@Override
	public User mapRow(ResultSet rs, int num) throws SQLException {
		// 1 从结果集里面把数据得到
		String username = rs.getString("username");
		String password = rs.getString("password");
		
		// 2 把得到数据封装到对象里面
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		
		return user;
	}
	
}

附:jdbc实现代码:

	//2 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", "root");
			//编写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);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				rs.close();
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

2.3 Spring配置连接池

(1)导入jar包:
在这里插入图片描述
(2)创建spring配置文件,配置连接池
原理:
在这里插入图片描述
配置实现:
在这里插入图片描述

2.4 dao使用jdbcTemplate

功能:在数据库中插入数据
思路:基于xml配置所有对象,包括dataSource对象(配置数据库连接参数)、jdbcTemplate对象(用于和数据库交互,需要dataSource)、dao对象(提供具体操作,需要jdbcTemplate)、service对象(调用dao对象的操作,需要dao)
步骤
配置c3p0连接池dataSource
配置jdbcTemplate对象,把dataSource注入到jdbcTemplate里面
配置dao对象,把jdbcTemplate注入到dao里面
配置service对象,把dao对象注入到service里面

<!-- 配置c3p0连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 注入属性值 -->
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql:///spring_day03"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	
	<!-- 创建jdbcTemplate对象 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<!-- 把dataSource传递到模板对象里面 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 创建service和dao对象,在service注入dao对象 -->
	<bean id="userService" class="cn.itcast.c3p0.UserService">
		<!-- 注入dao对象 -->
		<property name="userDao" ref="userDao"></property>
	</bean>
	
	<bean id="userDao" class="cn.itcast.c3p0.UserDao">
		<!-- 注入jdbcTemplate对象 -->
		<property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>

3. Spring的事务管理

(1)声明式事务管理(XML)
配置文件方式使用aop思想配置

  • 配置数据库事务管理器:需要数据库参数
  • 配置事务增强:指定切入点方法的匹配规则
  • 配置切面:指定增强用于哪个切入点
    在这里插入图片描述

(2)声明式事务管理(注解)

  • 配置数据库事务管理器:需要数据库参数
  • 开启事务注解:指定事务管理器
  • 事务方法所在的类上方添加注解@Transaction
    在这里插入图片描述
    在这里插入图片描述
发布了135 篇原创文章 · 获赞 5 · 访问量 7084

猜你喜欢

转载自blog.csdn.net/qq_27921205/article/details/104573947
今日推荐