【MyBatis Plus】001 -- MyBatis-Plus快速入门(介绍、QuickStart)

news2024/10/7 16:22:19

目录

1、了解MyBatis-Plus

1.1 MyBatis-Plus介绍

1.2 代码及文档

1.3 特性

1.4 架构

1.5 作者

2、快速开始

2.1 创建数据库以及表

2.2 创建工程

2.3 MyBatis + MP

2.3.1 创建子module

2.3.2 MyBatis实现查询User(无Service方法,直接通过Mapper实现查询)

2.3.3 MyBatis+MP实现查询User

2.4  Spring + Mybatis + MP

2.4.1 创建子module

2.4.2 实现查询User

2.5 SpringBoot + Mybatis + MP

2.5.1 创建工程

2.5.2 导入依赖

2.5.3 编写application.properties

2.5.4 编写pojo:

2.5.5 编写mapper

2.5.6 编写启动类

2.5.7 编写测试用例


环境安装:三款神器(MyBatis Plus + MyBatisX + MyBatis Plus Join);终于不用写数据库操作代码,一键生成直接调用https://blog.csdn.net/lupengfei1009/article/details/121689443

1、了解MyBatis-Plus

1.1 MyBatis-Plus介绍

官网: MyBatis-Plus 或 Redirect

1.2 代码及文档

文档地址: 简介 | MyBatis-Plus

源码地址: GitHub - baomidou/mybatis-plus: An powerful enhanced toolkit of MyBatis for simplify developmentAn powerful enhanced toolkit of MyBatis for simplify development - GitHub - baomidou/mybatis-plus: An powerful enhanced toolkit of MyBatis for simplify developmenthttps://github.com/baomidou/mybatis-plus

1.3 特性

1.4 架构

1.5 作者

码云地址: baomidou: 苞米豆,为提高生产率而生!

2、快速开始

对于Mybatis整合MP有常常有三种用法,分别是Mybatis+MPSpring+Mybatis+MPSpring Boot+Mybatis+MP

2.1 创建数据库以及表

Navicat:

建表语句

-- 创建测试表

CREATE TABLE `tb_user` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`user_name` varchar(20) NOT NULL COMMENT '用户名',

`password` varchar(20) NOT NULL COMMENT '密码',

`name` varchar(30) DEFAULT NULL COMMENT '姓名',

`age` int(11) DEFAULT NULL COMMENT '年龄',

`email` varchar(50) DEFAULT NULL COMMENT '邮箱',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 插入测试数据

INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES

('1', 'zhangsan', '123456', '张三', '18', 'test1@itcast.cn');

INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES

('2', 'lisi', '123456', '李四', '20', 'test2@itcast.cn');

INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES

('3', 'wangwu', '123456', '王五', '28', 'test3@itcast.cn');

INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES

('4', 'zhaoliu', '123456', '赵六', '21', 'test4@itcast.cn');

INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES

('5', 'sunqi', '123456', '孙七', '24', 'test5@itcast.cn');

表格形式

2.2 创建工程

IDEA创建工程:

导入依赖:

检查项目依赖:

2.3 MyBatis + MP

下面演示,通过纯Mybatis与Mybatis-Plus整合

2.3.1 创建子module

Ⅰ、创建一个子模块 itcast-myatis-plus-simple

Ⅱ、如果是在原项目中创建的子模块,会自动依赖父模块的依赖:(子模块pom.xml)

Ⅲ、导入log4j.properties文件:

2.3.2 MyBatis实现查询User(无Service方法,直接通过Mapper实现查询)

Ⅰ、编写mybatis-config.xml文件:(主要配置了两部分内容,配置了本地的连接池,并导入了一个mapper文件)

Ⅱ、编写User实体对象:(这里使用lombok进行了进化bean操作)

Ⅲ、编写UserMapper接口:

Ⅳ、编写UserMapper.xml文件:(resultType中写的是对应实体类的全类名)

Ⅴ、编写TestMybatis测试用例:

通过sqlSession,我们可以拿到一个Mapper,我们通过这个Mapper对象去调用Mapper方法即可

Ⅵ、测试结果:

2.3.3 MyBatis+MP实现查询User

Ⅰ、将 UserMapper 继承 BaseMapper,将拥有了BaseMapper中的所有方法:

BaseMapper中的方法:

Ⅱ、使用MP中的MybatisSqlSessionFactoryBuilder进程构建:(通过MybatisSqlSessionFactoryBuilde就可以完成MyBatisMP插件之间的整合)

Ⅲ、运行报错:

解决办法::在User对象中添加注解 @TableName,指定数据库表名(因为在这里,我们使用的是MP中的方法selectList(),而不是我们自己的Mapper方法,因此需要指定数据库表名)

