spring学习笔记p33-p49

JdbcTemplate(概念和准备)

1.什么是Jdbc

(1)spring框架对JDBC进行封装,使用JdbcTemplate方便实现

2.准备工作

(1)引入相关jar包
(2)在spring配置文件配置数据库连接池

<!--配置连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <!-- 获取properties文件内容,根据key获取,使用spring表达式获取 -->
        <property name="driverClassName" value="${prop.driverClass}"></property>
        <property name="url" value="${prop.url}"></property>
        <property name="username" value="${prop.username}"></property>
        <property name="password" value="${prop.password}"></property>
    </bean>

(3)配置JdbcTemplate对象,注入DataSource

<!-- JdbcTemplate对象 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入dataSource-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

(4)创建service类,创建dao类,在dao注入jdbcTemplate对象

JdbcTemplate 操作数据库(添加)

1.对应数据库创建实体类

2.编写service和dao

(1)在dao进行数据库添加操作
(2)调用JdbcTemplate对象里面update方法实现添加操作

update(String sql,Object....args)
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:可变参数,设置sql语句值

JdbcTemplate 操作数据库(修改和删除)

//修改
    @Override
    public void updateBook(Book book) {
        String sql = "UPDATE t_book SET username=?,ustatus=? WHERE user_id=?";
        int i = jdbcTemplate.update(sql, book.getUsername(), book.getUstatus(), book.getUserId());
        System.out.println(i);
    }
//删除
    @Override
    public void delete(int id) {
        String sql = "DELETE FROM t_book WHERE user_id=?";
        int i = jdbcTemplate.update(sql, id);
        System.out.println(i);
    }

JdbcTemplate 操作数据库(查询返回某个值)

1.查询表里面有多少条记录,返回是某个值

2.使用JdbcTemplate实现查询返回某个值代码

//查询
    @Override
    public int selectCount() {
        String sql = "SELECT COUNT(*) FROM t_book";
        Integer i = jdbcTemplate.queryForObject(sql, Integer.class);
        return i;
    }

```java
queryForObject(String sql, Class<T> requiredType)
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:返回类型Class

JdbcTemplate 操作数据库(查询返回对象)

1.场景:查询图书详情

2.JdbcTemplate实现查询返回对象

queryForObject(String sql, RowMapper<T> rowMapper, Object... args)
  • 有三个参数
  • 第一个参数:sql语句
  • 第二个参数:RowMapper,是一个接口,返回不同类型的数据,使用这个接口里面实现类完成数据封装
  • 第三个参数:sql语句值

JdbcTemplate 操作数据库(查询返回集合)

1.场景:查询图书列表分页

2.调用JdbcTemplate实现查询返回对象

JdbcTemplate 操作数据库(批量操作)

1.批量操作:操作表里面多条记录

2.JdbcTemplate实现批量添加操作

batchUpdate(String sql,List<Object[] batchArgs>)
  • 有两个参数
  • 第一个参数:sql语句
  • 第二个参数:List集合,添加多条记录数据

3.JdbcTemplate实现批量修改操作

//批量修改
    @Override
    public void batchUpdate(List<Object[]> batchArgs) {
        String sql = "UPDATE t_book SET username=?,ustatus=? WHERE user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(ints.length);
    }

事务概念

1.什么是事务

(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败。
(2)典型场景:银行转账

2.事务四个特性(ACID)

(1)原子性
(2)一致性
(3)隔离性
(4)持久性

事务操作(spring事务管理介绍)

1.事务添加到JavaEE三层结构里面Service层(业务逻辑层)

2.在spring进行事务管理操作

(1)有两种方式:编程式事务管理和声明式事务管理(使用)

3.声明式事务管理

(1)基于注解方式(使用)
(2)基于xml配置文件方式

4.在spring进行声明式事务管理,底层使用AOP原理

5.spring事务管理API

(1)提供一个接口,代表事务管理器,,这个接口针对不同的框架提供不同的实现类

事务操作(注解声明式事务管理)

1.在spring配置文件配置事务管理器

 <!-- 创建事物管理器  -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入 数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

2.在spring配置文件,开启事务注解

(1)在spring配置文件引入名称空间tx

xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

(2)开启事务注解

 <!-- 开启 事物 注解  -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

3.在service类上面(获取service类里面方法上面)添加事务注解

(1)@Transactional,这个注解添加到类上面,也可以添加方法上面
(2)如果把这个注解添加类上面,这个类里面所有方法都添加事务
(3)如果把这个注解添加方法上面,为这个方法添加事务

事务操作(声明式事务管理参数配置)

1.在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数

2.Propagation:事务传播行为

事务方法:对数据库表数据进行变化的操作(增删改)
(1)多事务方法直接进行调用,这个过程中事务是如何进行管理的

3.isolation:事务隔离级别

(1)事务有特性成为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题。
(2)有三个读问题:脏读、不可重复读、虚(幻)读
(3)脏读:一个未提交事务读取到了另一个未提交事务的数据
(4)不可重复读:一个未提交事务读取到另一提交事务修改的数据
(5)虚(幻)读:一个未提交事务读取到另一提交事务添加的数据
(6)通过设置事务隔离性,解决读问题

4.timeout:超时时间

(1)事务需要在一定时间内进行提交,如果不提交进行回滚
(2)默认值是-1,设置时间以秒单位进行计算

5.readOnly:是否只读

(1)读:查询操作,写:添加修改删除操作
(2)readOnly默认值false,表示可以查询,可以添加修改删除操作
(3)设置readOnly值是true,设置成true之后,只能查询

6.rollbackFor:回滚

(1)设置出现哪些异常进行事务回滚

7.noRollbackFor:不回滚

(1)设置出现哪些异常不进行事务回滚

事务操作(xml声明式事务管理)

1.在spring配置文件中进行配置

第一步 配置事务管理器
第二步 配置通知
第三步 配置切入点和切面

事务操作(完全注解)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值