【SSM - Spring篇06】Spring数据库编程 - JdbcTemplate(Spring jdbc模板)

Spring的数据库编程

  Spring框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以简化许多代码,但在实际应用中jdbcTemplate并不常用。工作更多的时候,用的是Hibernate框架和MyBatis框架进行数据库编程

Spring JDBC的配置(jdbcTemplate)

  Spring数据库编程主要使用Spring JDBC模块的core和dataSource包。core包是JDBC的核心功能包,包括常用的JdbcTemplate类;dataSource包是访问数据源的工具类包。使用Spring JDBC操作数据库,需要对其进行配置。
  配置JDBC模板时,需要将dataSource注入到jdbcTemplate,在数据访问层(Dao类)需要使用jdbcTemplate时,也需要将jdbcTemplate注入到对应的Bean中。

案例实现

  1. pom.xml导入jdbc依赖
<!-- jdbc连接 -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
  1. 在applicationContext.xml中配置数据源和jdbc模板(配置JDBC模板时,需要将dataSource注入到jdbcTemplate)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--扫描包-->
    <context:component-scan base-package="com.xgf.transaction.springjdbc"/>

    <!-- 配置数据源数据库连接 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;characterEncoding=utf-8"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    </bean>

    <!-- 将dataSource注入到jdbcTemplate 封装数据库操作方法,简化数据库操作  -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

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

    <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="transactionManager"/>
    </bean>

</beans>
  1. 创建UserDao数据库访问层的模板
    在数据访问层(Dao类)需要使用jdbcTemplate时,所以在配置applicationContext.xml时需要将jdbcTemplate注入到对应的Bean中 。
@Repository
public class UserDaoTemplete {
    
    
    /*注入 JdbcTemplate*/
    @Autowired
    private JdbcTemplate jdbcTemplate;
    // 注入事务管理
    @Autowired
    private TransactionTemplate transactionTemplate;

    public void save(){
    
    
        transactionTemplate.execute(new TransactionCallback(){
    
    
            /*业务逻辑*/
            @Override
            public Object doInTransaction(TransactionStatus transactionStatus) {
    
    
                String sql = "insert into user(id,username,password,age) values(?,?,?,?)";
                Object[] params = new Object[]{
    
    null,"springjdbc - study day","123456",20};
                jdbcTemplate.update(sql,params);
                //出现异常,事务会回滚,不会写入数据库中
                //int i = 100/0;
                System.out.println("save() - 用户数据保存成功");
                return null;
            }
        });
    }
}

  1. 编写测试类
public class SpringJDBCTest {
    
    

    public static void main(String[] args) {
    
    

        ApplicationContext context =
                new ClassPathXmlApplicationContext("com/xgf/transaction/springjdbc/applicationContext.xml");
        UserDaoTemplete userDao = (UserDaoTemplete)context.getBean("userDaoTemplete");
        userDao.save();
    }
}

  1. 运行结果
    在这里插入图片描述
    在这里插入图片描述
  2. 测试出现异常,事务是否回滚(i = 100/0)
      先更新数据,再出现异常
    在这里插入图片描述

  查看数据库的更新情况,发现数据没有更新,事务回滚,删除错误添加。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40542534/article/details/108690462