做网站是否用数据库品牌策略

张小明 2026/1/2 23:39:46
做网站是否用数据库,品牌策略,苏州晶体公司网站,兰州网站怎么建设一、回顾JDBC 操作的问题与流程 问题#xff1a;JDBC 是操作 MySQL 的传统方式#xff0c;但步骤繁琐。核心流程#xff08;共 9 步#xff09;#xff1a; 创建数据库连接池#xff08;DataSource#xff09;获取数据库连接#xff08;Connection#xff09;编写带占…一、回顾JDBC 操作的问题与流程问题JDBC 是操作 MySQL 的传统方式但步骤繁琐。核心流程共 9 步创建数据库连接池DataSource获取数据库连接Connection编写带占位符的 SQL创建操作命令对象Statement替换 SQL 占位符执行 SQL处理执行结果查询返回 ResultSet更新返回数量处理结果集释放资源二、MyBatis 的定义与背景定位优秀的持久层框架用于简化 JDBC 开发专注于程序与数据库的交互。持久层的含义对应 Web 分层中的 Dao 层负责数据库操作。MyBatis 作为框架仅简化操作逻辑实际数据存储仍依赖 MySQL因此必须引入MySQL 驱动三、MyBatis⼊⻔MyBatis 结合 Spring Boot 的使用流程分为 4 步准备工作创建 Spring Boot 工程、准备数据库表、定义实体类配置依赖引入 MyBatis 框架、MySQL 驱动等依赖并配置数据库连接信息编写 SQL通过注解或 XML 文件编写 SQL 语句测试验证数据库操作效果。3.1准备⼯作3.1.1创建⼯程创建springboot⼯程并导⼊mybatis的起步依赖、mysql的驱动包项目创建后 pom.xml 会自动导入 MyBatis、MySQL 驱动依赖版本随 SpringBoot 适配SpringBoot 3.X → MyBatis 3.X参考https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/3.1.2数据准备创建⽤户表,并创建对应的实体类User创建对应的实体类UserInfo实体类的属性名与表中的字段名⼀ 一对应3.1.3配置数据库连接字符串3.1.4写持久层代码在项⽬中,创建持久层接⼝UserInfoMapperMybatis的持久层接规范⼀般都叫XxxMapperMapper 接口的本质MyBatis 的 “数据访问接口”用于告诉 MyBatis “要执行什么 SQL” 的入口MyBatis 会在运行时自动为这个接口生成实现类代理对象无需你手动写实现类Mapper 注解的作用告诉 Spring Boot “这是 MyBatis 的 Mapper 接口”Spring 会把这个接口的代理对象纳入容器管理后续可以通过Autowired注入使用Select 注解的作用把 SQL 语句 “绑定” 到接口方法上当你调用queryAllUser()方法时MyBatis 会执行注解里的 SQL并且自动把查询结果ResultSet转换成ListUserInfo实体类集合。问题讲解MyBatis 的Mapper和 Spring 的Service在 “交给 Spring 管理” 的逻辑上有本质区别1.Mapper不是 “直接交给 Spring 管理”Mapper是MyBatis 的注解不是 Spring 的注解它的作用是告诉 MyBatis“这是一个 Mapper 接口需要为它生成代理实现类”而非直接让 Spring 接管。而Service是Spring 的注解作用是标记普通类为 Spring BeanSpring 会直接实例化这个类并放入容器。两者的 “交给 Spring 管理” 路径完全不同注解归属框架核心作用Spring 管理的对象来源ServiceSpring标记普通类为业务 BeanSpring 直接实例化Service标注的类本身MapperMyBatis标记接口为 MyBatis 映射接口MyBatis 生成接口的代理类再交给 Spring 管理2.为什么Mapper不需要 “手动定义实现类 / 变量名”你看到的UserInfoMapper userInfoMapper是接口不是普通类 —— 接口本身不能实例化但 MyBatis 做了 “兜底”步骤 1Mapper触发 MyBatis 生成代理类当你在接口上加Mapper后MyBatis-Spring 会通过动态代理为UserInfoMapper生成一个 “隐形的实现类”比如叫UserInfoMapperProxy这个代理类会实现UserInfoMapper接口重写queryAllUser()方法执行Select里的 SQL处理数据库连接、SQL 执行、结果映射等逻辑。步骤 2MyBatis 把代理类交给 SpringMyBatis-Spring 会将生成的代理类注册为 Spring BeanBean 的类型是UserInfoMapper接口类型放入 Spring 容器。步骤 3Autowired直接注入代理对象你在测试类中写spring 会从容器中找到 “UserInfoMapper类型的代理 Bean”直接赋值给这个变量 ——你不需要手动写实现类也不需要手动 new 对象MyBatisSpring 帮你全做了。3.对比Service为什么觉得 “需要写成员变量”比如你写一个UserService你觉得 “需要写成员变量”是因为Service标注的是普通类Spring 会实例化这个类但类内部要用到其他 Bean比如UserInfoMapper必须手动注入写成员变量 Autowired而Mapper标注的是接口你不会在接口里写成员变量而是在 “使用这个接口的地方”比如UserService、测试类注入接口对象。举个更直观的对比场景Service普通类MapperMyBatis 接口定义方式写完整的类包含方法实现只写接口方法上标注 SQL无实现Spring 管理的对象类的实例对象MyBatis 生成的接口代理对象使用时的注入方式定义XXXService变量 Autowired定义XXXMapper变量 Autowired要不要写实现必须自己写方法实现不用写MyBatis 根据 SQL 自动生成实现关键总结Mapper≠Service前者是 MyBatis 的 “接口代理生成器”后者是 Spring 的 “普通类 Bean 标记器”不用写实现类MyBatis 动态生成UserInfoMapper的代理实现类Spring 管理这个代理对象变量名不是 “省了”你在使用UserInfoMapper的地方测试类 / Service依然需要定义UserInfoMapper类型的成员变量再通过Autowired注入 —— 只是不用自己写实现类而已。对比熟悉的Service更易理解特性Mapper MyBatisService谁生成类MyBatis 运行时动态生成代理类你自己手写类谁注册为 Spring BeanMyBatis-Spring 帮你注册Spring 自动扫描Service注册谁创建对象Spring 实例化代理类Spring 实例化你手写的类你需要写的代码只写接口 SQL 注解写完整类 方法实现四、单元测试在创建出来的SpringBoot⼯程中在src下的test⽬录下已经⾃动帮我们创建好了测试类我们可以直接使⽤这个测试类来进⾏测试.单元测试的核心作用单元测试是在开发阶段验证 “某一个组件这里是UserInfoMapper是否能正常工作”避免把问题带到线上 —— 这里的测试目标是验证queryAllUser()方法能否成功从数据库查询到用户数据。运行结果如下使⽤Idea⾃动⽣成测试类在需要测试的Mapper接⼝中,右键-Generate-Test记得加SpringBootTest 注解,加载Spring运⾏环境(别忘记哟关于测试的问题问题答案Test 目录下能否自定义测试方法可以新增方法加Test即可执行方法需要点类的箭头吗不用点单个方法的箭头只跑当前方法效率更高启动测试后后续更改测试里的代码需要clean吗不需要仅改代码 / 依赖后出问题时才需要要手动启动 SpringBoot 启动类吗不需要SpringBootTest会自动启动 Spring 容器额外小技巧如果测试方法执行慢因为SpringBootTest会启动完整容器可以针对 Mapper 测试用MyBatisTest轻量化只启动 MyBatis 相关环境适合纯 Mapper 层的测试。验证数据库查询功能是否正常把数据库中UserInfo表的所有数据查询出来并打印到控制台
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

