怎么做html5网站吗济南seo推广

张小明 2026/3/2 21:43:39
怎么做html5网站吗,济南seo推广,遵义交通建设网站,平面设计素材大全Spring JDBC 与 JdbcTemplateSpring JDBC 是Spring所提供的持久层技术#xff0c;用于简化数据库操作的一个模块#xff0c;以一种更简洁#xff0c;更直接的方式使用 JDBC API 简化了开发人员对数据库的操作。JdbcTemplate 则是 Spring JDBC 模块中最核心的类#xff0c;是…Spring JDBC 与 JdbcTemplateSpring JDBC 是Spring所提供的持久层技术用于简化数据库操作的一个模块以一种更简洁更直接的方式使用 JDBC API 简化了开发人员对数据库的操作。JdbcTemplate 则是 Spring JDBC 模块中最核心的类是该模块的主要实现者是对原始繁琐的 Jdbc API 对象的简单封装提供了增删改查CRUD的便捷实现是开发者使用 Spring JDBC 时最常用的工具归纳起来主要有以下几种类型的方法1execute方法可以用于执行任何SQL语句一般用于执行DDL语句。2update用于执行新增、修改与删除等语句。3query用于执行查询相关的语句。下面我们来具体实现 Spring JDBC实现Spring JDBC数据库内容如下pom.xml 添加相关依赖dependencies !-- 统一Spring版本为5.3.21 -- dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-test/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-aspects/artifactId version5.3.21/version /dependency !-- 其他依赖保持不变 -- dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.12/version scopetest/scope /dependency !-- mysql驱动包 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.6/version /dependency !-- AOP联盟 -- dependency groupIdaopalliance/groupId artifactIdaopalliance/artifactId version1.0/version /dependency !-- aspectj -- dependency groupIdorg.aspectj/groupId artifactIdaspectjweaver/artifactId version1.8.3/version /dependency /dependenciesgroupIdorg.springframework 为Spring 官方组织标识spring-contextSpring 核心容器spring-testSpring 测试支持spring-jdbcSpring JDBC 支持spring-aspectsSpring AOP 切面支持mysql-connector-javaMySQL 数据库的 JDBC 驱动使得 Java 程序能够连接 MySQL 数据库aopallianceAOP 联盟规范提供 AOP 接口定义Maven 会根据这个配置自动下载所需的依赖库并按照指定的配置进行项目构建AlipayDao .javapublic interface AlipayDao { public void transfer(String fromA,String toB,int amount); }AliPayDaoImpl .javapublic class AliPayDaoImpl implements AlipayDao { private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate jdbcTemplate; } Override public void transfer(String fromA, String toB,int amount) { jdbcTemplate.update(update alipay set amountamount-? where aliname?,amount,fromA); jdbcTemplate.update(update alipay set amountamount? where aliname?,amount,toB); } }定义了数据访问层实现类 AliPayDaoImpl主要功能是实现账户间的转账操作 transfer()。JdbcTemplate 是 Spring JDBC 的核心工具类类中定义了 JdbcTemplate 对象并提供了 get/set 方法这是为了通过 Spring 的依赖注入获取 JdbcTemplate 实例。这种通过 setter 方法注入的方式使得 JdbcTemplate 可以由 Spring 容器统一管理无需手动创建。!--配置连接DriverManagerDataSource -- bean iddataSource classorg.springframework.jdbc.datasource.DriverManagerDataSource property namedriverClassName valuecom.mysql.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/mybatis_demo/ property nameusername valueroot/ property namepassword valueroot/ /bean !-- 配置jdbcTemplate -- bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplate property namedataSource refdataSource/ /bean bean idAliPayDaoImpl classcom.qcby.dao.impl.AliPayDaoImpl property namejdbcTemplate refjdbcTemplate/ /bean /beans这段配置和代码的逻辑是Spring容器先创建数据源dataSource指定数据库连接的驱动、地址、用户名和密码再创建JdbcTemplate实例并关联该数据源Spring 通过 ref 把 dataSource 注入给了 jdbcTemplateSpring调用JdbcTemplate类中的setDataSource方法实现依赖注入使其获得数据库连接能力以操作数据库最后创建AliPayDaoImpl实例把 JdbcTemplate 的属性和 setter 方法定义在 AliPayDaoImpl 内部通过调用AliPayDaoImpl类中的setJdbcTemplate方法将前面创建的JdbcTemplate注入进去这样AliPayDaoImpl就可以利用 JdbcTemplate来执行数据库操作当执行transfer方法时就能利用注入的JdbcTemplate执行两条更新SQL完成从一个账户扣款、向另一个账户加款的转账操作整个过程通过Spring的依赖注入实现了各组件的解耦和自动组装。public class AliPayTest { org.junit.Test public void run(){ ApplicationContext context new ClassPathXmlApplicationContext(Spring.xml); AlipayDao alipayDao (AlipayDao) context.getBean(AliPayDaoImpl);//使用多态 alipayDao.transfer(张三,李四,100); } }实现效果如图此时数据库数据变为此时我们将数据库的数据重置为各是100再将AliPayDaoImpl.java改为这样AliPayDaoImpl.java是有报错的我们来看实现效果此时数据库内容变为即执行了转出而未实现转入与实际情形不符合理的解决方式——添加事务添加事务xml配置的形式Spring.xml!-- 定义事务管理器-- bean idtxManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 编写事务通知-- tx:advice idtxAdvice transaction-managertxManager tx:attributes tx:method name* propagationREQUIRED isolationDEFAULT read-onlyfalse/ /tx:attributes /tx:advice !-- 编写AOP让spring自动将事务切入到目标切点-- aop:config !-- 定义切入点-- aop:pointcut idtxPointCut expressionexecution(* com.qcby.dao.impl.AliPayDaoImpl.transfer(..))/ !-- 将事务通知与切入点结合-- aop:advisor advice-reftxAdvice pointcut-reftxPointCut/ /aop:config这段XML配置是Spring框架中实现声明式事务管理的完整配置其核心作用是为com.qcby.dao.impl.AliPayDaoImpl类中的transfer方法自动添加事务控制能力。首先通过标签定义了一个名为txManager的事务管理器其类型为DataSourceTransactionManager专门用于管理JDBC数据源的事务并通过property标签将其与已配置的dataSource数据源关联起来使事务管理器能够操作数据库连接。接着使用定义了名为txAdvice的事务通知该通知关联了前面定义的txManager事务管理器并在中通过设置了事务属性name*表示对匹配的方法都应用该规则propagationREQUIRED指定了事务传播行为为如果当前没有事务则新建一个若已有事务则加入其中isolationDEFAULT表示使用数据库默认的事务隔离级别read-onlyfalse说明这不是只读事务。最后通过进行AOP配置先定义了一个名为txPointCut的切入点其表达式execution(* com.qcby.dao.impl.AliPayDaoImpl.transfer(..))精确匹配AliPayDaoImpl类中的transfer方法再通过将txAdvice事务通知与txPointCut切入点关联起来。这样当transfer方法被调用时Spring会通过AOP自动在方法执行前开启事务若方法正常执行完毕则自动提交事务若出现未捕获的异常则自动回滚事务从而确保转账操作的原子性避免出现数据不一致的情况同时这种配置方式将事务控制逻辑与业务代码分离降低了耦合度提高了代码的可维护性。实现效果注解的形式Spring.xml!-- 定义事务管理器 -- bean idtxManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 开启事务注解驱动 -- tx:annotation-driven transaction-managertxManager/其中transaction-managertxManager 指定了该注解驱动要使用的事务管理器是名为 txManager 的 Bean这样注解式事务就能基于该事务管理器实现对数据库事务的控制。启用该配置后开发者只需在需要事务支持的类或方法上添加 Transactional 注解Spring 就会自动为这些方法添加事务功能。AliPayDaoImpl.java其中的重要部分Transactional(propagation Propagation.REQUIRED,isolation Isolation.DEFAULT,readOnly false)propagation 是Spring事务的传播行为它定义了事务方法被另一个事务方法调用时的事务行为。propagation的值有REQUIRED默认如果当前存在事务则在该事务中运行如果没有事务则创建一个新的事务SUPPORTS如果当前存在事务则在该事务中运行如果没有事务则在非事务环境中运行MANDATORY必须在事务中运行如果没有事务则抛出异常isolation 是Spring事务的隔离级别隔离级别定义了一个事务对另一个正在进行的事务所可见的程度隔离级别越高数据库的并发性越差但安全性就越高。Spring支持的事务隔离级别包括DEFAULT使用数据库默认的隔离级别不可重复读READ_UNCOMMITTED允许脏读、不可重复读和幻读READ_COMMITTED避免了脏读但允许不可重复读和幻读REPEATABLE_READ避免了脏读和不可重复读但允许幻读SERIALIZABLE最高的隔离级别避免了所有可能的数据不一致问题但性能最差。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

