基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别

server/2025/3/16 19:46:50/

【由于之前学习MyBatis的时候是跟着视频敲的纯MyBatis项目,以至于在突然看到别人在SpringBoot项目里搭建MyBatis方式的时候很懵比…特此文字形式记录一下区别(应该还有好多种其他方式是我不知道的,主要应该就是要知道关键的流程步骤,其他的形式就算再多上手也很快了)】

目录

  • 纯MyBatis项目
  • 基于SpringBoot的MyBatis搭建
  • 区别
  • 总结

纯MyBatis项目

大致步骤

1、自己创建pojo表,添加数据

2、maven引入MyBatis坐标

3、在mybatis-config.xml中自己编写MyBatis核心配置文件:数据库连接信息、sql映射文件路径等

4、自己编写Mapper接口和sql映射文件:xxxMapper(接口,只定义方法)、xxxMapper.xml(sql映射文件,放在resources中,用来写具体的sql语句)

5、编写MyBatisDemo测试类 (手动加载mybatis的核心配置文件、获取 SqlSessionFactory、获取sqlSession对象用来执行sql、获取Mapper接口代理对象+执行sql、释放SqlSession)

【基本就是纯手工活儿】


基于SpringBoot的MyBatis搭建

先了解芝士

MBG:MBG(MyBatis Generator)是MyBatis官方提供的代码生
成工具,用于根据数据库表结构自动生成所需代码,包括:实体类、Mapper接口、Mapper映射文件xml、数据库表的CRUD代码。

大致步骤

0、maven中引入MyBatis相关依赖

1、配置MBG:配置generator.properties(定义数据库连接信息) → 配置generatorConfig.xml(是MBG的核心配置文件) → 运行Generator类(会自动生成文件夹来存放实体类、Mapper接口和sql映射文件

2、application.yml中配置sql映射文件mapper.xml的位置

3、创建MyBatisConfig配置类配置mapper接口路径等

【解放双手了说是,而且配置MBG的具体代码也不需要自己写,网上找找就行】

区别

1、SpringBoot开发中,使用@Configuration配置类替代了传统的xml核心配置文件

2、SpringBoot中整合mybatis后,sql映射文件的位置由application.yml的mapper-locations来指定(没有xml核心配置文件,就不用在里面写了)

3、新旧mybatis配置对比:

:在xml配置文件中,<mappers>用于指定sql映射文件的位置,这样MyBatis就能找到该文件来映射SQL语句【需要同时配置接口和映射文件

:在spring的Config配置类中,@MapperScan注解用于自动扫描Mapper接口,并为它们创建代理实现类,这样就不需要手动配置每个Mapper的sql映射文件了【spring更关注接口的扫描

在这里插入图片描述

总结

1、传统的xml配置:直接管理MyBatis的XML和接口绑定

2、spring的@MapperScan:专注于让Spring管理Mapper接口的实例化,依赖MyBatis的默认约定或外部配置来定位XML


http://www.ppmy.cn/server/175506.html

相关文章

翻硬币问题

小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币&#xff0c;用“”表示正面&#xff0c;用“o”表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;。比如可能情形是“**oo***ooo”&#xff0c;如果同时翻转左边的两个硬币&#xff0c;则变为“oooo*…

音视频入门基础:RTP专题(19)——FFmpeg源码中,获取RTP的音频信息的实现(下)

本文接着《音视频入门基础&#xff1a;RTP专题&#xff08;18&#xff09;——FFmpeg源码中&#xff0c;获取RTP的音频信息的实现&#xff08;上&#xff09;》&#xff0c;继续讲解FFmpeg获取SDP描述的RTP流的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四…

钉钉项目报销与金蝶系统高效集成技术解析

钉钉报销【项目报销类】集成到金蝶付款单【画纤骨】的技术实现 在企业日常运营中&#xff0c;数据的高效流转和准确对接是提升业务效率的关键。本文将分享一个具体的系统对接集成案例&#xff1a;如何将钉钉平台上的项目报销数据无缝集成到金蝶云星空的付款单系统中。本次方案…

第四章-PHP文件包含

PHP文件包含 一&#xff0c;PHP文件包含简介 在 PHP 开发中&#xff0c;文件包含&#xff08;File Inclusion&#xff09;是一种代码复用和组织的重要机制&#xff0c;其核心目的是将代码模块化、提高可维护性。 文件包含的作用 1. 代码复用与模块化 拆分重复代码&#xff…

【后端】【django drf】Django DRF API 编写规范(程序设计规则)

Django DRF API 编写规范&#xff08;程序设计规则&#xff09; 为了确保 Django DRF 代码的可维护性、可扩展性和高质量&#xff0c;API 设计不仅要符合 RESTful 规范&#xff0c;还需要遵循一定的程序设计规则。以下是一些关键的编写规范&#xff0c;以保证代码的清晰性、可…

力扣 11.盛水最多的容器(双指针)

11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 代码区&#xff1a; class Solution { public:int maxArea(vector<int>& height) {//双指针int left 0,rightheight.size()-1;int maxarea0;while(left<right){maxareamax(maxarea,(right-left)*min(…

2024年12月CCF-GESP编程能力等级认证C++编程一级真题解析

一级真题的难度: ‌ CCF-GESP编程能力等级认证C++编程一级真题的难度适中‌。这些真题主要考察的是C++编程的基础知识、基本语法以及简单的算法逻辑。从搜索结果中可以看到,真题内容包括了选择题、编程题等题型,涉及的内容如C++表达式的计算、基本输入输出语句的理解…

Java多线程与高并发专题——原子类和 volatile、synchronized 有什么异同?

原子类和 volatile异同 首先&#xff0c;通过我们对原子类和的了解&#xff0c;原子类和volatile 都能保证多线程环境下的数据可见性。在多线程程序中&#xff0c;每个线程都有自己的工作内存&#xff0c;当多个线程访问共享变量时&#xff0c;可能会出现一个线程修改了共享变…