Java开发学习(四十)----MyBatisPlus入门案例与简介

news2024/11/20 4:45:04

一、入门案例

MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提供效率。

SpringBoot它能快速构建Spring开发环境用以整合其他技术,使用起来是非常简单,对于MybatisPlus,我们也基于SpringBoot来构建学习。

我们先来回顾下,SpringBoot整合Mybatis的开发过程:

  • 创建SpringBoot工程

  • 勾选配置使用的技术,能够实现自动添加起步依赖包

  • 设置dataSource相关属性(JDBC参数)

  • 定义数据层接口映射配置

我们可以参考着上面的这个实现步骤把SpringBoot整合MyBatisPlus来快速实现下,具体的实现步骤为:

步骤1:创建数据库及表

create database if not exists mybatisplus_db character set utf8;
use mybatisplus_db;
CREATE TABLE user (
    id bigint(20) primary key auto_increment,
    name varchar(32) not null,
    password  varchar(32) not null,
    age int(3) not null ,
    tel varchar(32) not null
);
insert into user values(1,'Tom','tom',3,'18866668888');
insert into user values(2,'Jerry','jerry',4,'16688886666');
insert into user values(3,'Jock','123456',41,'18812345678');
insert into user values(4,'传智播客','itcast',15,'4006184000');

步骤2:创建SpringBoot工程

步骤3:勾选配置使用技术

说明:

  • 由于MybatisPlus并未被收录到idea的系统内置配置,无法直接选择加入,需要手动在pom.xml中配置添加

步骤4:pom.xml补全依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

说明:

  • druid数据源可以加也可以不加,SpringBoot有内置的数据源,可以配置成使用Druid数据源

  • 从MybatisPlus的依赖关系可以看出,通过依赖传递已经将MyBatis与MyBatis整合Spring的jar包导入,我们不需要额外在添加MyBatis的相关jar包

步骤5:添加MybatisPlus的相关配置信息

resources默认生成的是properties配置文件,可以将其替换成yml文件,并在application.yml文件中配置数据库连接的相关信息:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC 
    username: root
    password: root

说明:serverTimezone是用来设置时区,UTC是标准时区,和咱们的时间差8小时,所以可以将其修改为Asia/Shanghai

步骤6:根据数据库表创建实体类

public class User {   
    private Long id;
    private String name;
    private String password;
    private Integer age;
    private String tel;
    //setter...getter...toString方法略
}

步骤7:创建Dao接口

@Mapper
public interface UserDao extends BaseMapper<User>{
}

步骤8:编写引导类

@SpringBootApplication
//@MapperScan("com.itheima.dao")
public class Mybatisplus01QuickstartApplication {
    public static void main(String[] args) {
        SpringApplication.run(Mybatisplus01QuickstartApplication.class, args);
    }
​
}

说明:Dao接口要想被容器扫描到,有两种解决方案:

  • 方案一:在Dao接口上添加@Mapper注解,并且确保Dao处在引导类所在包或其子包中

    • 该方案的缺点是需要在每一Dao接口中添加注解

  • 方案二:在引导类上添加@MapperScan注解,其属性为所要扫描的Dao所在包

    • 该方案的好处是只需要写一次,则指定包下的所有Dao接口都能被扫描到,@Mapper就可以不写。

步骤9:编写测试类

@SpringBootTest
class MpDemoApplicationTests {
​
    @Autowired
    private UserDao userDao;
    @Test
    public void testGetAll() {
        List<User> userList = userDao.selectList(null);
        System.out.println(userList);
    }
}

说明:

userDao注入的时候下面有红线提示的原因是什么?

  • UserDao是一个接口,不能实例化对象

  • 只有在服务器启动IOC容器初始化后,由框架创建DAO接口的代理对象来注入

  • 现在服务器并未启动,所以代理对象也未创建,IDEA查找不到对应的对象注入,所以提示报红

  • 一旦服务启动,就能注入其代理对象,所以该错误提示不影响正常运行。

查看运行结果:

跟之前整合MyBatis相比,你会发现我们不需要在DAO接口中编写方法和SQL语句了,只需要继承BaseMapper接口即可。整体来说简化很多。

二、MybatisPlus简介

MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率

