Spring:JDBCTemplate&事务

JDBCTemplate

什么是JDBCTemplate?

Spring框架对JDBC进行了封装,使用JDBCTemplate可以很方便地实现对数据库的增删改查操作。

查漏补缺——Druid数据连接池

//创建Properties对象
Properties properties = new Properties();
//通过类的加载器获取系统加载器然后以流的方式获取资源文件
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
//使用Properties对象调用load方法,读取资源流
properties.load(is);
//使用Druid资源工厂创建数据源
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
System.out.println(dataSource);
//通过数据源获取连接
Connection connection = dataSource.getConnection();
  • JDBCTemplate准备步骤

    1. 创建并配置数据库连接池(Druid)

    2. 配置JdbcTemplate对象,注入DataSource

      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
                destroy-method="close">
          <property name="url" value="jdbc:mysql://localhost:3307/boerk" />
          <property name="username" value="root" />
          <property name="password" value="root123" />
          <property name="driverClassName" value="com.mysql.jdbc.Driver" />
      </bean>
      <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
          <property name="dataSource" ref="dataSource"></property>
      </bean>
      
    3. 创建service类,创建dao类,在dao类中注入JdbcTemplate

      @Repository()
      public class BookDaoImpl implements BookDao{
          @Autowired
          private JdbcTemplate jdbcTemplate;
          @Override
          public void add(User user) {
              String sql="insert into user values(?,?,?,?)";
              int update = jdbcTemplate.update(sql, user.getUid(), user.getUname(), user.getUpassword(), user.getMoney());
              System.out.println(update);
          }
      }
      @Service
      public class BookService {
          @Autowired()
          private BookDao bookDao;
          public void add(User user){
              userDao.add(user);
          }
      }
      
    4. 在Dao(持久层)里添加方法。

    5. 使用JdbcTemplate调用对应的方法(update等)


查询时,使用RowMapper接口的实现类BeanPropertyRowMapper

jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);

事务

什么是事务?

事务是数据库操作最基本单元,逻辑上,一组操作要么都成功,如果有一个失败就都失败。

  • 事务的四大特性(ACID):原子性、一致性、隔离性、持久性。
    • 原子性:不可分割的,要么都成功,要么都失败。
    • 一致性:总量不会减少(A给B转了100块钱,A-100,B+100)
    • 隔离性:多事务时,各个事务之间不会产生影响。
    • 持久性:事务提交后,数据永久的保存。

在银行转账业务中,首先是用户A扣除一定金额,然后再给用户B增加一定金额。这就是一个事务,他们不可分割,总量不会减少,其他的事务不会影响这个事务,一旦提交了,数据就永久保存。

posted @ 2022-01-18 23:08  Boerk  阅读(223)  评论(0)    收藏  举报