长沙网站优化外包公司建设集团简介

雷达发射机的基本组成与任务讲稿整理在第一章概论中,我们学习了雷达的工作过程:雷达发射电磁波,照射到目标后,目标反射电磁波,被雷达接收机接收。雷达通过处理接收到的目标回波信号,获取目标的各种信息。上…

张小明 2025/12/25 9:54:49 网站建设

顺德微网站建设网页设计代码居中

GPS测量工具快速上手指南:从零开始处理卫星定位数据 【免费下载链接】gps-measurement-tools 项目地址: https://gitcode.com/gh_mirrors/gp/gps-measurement-tools 为什么选择GPS测量工具? 在移动定位和导航应用开发中,精确的GPS数…

张小明 2025/12/25 9:52:48 网站建设

网络推广网站建设方案缩短链接

在开源项目开发中,自动化构建已成为提升开发效率的关键技术。通过GitHub Actions配置,Deep-Live-Cam项目实现了从代码提交到Windows可执行文件生成的全流程自动化,让开发者能够专注于功能创新而非繁琐的工程化工作。本文将带你深入了解这个实…

张小明 2025/12/25 9:50:46 网站建设

普陀做网站价格公司网站建设计划书

腾讯混元HunyuanVideo-Foley:声画合一的AI音效革命 在短视频日更、影视工业化提速、游戏沉浸感不断升级的今天,一个看似微小却长期被忽视的问题正在浮出水面:我们能用AI生成逼真的画面,但这些画面往往是“沉默”的。没有脚步踩在石…

张小明 2025/12/25 9:48:45 网站建设

html5手机论坛网站模板有什么平台可以做网站

第一章:Laravel 13 的多模态事件监听Laravel 13 引入了多模态事件监听机制,允许开发者通过多种传输方式响应同一事件,例如 HTTP、WebSocket、队列和命令行输出。这一特性增强了系统的响应灵活性,使应用能够根据运行环境动态选择最…

张小明 2025/12/25 9:46:44 网站建设

图案设计网站有哪些凡客优品家居官方网站

需求: 写一个程序a和一个监控程序b,a定周期写一个数据c,并且每次递增,数据是uchar 类型就可以,达到最大值后从0重新开始。 程序b通过共享内存定周期读取a写的c的值,写数据的周期是一秒,读数据的周期是5秒&…

张小明 2025/12/25 9:44:42 网站建设