免费电商网站模板html5开发环境

Java SE的支持路线图 Java SE 8 之后的版本,Oracle 将为特定版本提供长期支持 (LTS)。Java SE 8、11、17、21 和 25 均为 LTS 版本。Oracle 计划每两年发布一个 LTS 版本,这意味着下一个计划的 LTS 版本是 2027 年 9 月发布的 Java 29。 非 LTS 版本被视…

张小明 2025/12/30 5:07:22 网站建设

视频一页网站怎么做微商引流推广平台

清华源镜像对比其他国内站点下载速度实测 在AI工程化落地日益深入的今天,一个看似不起眼却直接影响开发效率的问题浮出水面:为什么别人装个TensorRT只要几十秒,而你等了十几分钟还失败? 答案往往不在于你的代码写得怎么样&#…

张小明 2026/1/1 1:03:03 网站建设

手机怎样建立网站淘宝网站做超链接

下面用一个同名不同物的视角来拆解:在 SAP 生态里,CAP 里的 CDS 与 ABAP Cloud 里的 CDS 都叫 Core Data Services,但它们服务的运行时、生命周期、产物形态、以及面向的开发范式并不相同。把它们当成两种不同平台上的语义建模语言与元数据体系会更贴切:CAP CDS 更像全栈应…

张小明 2026/1/26 7:00:24 网站建设

一个人做网站 优帮云专业网页制作软件都能帮助用户组织和管理

量子信息中的纠缠:定义、检测与特性 1. 混合态纠缠的定义 在量子信息领域,对于混合态的纠缠需要进行明确定义。如果一个态不能通过局域操作(以及经典通信)从一个积态制备出来,那么这个态就被称为纠缠态。这个定义具有多方面的合理性: - 它与之前对纯态纠缠的定义相兼容…

张小明 2025/12/31 18:46:02 网站建设

泰安如何选择网站建设西宁网站建设公司

一、前言作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用&#xff0c…

张小明 2025/12/30 4:56:47 网站建设

51aspx源码seo模拟点击工具

本次榜单的数据主要提取的是两类AI APP,一类是AI原生APP;另一类是深度AI化的传统APP,所以大家会看到很多传统APP上榜就是这个缘由了。过去很多AI博主都鼓吹说过“AI会取代传统APP”,但现在看来,基本不可能了&#xff0…

张小明 2025/12/30 4:54:41 网站建设