SpringMVC:整合 SSM 中篇
文章目录
- SpringMVC - 04
- 整合 SSM 中篇
- 一、优化
- 二、总结
- 三、说明
- 注意:
SpringMVC - 04
整合 SSM 中篇
一、优化
- 在 spring-dao.xml 中配置 dao 接口扫描,可以动态地实现 dao 接口注入到 Spring 容器中。
- 优化前:手动创建 SqlSessionTemplate 对象,然后调用 getMapper 方法得到 mapper

- 优化后:自动将 dao 接口注入到 Spring 容器中,此时 Spring 容器中已经有了 mapper 对象

- 可以通过 spring-service.xml 配置文件将所有的业务实现类注入到 Spring 中,也可以通过注解自动装配,两者方式二选一
- 配置文件

- 注解

二、总结
- 总体过程为:controller 层调 service 层,service 层调 dao 层;
- 使用注解前一定要在配置文件中配置自动扫描包:
<context:component-scan base-package="com.Sun3285.包名"/>; - 业务层相当于加了一层,除了执行 dao 层的方法,还有其他方法,例如处理业务逻辑;
- 最后报错,可以从以下几个方面排查错误:
- 查看 Bean 是否注入成功;
- 用 Junit 单元测试,看代码是否可以查询到结果,如下图所示,若可以查询到数据库,说明底层没有问题;
- 通过错误提示信息,排查错误。

- 自己写的时候,最后运行出现 500 错误,排查到的原因有:
- 项目结构中,没有把所有的配置文件放到一起;
- 实体类包名重复,把
com.Sun3285.pojo.Books写成了com.Sun3285.com.Sun3285.pojo.Books; - 在配置文件中对 JSON 乱码问题进行了配置,但 JSON 的依赖没有导入;
- c3p0 数据库连接池的依赖没有升级到最新。

- 整体的项目结构如图所示:


三、说明
整合 SSM 上篇:点此进入
整合 SSM 下篇:点此进入
注意:
设置在 xml 文件中写 sql 语句自动提示方法:

相关文章:
SpringMVC:整合 SSM 中篇
文章目录 SpringMVC - 04整合 SSM 中篇一、优化二、总结三、说明注意: SpringMVC - 04 整合 SSM 中篇 一、优化 在 spring-dao.xml 中配置 dao 接口扫描,可以动态地实现 dao 接口注入到 Spring 容器中。 优化前:手动创建 SqlSessionTempl…...
oracle即时客户端(Instant Client)安装与配置
之前的文章记录了oracle客户端和服务端的下载与安装,内容参见: 在Windows中安装Oracle_windows安装oracle 如果不想安装oracle客户端(或者是电脑因为某些原因无法安装oracle客户端),还想能够连接oracle远程服务&#…...
POP3协议详解
基本介绍 POP3是一种用于从邮件服务器获取电子邮件的协议。它允许邮件客户端连接到邮件服务器,检索服务器上存储的邮件,并将邮件下载到客户端设备上。POP3的工作原理如下: 连接和身份验证: 邮件客户端通过TCP/IP连接到邮件服务器…...
电子病历编辑器源码,提供电子病历在线制作、管理和使用的一体化电子病历解决方案
概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…...
WT2605C高品质音频蓝牙语音芯片:外接功放实现双声道DAC输出的优势
在音频处理领域,双声道DAC输出能够提供更为清晰、逼真的音效,增强用户的听觉体验。针对这一需求,唯创知音的WT2605C高品质音频蓝牙语音芯片,通过外接功放实现双声道DAC输出,展现出独特的应用优势。 一、高品质音频处理…...
IntelliJ IDEA 2023.3 最新版如何如何配置?IntelliJ IDEA 2023.3 最新版试用方法
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
如何查看内存卡使用记录-查看的设备有:U盘、移动硬盘、MP3、SD卡等-供大家学习研究参考
主要功能 USB Viewer(USB移动存储设备使用记录查看器)可用于查看本机的USB移动存储设备使用记录。可查看的设备有:U盘、移动硬盘、MP3、SD卡……等。 可用于兵器、航空、航天、政府、军队等对保密要求较高的单位,可在计算机保…...
九、W5100S/W5500+RP2040之MicroPython开发<HTTPOneNET示例>
文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代,MicroPython和树莓派PICO正…...
在 Laravel 中,清空缓存大全
在 Laravel 中,清空缓存通常涉及到清除应用程序中的缓存文件和数据库查询缓存。以下是一些常用的清空缓存方法: 1. 清除路由缓存: Laravel 的路由缓存可以提高应用程序的性能,但在开发过程中,你可能需要频繁地更改路…...
【贪心】单源最短路径Python实现
文章目录 [toc]问题描述Dijkstra算法Dijkstra算法的正确性贪心选择性质最优子结构性质 Dijkstra算法应用示例时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E),其中每…...
Spark Shell的简单使用
简介 Spark shell是一个特别适合快速开发Spark原型程序的工具,可以帮助我们熟悉Scala语言。即使你对Scala不熟悉,仍然可以使用这个工具。Spark shell使得用户可以和Spark集群交互,提交查询,这便于调试,也便于初学者使用…...
Springsecurty【2】认证连接MySQL
1.前期准备 基于Spring Initializr创建SpringBoot项目(基于SpringBoot 2.7.12版本),实现与MyBatisPlus的项目整合。分别导入:CodeGenerator和MyBatisPlusConfig。 CodeGenerator:用于MybatisPlus代码生成;…...
.Net 访问电子邮箱-LumiSoft.Net,好用
序言: 网上找了很多关于.Net如何访问电子邮箱的方法,但是大多数都达不到想要的需求,只有一些 收发邮件。因此 花了很大功夫去看 LumiSoft.Net.dll 的源码,总算做出自己想要的结果了,果然学习诗人进步。 介绍ÿ…...
谷粒商城-商品服务-新增商品功能开发(商品图片无法展示问题没有解决)
在网关配置路由 - id: member_routeuri: lb://gulimemberpredicates:- Path/api/gulimember/**filters:- RewritePath/api/(?<segment>.*),/$\{segment}并将所有逆向生成的工程调式出来 获取分类关联的品牌 例如:手机(分类)-> 品…...
Open3D 点云数据处理基础(Python版)
Open3D 点云数据处理基础(Python版) 文章目录 1 概述 2 安装 2.1 PyCharm 与 Python 安装 2.3 Anaconda 安装 2.4 Open3D 0.13.0 安装 2.5 新建一个 Python 项目 3 点云读写 4 点云可视化 2.1 可视化单个点云 2.2 同一窗口可视化多个点云 2.3…...
使用vue-qr,报错in ./node_modules/vue-qr/dist/vue-qr.js
找到node_modules—>vue-qr/dist/vue-qr.js文件,搜…e,将…去掉,然后重新运行项目。...
百川2大模型微调问题解决
之前用https://github.com/FlagAlpha/Llama2-Chinese微调过几个模型,总体来说llama2的生态还是比较好的,过程很顺利。微调百川2就没那么顺利了,所以简单做个记录 1. 数据准备,我的数据是单轮对话,之前微调llama2已经按…...
MySQL的事务-原子性
MySQL的事务处理具有ACID的特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 1. 原子性指的是事务中所有操作都是原子性的,要…...
D3839|完全背包
完全背包: 首先01背包的滚动数组中的解法是内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j bagWeight; j > weight[i]; j--) { // 遍历背包容量dp[j] max(dp[j], dp[j…...
Java之Synchronized与锁升级
Synchronized与锁升级 一、概述 在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对 synchronized 进行了各种优化之后,有些情况下它就并不那么重了。 本文详细介绍 Java SE 1.6 中为…...
三维重建下半场,拼的全是底层基建实力!
三维重建已从算法创新竞赛正式迈入基础设施比拼新阶段,主流技术路线逐步收敛,单纯算法红利见顶,行业竞争核心转向数据、算力、平台、生态等底层综合能力。当下竞争不再只比模型效果,而是聚焦四大核心基建维度:采集传感…...
从零部署开源语音助手:OpenClaw项目实战与二次开发指南
1. 项目概述:从开源代码到可用的语音助手看到leilei926524-tech/openclaw-voice-assistant这个项目标题,我的第一反应是:又一个基于开源代码的语音助手项目。在GitHub上,类似的项目多如牛毛,但真正能让一个普通开发者&…...
5分钟掌握浏览器串口调试:提升嵌入式开发效率300%的终极指南
5分钟掌握浏览器串口调试:提升嵌入式开发效率300%的终极指南 【免费下载链接】SerialAssistant A serial port assistant that can be used directly in the browser. 项目地址: https://gitcode.com/gh_mirrors/se/SerialAssistant 你是否还在为串口调试工具…...
开源可视化利器:用声明式数据驱动构建交互式技术解释图
1. 项目概述:一个将复杂概念可视化的开源利器最近在整理技术分享材料时,我一直在寻找一种能直观展示复杂系统架构或算法流程的工具。传统的流程图工具要么太笨重,要么定制化程度不够,直到我遇到了nicobailon/visual-explainer这个…...
ARM架构寄存器与参数管理核心技术解析
1. ARM架构寄存器与参数管理基础解析 在ARM架构的底层开发中,寄存器与参数管理是系统控制和调试的核心机制。作为嵌入式开发者,我经常需要与这两种资源打交道,它们虽然都用于存储数据,但在使用场景和特性上存在本质差异。 寄存器…...
系统管理员AI编程实战:基于Claude的运维自动化脚本开发指南
1. 项目概述:一个面向系统管理员的Claude-Code学习与实践仓库最近在整理自己的技术栈时,发现很多系统管理员同行对如何将大型语言模型(LLM)高效地融入日常运维工作流感到困惑。大家普遍觉得这些AI工具很强大,但具体到写…...
CircuitPython REPL与库管理:嵌入式开发的效率利器
1. CircuitPython REPL:你的嵌入式开发“瑞士军刀” 如果你玩过Arduino,肯定对“上传-编译-看结果”这个循环不陌生。每次改一行代码,都得重新编译、上传,然后盯着串口看输出,效率低得让人抓狂。CircuitPython带来的R…...
私有化部署智能助手:基于开源项目smarty-gpt的本地化AI对话平台搭建指南
1. 项目概述:当智能助手遇上本地化部署最近在折腾一个挺有意思的开源项目,叫citiususc/smarty-gpt。乍一看名字,你可能觉得这又是一个基于GPT的聊天机器人,没什么新意。但如果你深入了解一下,就会发现它的定位非常独特…...
FTDI Friend:从USB转串口到AVR编程的嵌入式开发利器
1. 项目概述:为什么你需要一个FTDI Friend?在嵌入式开发和单片机玩家里,串口通信就像空气和水一样基础且不可或缺。无论是给Arduino上传代码,还是让树莓派和传感器模块“说上话”,亦或是调试一个自己焊的STM32最小系统…...
AMD Ryzen调试神器SMUDebugTool:免费开源工具让你的处理器性能飞起来!
AMD Ryzen调试神器SMUDebugTool:免费开源工具让你的处理器性能飞起来! 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Tab…...