Ⅳ、再次运行测试:(从运行结果的查询语句,我们也可以看出此时执行的就是MP自动构建查询语句,而不是我们之前写的SQL语句)

说明:由于使用了MybatisSqlSessionFactoryBuilder进行了构建,继承的BaseMapper中的方法就载入到了SqlSession中,所以就可以直接使用相关的方法,其方法可以在mappedStatements中看到;

2.4  Spring + Mybatis + MP

引入了Spring框架,数据源、构建等工作就交给了Spring管理

2.4.1 创建子module

Ⅰ、创建子模块 itcast-mybatis-plus-spring

Ⅱ、导入 Spring 依赖:

定义了 Spring 依赖版本号:

引入依赖:

2.4.2 实现查询User

Ⅰ、编写jdbc.properties:(位于src中的resources目录下)

Ⅱ、编写applicationContext.xml

Ⅲ、编写User对象以及UserMapper接口:

User实体类:

UserMapper接口:

Ⅳ、编写测试用例:(由于我们引入了Spring,所以这里可以使用自动注入方法来直接注入对象)测试用例中会默认查找test目录下的配置文件,而非java目录下,因此我们可以在test目录下创建一个resources目录,并将配置文件复制过来:

测试:

2.5 SpringBoot + Mybatis + MP

使用SpringBoot将进一步的简化MP的整合,需要注意的是,由于使用SpringBoot需要继承parent,所以需要重新创建工程,并不是创建子Module

2.5.1 创建工程

2.5.2 导入依赖

log4j.properties:

2.5.3 编写application.properties

2.5.4 编写pojo:

2.5.5 编写mapper

2.5.6 编写启动类

2.5.7 编写测试用例

测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外虚拟主机空间:如何使用CDN加速提升用户体验?

随着互联网的迅速发展和全球化的趋势,越来越多的企业和个人选择海外虚拟主机空间。然而,由于服务器的地理位置和网络延迟等原因,这些网站在国内访问时可能会遇到较慢的加载速度和不稳定的用户体验。为了解决这一问题,使用CDN加速是…

Web漏洞-文件包含漏洞超详细全解(附实例)

目录 一、导图 二、文件包含漏洞 1.脚本代码 2.原理演示 3.漏洞成因 4.检测方法 5.类型分类 三、本地文件包含漏洞的利用 <无限制本地文件包含> <有限制本地文件包含> 四、远程文件包含漏洞的利用 <无限制远程文件包含> <有限制远程文件包含…

开心档之C++ 多线程

C 多线程 目录 C 多线程 创建线程 终止线程 实例 实例 实例 向线程传递参数 实例 连接和分离线程 实例 std::thread 实例 多线程是多任务处理的一种特殊形式&#xff0c;多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下&#xff0c;两种类型的多任务…

NumPy 初学者指南中文第三版:11~14

原文&#xff1a;NumPy: Beginner’s Guide - Third Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 十一、玩转 Pygame 本章适用于希望使用 NumPy 和 Pygame 快速轻松创建游戏的开发人员。 基本的游戏开发经验会有所帮助&#xff0c;但这不是必需的。 您将学…

LinuxGUI自动化测试框架搭建(八)-安装LinuxGUI自动化测试工具Dogtail

(八)-安装LinuxGUI自动化测试工具Dogtail 1 Dogtail简介2 Dogtail技术原理3 Dogtail安装4 Dogtail的sniff组件1 Dogtail简介 官网:Dogtail官网文档; Linux平台能够支持Accessibility去获取元素控件的工具,主要有Dogtail和LDTP两个工具;dogtail 用 Python 编写,是python …

SpingBoot——SB整合MB的web项目模板

这里是我以后用到的项目都要先创建的模板 第一步 新建一个springboot项目&#xff0c;这里jdk版本和java版本根据需求选择 第二步 ——选择springboot版本和他提供的可以选择安装的依赖 这里因为是开发web项目&#xff0c;所以选择一个spring web 同时因为还要用到mysql&am…

分享4个不可或缺的 VSCode 插件,让 Tailwind CSS开发更简单

本文将为大家分享我在使用 Tailwind 进行开发时常用的四个 VSCode 扩展程序&#xff0c;这些扩展程序都包含在 VSCode 的 TailwindCSS Kit 扩展程序包中。1.Tailwind CSS IntelliSenseTailwind CSS IntelliSense 是一款功能强大的工具&#xff0c;可以帮助开发者更快、更高效地…

python-day1

第001天&#xff1a;初识python 本博客主要涉及到以下几个部分 1、配置镜像源 2、变量名及其命名规范 3、input函数和数据类型 4、指令和程序 5、运算符 6、练习 1、配置镜像源 此处我配置的是豆瓣源&#xff0c;操作步骤如下&#xff1a; 1、进入D:XXX\Scripts文件夹&#xff…

