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

news/2024/9/23 18:18:29/

目录

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.ppmy.cn/news/42978.html

相关文章

FE_CSS CSS 的三大特性

1 层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则: 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个…

reviewSpringBoot

1.springboot简介说明 Springboot简化新Spring应用的初始搭建以及开发过程 SpringBoot是基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 SpringBoot集成了绝大部分目前流行的开发框架,就像…

LeetCode算法小抄--O(1)时间下删除-查找数组中任意元素

LeetCode算法小抄O(1)时间下删除-查找数组中任意元素[380. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/insert-delete-getrandom-o1/)[710. 黑名单中的随机数](https://leetcode.cn/problems/random-pick-with-blacklist/)[hard]⚠申明: 未经…

「VS」Visual Studio 常用小技巧

目录指定代码不编译设置选中项目为启动项代码区显示行号新建垂直文档组生成后将dll复制到指定目录指定代码不编译 说明:在项目开发时,有时候已经将代码加入到项目中,但有不想要编译时可以一下操作。 文件处右键→属性→常规→从生成中排除→选…

【项目分析】基于工艺融合的数控编程方法的设计与实现

系列综述: 💞目的:本系列是个人整理为了秋招项目的,按照面试常问及项目核心点整理 🥰来源:该项目源于数控系统迭代的实验项目 🤭结语:如果有帮到你的地方,就点个赞和关注…

2023年14界蓝桥杯省赛题解

2023年14界蓝桥杯省赛题解 蒟蒻笔者大二,第一次省赛。总结一下:“300块没了,退钱!” A、日期统计 问题描述 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如…

【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)

梯度下降与梯度下降算法梯度下降梯度下降算法基础优化算法批量梯度下降 BGD随机梯度下降 SGD小批量梯度下降 MBGD动量梯度下降 MGD基础优化算法上的改进和优化的算法自适应梯度算法 Adagrad均方根传播算法 RMSProp自适应矩估计算法 Adam代码如何实现梯度下降如何判断收敛梯度下…

为什么工控行业生意越来越难做了?

前段时间跟几个做工业品销售的朋友聚了一下,大家都说去年一年挺难的,有些甚至想把小店关了。为什么现在工业品领域越来越难做了呢?今天也想给大家说一说我的一些看法。 以前的工控生意相对现在来说较为有限和封闭,技术上也没有现今…