通过刚才的案例,相信大家能够体会简化开发和提高效率这两个方面的优点。

MyBatisPlus的官网为:https://baomidou.com/

官方文档中有一张很多小伙伴比较熟悉的图片:

从这张图中我们可以看出MyBatisPlus旨在成为MyBatis的最好搭档,而不是替换MyBatis,所以可以理解为MyBatisPlus是MyBatis的一套增强工具,它是在MyBatis的基础上进行开发的,我们虽然使用MyBatisPlus但是底层依然是MyBatis的东西,也就是说我们也可以在MyBatisPlus中写MyBatis的内容。

MyBatisPlus的特性:

  • 无侵入:只做增强不做改变,不会对现有工程产生影响

  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作

  • 支持 Lambda:编写查询条件无需担心字段写错

  • 支持主键自动生成

  • 内置分页插件

  • ……

注意:对于MyBatisPlus的学习,大家可以参考着官方文档来进行学习,里面都有详细的代码案例。

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

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

相关文章

掌握流量密码五要素,抓住底层逻辑,让你更容易获得流量

分享一篇关于流量的文章&#xff1a;流量是一切赚钱项目中最重要的一个要素没有流量&#xff0c;赚钱就是空谈。流量多就赚的多&#xff0c;流量少就赚的少&#xff0c;没有流量就没得赚。因为流量非常重要&#xff0c;所以要打造私域用户池&#xff0c;让流量变成留量。私域用…

微信小游戏开发学习记录2

接上一篇&#xff1a;微信小游戏开发学习记录_寂静流年韶华舞的博客-CSDN博客_微信小游戏开发学习 目录 一、UI系统 1、基础渲染组件-精灵组件 &#xff08;1&#xff09;操作&#xff1a; &#xff08;2&#xff09;Sprite 属性 &#xff08;3&#xff09;渲染模式 2、L…

Qt基于CTK Plugin Framework搭建插件框架--事件监听

文章目录一、前言二、框架事件三、插件事件四、服务事件五、添加事件监听一、前言 CTK一共有三种事件可以监听&#xff1a; 框架事件插件事件服务事件 但是这些事件只有在变化时才能监听到&#xff0c;如果已经变化过后&#xff0c;进入一个稳定的状态&#xff0c;这时才去监…

Android Studio实现一个新闻APP系统源码,仿网易,搜狐等新闻客户端,本科毕业设计必备项目

DavidTGNewsProject ##【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端 完整代码下载地址&#xff1a;Android Studio实现一个新闻APP系统源码 先给大家看一下效果图&#xff1a; 这个项目总体来说虽然不是特别难&#xff0c;但是确实非常常用的功能。是业余时间…

wordcloud | 词云 in python

wordcloud | 词云&#x1f928;wordcloud | 词云&#x1fae1;词云是啥&#x1f636;‍&#x1f32b;️词云的历史&#x1f914;安装 wordcloud 包&#x1f60e;官方文档&#x1f923;一个最简单的例子&#x1f44d;运行结果&#x1f60a;感谢&#x1f928;wordcloud | 词云 赢…

Vue中v-for不要和v-if一起使用

在Vue2中v-for和v-if一起使用时会报错&#xff1a;The xxx variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should not mix v-for with v-if原因&#xff1a;Vue2中当 v-if 与 v-for 一起使用时&…

4张图搞懂Salesforce的认证体系(附新手考证攻略)

Salesforce认证计划概述最近这一两年&#xff0c;Salesforce的Trailhead和认证太热门了&#xff0c;小伙伴们前赴后继地刷Badge拿认证&#xff0c;可以考的认证也随着产品家族的增加而增加&#xff0c;从十几年前的几个认证&#xff0c;增长到现在的40多个认证。与其他应用平台…

2023年自学网络安全珍藏版路线,高效入门

前言 【一一帮助安全学习一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 ④50份安全攻防面试指南 ⑤安全红队渗透工具包 ⑥网络安全必备书籍 ⑦100个漏洞实战案例 ⑧安全大厂内部视频资源 ⑨历年CTF夺旗赛题解析 01 什么是网络安全 网络安全可以基于攻击…

Seq2Seq增加attention机制的原理说明