NumPy 初学者指南中文第三版:1~5

原文&#xff1a;NumPy: Beginner’s Guide - Third Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 一、NumPy 快速入门 让我们开始吧。 我们将在不同的操作系统上安装 NumPy 和相关软件&#xff0c;并看一些使用 NumPy 的简单代码。 本章简要介绍了 IPython…

数据结构和算法学习记录——初识二叉树(定义、五种基本形态、几种特殊的二叉树、二叉树的重要性质、初识基本操作函数)

目录 二叉树的定义 二叉树具体的五种基本形态 1.空树 2.只有一个节点 3.有左子树&#xff0c;但右子树为空 4.有右子树&#xff0c;但左子树为空 5.左右两子树都不为空 特殊二叉树 斜二叉树 满二叉树 完全二叉树 二叉树的几个重要性质 初识二叉树的几个操作函数 …

线性代数代码实现(七)求解线性方程组(C++)

前言&#xff1a; 上次博客&#xff0c;我写了一篇关于定义矩阵除法并且代码的文章。矩阵除法或许用处不大&#xff0c;不过在那一篇文章中&#xff0c;我认为比较好的一点是告诉了大家一种计算方法&#xff0c;即&#xff1a;若矩阵 已知且可逆&#xff0c;矩阵 已知&#x…

2021蓝桥杯真题大写 C语言/C++

题目描述 给定一个只包含大写字母和小写字母的字符串&#xff0c;请将其中所有的小写字母转换成大写字母后将字符串输出。 输入描述 输入一行包含一个字符串。 输出描述 输出转换成大写后的字符串。 输入输出样例 示例 输入 LanQiao 输出 LANQIAO 评测用例规模与约定 对于…

[架构之路-158]-《软考-系统分析师》-10-系统分析-1-5-逻辑设计、逻辑模型(系统分析师的主要职责之一)

目录 前言&#xff1a;什么是系统 科学内涵 常见的系统 第 10章 现有系 统 分 析 1 0 . 1 系统分析概述 1 . 系统分析的任务 2 . 系统分析的难点 3 . 对系统分析师的要求 1 0 . 2 详细调查 10.2.1 详细调查的原则 10.2.2 详细调査的内容 》对企业的实际运营和业务进…

async/await 函数到底要不要加 try catch ?

前言 写异步函数的时候&#xff0c;promise 和 async 两种方案都非常常见&#xff0c;甚至同一个项目里&#xff0c;不同的开发人员都使用不同的习惯, 不过关于两者的比较不是本文关注的重点&#xff0c;只总结为一句话&#xff1a;“async 是异步编程的终极解决方案”。 当使…

匿名管道与命名管道

匿名管道与命名管道一&#xff0c;进程间通信什么是进程间通信进程间通信的目的管道的概念二&#xff0c;匿名管道匿名管道的创建匿名管道使用匿名管道的特性以及四种场景匿名管道的原理通过匿名管道实现简易进程池。三&#xff0c;命名管道命名管道的创建命名管道的使用命名管…

vue3+vite+ts 接入QQ登录

说明 前提资料准备 在QQ互联中心注册成为开发者 站点&#xff1a;https://connect.qq.com/创建应用&#xff0c;如图 js sdk方式 下载对应的sdk包 sdk下载&#xff1a;https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd 使用 下载离线js sdk 打开&#xff1a;https:…

jQuery核心

目录 一、引入jQuery 二、jQuery的内涵 1、jQuery挂载在window对象上 2、jQuery是一个函数对象 三、jQuery函数的四种参数形式 1、参数是一个函数function 2、参数是一个选择器 3、参数是一个DOM对象 4、参数是一个HTML元素标签&#xff08;HTML代码&#xff09; 简介…

【Linux】八、Linux进程信号详解(完结)

目录 三、阻塞信号 3.1 信号其他相关常见概念 3.2 信号在内核中的表示 3.3 sigset_t 3.4 信号集操作函数 3.5 sigprocmask函数 3.6 sigpending函数 3.7 信号集实验 四、深入理解捕捉信号 4.1 进程地址空间二次理解&#xff08;内核空间与用户空间&#xff09; 4.2 用…

黑马的redis实战篇-短信登录

目录 四、实战篇-短信登录 4.1 导入黑马点评项目 1、后端&#xff1a; 2、前端 4.2 基于Session实现登录 1、发送验证码 2、短信验证码登录注册 3、校验登录状态 4.3 集群的session共享问题 4.4 基于Redis实现共享session登录 1、发送验证码 2、短信验证码登录注册 …

NumPy 秘籍中文第二版:六、特殊数组和通用函数

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; 创建通用函数查找勾股三元组用chararray执行字符串操作创建一个遮罩数组忽略负值和极值使用recarray函数创建一…