spring之JdbcTemplate

本文介绍了Spring的JdbcTemplate组件,它是对JDBC的封装,简化了数据库操作。通过引入Druid数据源配置,展示了添加、删除、修改和查询的方法。还探讨了JdbcTemplate的批量操作,并详细解释了Spring中的声明式事务管理,包括事务的传播行为、隔离级别、超时时间、只读属性等。最后,提到了事务回滚和不回滚的异常配置。
摘要由CSDN通过智能技术生成

JdbcTemplate(概念和准备)

1、什么是 JdbcTemplate
(1)Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操做

2 准备工作
1 引入依赖
在这里插入图片描述
2 配置 spring 配置数据库连接吃(德鲁伊的连接到JdbcTemplate)

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="root"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/book?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=GMT"></property>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="password" value="123456"></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

3 创建srvice dao类 和 数据库信息类

@Service
public class UserService {

    @Autowired
    private UserDaoImpl userDao;
    public void addUser(User user){
        userDao.add(user);
    }
}
@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;


    @Override
    public void add(User user) {
        String sql = "INSERT INTO book VALUES(?,?,?,?)";
        Object[] a = {user.getId(),user.getUsername(),user.getPassword(),user.getEmail()};
        jdbcTemplate.update(sql,a);
    }
}
package com.lize.Util;

/**
 * @author shkstart
 * @create 2022-08-23 17:24
 */
public class User {
    private int id;
    private String username;
    private String password;
    private String email;

    public User(int id, String username, String password, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.email = email;
    }

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}


JdbcTemplate实现增删改查批量方法

1 增 删 改 都是使用 Jbcdtemplate中update方法

	//增加
 String sql = "INSERT INTO book VALUES(?,?,?,?)";
 //修改
 String sql = "update book set username= ? , password = ? where id = ?"
String sql  ="delete from t_book where user_id=?"
        Object[] a = {user.getId(),user.getUsername(),user.getPassword(),user.getEmail()};
        jdbcTemplate.update(sql,a);

2 查询使用queryObject方法

1 返回某个值

1、查询表里面有多少条记录,返回是某个值
2、使用 JdbcTemplate 实现查询返回某个值代码
在这里插入图片描述
⚫ 有两个参数
⚫ 第一个参数:sql 语句
⚫ 第二个参数:返回类型 Class

    String sql = "select count(*) from book";
//        Object[] a = {user.getId(),user.getUsername(),user.getPassword(),user.getEmail()};
        Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(integer);

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

1、场景:查询图书详情
2、JdbcTemplate 实现查询返回对象
在这里插入图片描述
⚫ 有三个参数
⚫ 第一个参数:sql 语句
⚫ 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成
数据封装
⚫ 第三个参数:sql 语句值

4、JdbcTemplate 实现批量删除操作

//调用方法实现批量删除
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
事务操作

1、事务添加到 JavaEE 三层结构里面 Service 层(业务逻辑层)
2、在 Spring 进行事务管理操作
(1)有两种方式:编程式事务管理和声明式事务管理(使用)
3、声明式事务管理
(1)基于注解方式(使用)
(2)基于 xml 配置文件方式
4、在 Spring 进行声明式事务管理,底层使用 AOP 原理

在这里插入图片描述
在这里插入图片描述
3、在 service 类上面(或者 service 类里面方法上面)添加事务注解
(1)@Transactional,这个注解添加到类上面,也可以添加方法上面
(2)如果把这个注解添加类上面,这个类里面所有的方法都添
(3)如果把这个注解添加方法上面,为这个方法添加事务

4 十五操作

在这里插入图片描述

1 peopagation:事务传播行为

(1)当一个事务方法被另外一个事务方法调用时候,这个事务方法如何进行
在这里插入图片描述

在这里插入图片描述

3、ioslation:事务隔离级别

(1)事务有特性成为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生很多问题
(2)有三个读问题:脏读、不可重复读、虚(幻)

在这里插入图片描述

4、timeout:超时时间

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

5、readOnly:是否只读

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

6、rollbackFor:回滚

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

7、noRollbackFor:不回滚

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值