图书馆网站建设好处企业vi品牌设计公司

张小明 2026/1/19 20:40:03
图书馆网站建设好处,企业vi品牌设计公司,计算机毕设网站开发中期报告,凡客建站登录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进行投诉反馈,一经查实,立即删除!

个人网站能允许做哪些产品图册设计

在Flutter应用开发中,处理多组Radio按钮常常会遇到一些挑战,特别是在需要确保每个组内的选项独立且易于管理时。本文将介绍如何通过使用枚举类型(enum)来优化和简化Flutter中的Radio按钮的实现。 问题背景 在开发一个包含多个Radio按钮组的页面时,传统的做法是使用整数值…

张小明 2026/1/17 21:27:22 网站建设

网站制作经费预算住房和建设部执业资格注册中心网站

导语:Qwen3-4B大型语言模型正式发布,首次实现单个模型内思维模式与非思维模式的无缝切换,在推理能力、指令遵循和多语言支持等关键维度实现突破性提升,为AI应用开发带来全新可能性。 【免费下载链接】Qwen3-4B Qwen3-4B&#xff0…

张小明 2026/1/17 21:27:23 网站建设

网站平台建设需求表班级网站成品

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Windows操作效率对比测试工具,功能:1. 内置典型文件管理任务(如整理100个文件到不同文件夹)2. 分别记录鼠标操作和快捷键操作…

张小明 2026/1/17 21:27:23 网站建设

手机上怎么做自己的网站新闻投稿平台有哪些

第一章:量子电路可视化的颜色配置在量子计算领域,电路可视化是理解量子门操作和量子态演化的重要手段。合理的颜色配置不仅提升图表的可读性,还能帮助研究人员快速识别不同类型的量子门。许多量子编程框架(如Qiskit)支…

张小明 2026/1/17 21:27:24 网站建设

网站建设可以先备案嘛wordpress哪个版本快

Python PSD文件解析实战:告别Photoshop的自动化设计稿处理方案 【免费下载链接】psd-tools 项目地址: https://gitcode.com/gh_mirrors/ps/psd-tools 在日常设计工作中,设计师与开发者之间最头疼的问题之一就是PSD文件的处理与协作。传统的Photo…

张小明 2026/1/17 21:27:26 网站建设

苏州网站建立公司软文的概念

LangFlow投诉处理回复模板生成器 在客户体验日益成为竞争焦点的今天,企业面对海量投诉信息时,如何快速、合规且个性化地生成回应,已成为智能客服系统的关键挑战。传统依赖人工撰写或硬编码规则的方式,不仅效率低下,还容…

张小明 2026/1/17 20:58:55 网站建设