以中文翻译为英文为例讲解seq2seq的原理&#xff0c;以及增加attention机制之后的seq2seq优化版本。 文本参考: Pytorch实现Seq2Seq&#xff08;Attention&#xff09;字符级机器翻译_pytorch seq2seq_孤独腹地的博客-CSDN博客 https://github.com/datawhalechina/learn-nlp…

Dbeaver连接ES问题一站解决

前言 最近几天一直做ES的TPS测试&#xff0c;每次看数据ES的数据都在嫌麻烦&#xff08;在postman指定索引通过url请求查看数据&#xff09;。最后决定还是整整Dbeaver连接ES。 一、当前境况 1、ES版本比较老&#xff0c;还是6.4.2的 2、Dbeaver直接连接已经提示支持8.x版本 3…

【自学Python】Python格式化输出

Python格式化输出 Python格式化输出教程 在 Python 中&#xff0c;print() 函数用于打印相应的信息到终端控制台&#xff0c;同时我们还可以通过 print() 函数的 % 占位符&#xff0c;来对输出进行格式化&#xff0c;即按照我们指定的格式进行输出。 Python格式化输出占位符…

灵能传输(思维 贪心)

题目如下&#xff1a; 思路 or 题解 如果我们可以发现前缀和&#xff0c;对于这个题有特殊的性质&#xff0c;这个题就不能做出来了&#xff0c;不然你会想我一样卡好长时间&#xff0c;从不知所措。 ai1ai,ai−1ai,ai−2aia_{i1}a_i,a_{i−1}a_i,a_i−2a_iai1​ai​,ai−1​a…

html 获取视频文件的宽高尺寸,怎么获取视频的宽度-解决方案

html代码 <video id"video" loop preload"auto" autoplay><source src"1.mp4" type"video/mp4">您的浏览器不支持Video标签。 </video> js代码 var videodocument.querySelector("#video");//当前视频…

Unity 之 资源加载 -- 可寻址系统使用介绍 -- 入门(三)

可寻址系统设置面板使用介绍介绍 -- 入门&#xff08;三&#xff09;一&#xff0c;可寻址系统目录介绍二&#xff0c;可寻址系统面板介绍2.1 Groups - 资源组2.2 Settings - 设置2.3 Profiles - 配置文件2.4 Event Viewer - 事件查看器2.5 Analyze - 分析工具2.6 Hosting - 托…

springAOP的注解使用

注解使用导入依赖常用注解&#xff1a;注意&#xff0c;给测试类起名字的时候千万不要定义成Test&#xff0c;测试的方法不可以有参数&#xff0c;不可以有返回值在使用注解的时候&#xff0c;还需要告诉spring应该从哪个包开始扫描,一般在定义的时候都写上相同包的路径需要导入…

GitLab安装到实战

简介 关于gitlab的入门与实战&#xff0c;这里使用的是docker安装。2核4g的话不太行。 安装 由于这里我是学习环境,所以买的是抢占式&#xff0c;配置也不是很高。 购买服务器示例 Docker安装步骤 1.安装docker yum install -y docker 2.启动docker systemctl start doc…

【JavaEE】进程和线程

目录 1. 进程 1.1 PCB 1.1.1. PID 1.1.2. 内存指针 1.1.3. 文件描述符表 1.1.4.进程调度相关的属性 1.2 进程的虚拟地址空间 1.3 进程间的通信 2. 线程 2.1 线程与进程之间的联系 2.2 多线程与多进程 1. 进程 在了解线程之前&#xff0c;我们首先要了解进程&…

RHCE学习笔记-253-3

system monitoring Introduction to system monitoring security breaches or system malfunctions can be detected with regular system monitoring system monitoring includes: file system monitoring log file analysis process monitoring file system analysis 如果定期…

谷粒商城-基础篇-Day08-调试会员等级相关接口

在P83级中&#xff0c;点击发布商品时没有出现请求 则需要解决 PubSub is not definded这个问题 PubSub是用来检测选择分类的值变动的。 选择分类值变动&#xff0c;会请求后台接口&#xff0c;动态更新选择品牌的选项。 安装依赖 npm install --save pubsub-js&#xff08…

算法队伍的搭建

&#x1f31e;欢迎来到数据结构的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff…