首页 > 其他分享 >4. 声明式事务

4. 声明式事务

时间:2022-11-11 09:02:01浏览次数:62  
标签:WEB 事务 jdbc web 路径 mysql INF 声明

1. JdbcTemplate

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

1.1 对JdbcTemplate的准备工作

(1) 加入依赖

<dependencies>
        <!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- Spring 持久化层支持jar包 -->
        <!-- Spring 在执行持久化层操作、与持久化层(相当于jdbc的dao层)技术进行整合过程中,需要使用orm、jdbc、tx三个
        jar包 -->
        <!-- 导入 orm 包就可以通过 Maven 的依赖传递性把其他两个也导入 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- Spring 测试相关 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- junit测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- 数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.31</version>
        </dependency>
    </dependencies>

(2) 创建\(jdbc.property\)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=root

  不创建也可以,但是这样在spring配置文件中,这些就是写死的

(3) 配置\(Spring\)的配置文件

    <!-- 导入外部属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!-- 配置数据源 -->
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!-- 配置 JdbcTemplate,交给ioc容器管理 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- 装配数据源 -->
        <property name="dataSource" ref="druidDataSource"/>
    </bean>

  这里的逻辑是要使用\(JdbcTemplate\)需要使用数据源,我们则需要将数据源引入到项目中,故引入了\(druid\)数据池

  • 延伸知识:什么是classpath
      如果是纯\(java\)项目,则没有加前缀\(classpath\)的必要,但如果是\(web\)项目,则需要前缀指定类路径。
      此po主讲得十分详细大佬的讲解,这里加点自己的理解。
      开发时期的\(web\)项目路径如下图,但是在我们把项目打包后,是不存在\(webapp\)的路径的,我们的\(java\)和\(resource\)路径都被放在\(WEB-INF\)路径里
    image

  打包后的\(web\)项目路径,\(java\)和\(resource\)都被(编译)打包到了生产包的\(WEB-INF/classes/\)目录下;而原来\(WEB-INF\)下面的\(views\)和\(web.xml\)则仍然还是在\(WEB-INF\)下面。同时由\(maven\)引入的依赖都被放入到了\(WEB-INF/lib/\)下面。最后,编译后的\(class\)文件和资源文件都放在了\(classes\)目录下。
image
image
  那么classPath是从哪里开始呢?就是指\(WEB-INF/classes/\)这个目录的路径.每当我们使用这个前缀时,只能指定一个文件的路径,如果指定多个文件的路径需要使用\(classpath*\)
image
  最后我们说的\(web\)根路径到底在哪?也就是从\(ssmProject\)开始的路径(当前目录是META-INF和WEB-INF)

标签:WEB,事务,jdbc,web,路径,mysql,INF,声明
From: https://www.cnblogs.com/newblg/p/16876306.html

相关文章

  • C温故补缺(三):存储类声明符(auto,register,extern,static)
    auto,register,extern,static四个存储类声明符,用于定义变量/函数的作用域和声明周期①auto:自动变量,即普通变量,在平时定义变量时会自动赋予其auto类型被auto修饰的......
  • Hibernate简单注解开发和事务处理(四)
    勿以恶小而为之,勿以善小而不为--------------------------刘备劝诸君,多行善事积福报,莫作恶上一章简单介绍了Hibernate实现简单的CRUD操作和常见类(三),如果没有看过,​​请观......
  • 5.OpenFeign:Spring Cloud声明式服务调用组件(非常详细)
    NetflixFeign是Netflix公司发布的一种实现负载均衡和服务调用的开源组件。SpringCloud将其与Netflix中的其他开源服务组件(例如Eureka、Ribbon以及Hystrix等)一......
  • 浅析Spring事务实现原理
    SQL事务实现简介首先我们来了解下,最简单的事务是怎么实现的呢?以JDBC为例,当一个数据库Connection对象创建后,其会默认自动提交事务;每次执行SQL语句时,如果成功,就会向数据库自......
  • 第一百零六篇:变量的不同声明(var,let和const的不同)
    好家伙,JS基础接着学,本篇内容为《JS高级程序设计》第三章学习笔记1.变量 ECMAScript变量是松散类型的,意思是变量可以用于保存任何类型的数据。(确实松散,不像C或C......
  • 分布式事务
    分布式事务本地事务本地事务存在问题1.远程服务假失败:远程服务其实成功了,由于网络故障等没有返回。导致:订单回滚,库存却扣减2.远程服务执行完成,下面的其他方法出现问......
  • SAP 自建事务码
    自建事务码的事务码se93一般来说开发人员会遇到,开发了报表已经一些功能,不会让业务人员通过se38来进行使用,一般会新建一个事务码让业务人员在t-code中的使用配置对应......
  • jmeter事务管理器
    逻辑事务器,将一个操作产生的请求放在一起if控制器,当条件满足时执行if控制器${__groovy("${msg}"=="不允许重复挂号,请检查接诊列表是否有初诊或者复诊!")} ......
  • Java解决单机环境下多数据源的事务问题
    springboot单机环境下的@Transictional可以保证事务,但多数据源的情况就无法使用了,这里简单实现一下多数据源的情况下如何保证事务。一,事务实现方案利用ThreadLocal将事......
  • MySQL_事务_回滚
    Savepoint保存点;设置保存点SETautocommit=0;STARTTRANSACTION;DELETEFROMaccountWHEREid=25;SAVEPOINTa;#设置保存点DELETEFROMaccountWHEREid=28......