Spring--JdbcTemplate

15 篇文章 0 订阅

1.JdbcTemplate简介

为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架.
作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 
每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低.

2.JdbcTemplate类的常用操作

  1. update();该方法为重载方法,用来执行单个非查询语句;
  2. query();该方法也是重载方法,根据参数的不同,执行不同的查询语句;
  3. batchUpdate();批量更新(非查询语句sql)
  4. queryForObject();执行单个查询

3.使用JdbcTemplate的步骤

  • 由Spring创建数据源(DataSource)即数据库连接池;
    <!-- 配置dataSource(数据库连接池c3p0) -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/具体数据库"></property>
        <property name="user" value="用户名"></property>
        <property name="password" value="密码"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    </bean>
  • 由Spring创建JdbcTemplate;
    <!-- jdbc模版 -->
    <bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
  • 自定义DAO,使用@Autowired注解自动注入JdbcTemplate
    @Autowired
    JdbcTemplate jdbc;

4.Spring的事务

  1. 编程式事务:需要手动编写事务相关的代码(复杂)
  2. 声明式事务:使用@Transactional注解控制事务(简单)

5.创建声明式事务的步骤

1: 创建事务管理器

    <!-- 创建事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

2: 定义@Transactional注解驱动(需要加入Spring的tx命名空间)

    <!-- 配置事务Annotation驱动 -->
    <tx:annotation-driven/>

3: 给service方法加入注解,控制事务

    @Transactional
    public void buy(int isbn,int id,Integer num) throws Exception{

        //获取图书价格
        int price=bookDao.getPriceByIsbn(isbn);
        //修改库存
        bookDao.updateBookStock(num,isbn);
        //修改余额
        aDao.updateAccountBalance(price*num, id);

        //先执行操作,再进行判断可以防止幻读
        int stock=bookDao.getStockByIsbn(isbn);
        if(stock<0){
            throw new Exception("----------库存不足-----------");
        }
        int balance=aDao.getAccount(id);
        if(balance<0){
            throw new Exception("----------余额不足-----------");
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值