MyBatis-PlusDruid数据源

news/2024/9/18 1:39:30/ 标签: java, spring boot

MyBatis-Plus简介


MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它在MyBatis的基础上进行了增强而不改变其原有的功能,旨在简化开发、提高效率。以下是对MyBatis-Plus的详细简介:

一、基本概述


定义:MyBatis-Plus是在MyBatis基础上进行增强的一个框架,通过提供一系列的特性和工具,极大地简化了CRUD(创建、读取、更新、删除)操作和其他数据库交互的复杂性。
目标:为开发者提供更加便捷、高效的数据库操作方式,减少重复性代码编写,提高开发效率。


二、主要特性


无侵入:MyBatis-Plus的引入不会对现有工程产生影响,它只做增强而不做改变,使得集成和使用变得非常简单。
损耗小:启动即会自动注入基本CRUD,性能基本无损耗,直接面向对象操作,BaseMapper接口中包含了大量的基本CRUD方法。
强大的CRUD操作:
内置通用Mapper和通用Service,通过少量配置即可实现单表大部分CRUD操作。
强大的条件构造器,支持链式调用,满足各类复杂的查询需求。
支持Lambda形式调用:通过Lambda表达式,可以方便地编写各类查询条件,无需担心字段写错。
支持主键自动生成:支持多达4种主键策略(包括分布式唯一ID生成器),可自由配置,完美解决主键问题。
支持ActiveRecord模式:实体类只需继承Model类即可进行强大的CRUD操作。
内置代码生成器:采用代码或Maven插件可快速生成Mapper、Model、Service、Controller层代码,支持模板引擎,提供了丰富的自定义配置选项。
内置分页插件:基于MyBatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询。分页插件支持多种数据库。
内置性能分析插件:可输出SQL语句及其执行时间,帮助开发者快速定位慢查询。
内置全局拦截插件:提供全表delete、update操作智能分析阻断功能,也可自定义拦截规则,预防误操作。


三、与MyBatis的区别


语法简化:MyBatis-Plus通过使用注解和API简化了MyBatis的配置和操作,减少了开发者的编码量。
自动代码生成:MyBatis-Plus提供了代码生成器,可以根据数据库表自动生成对应的实体类、Mapper接口和Mapper XML文件,减少了手动编写的工作量。
分页插件:MyBatis-Plus内置了分页插件,而MyBatis本身需要手动编写分页逻辑。
条件查询:MyBatis-Plus提供了强大的条件查询功能,支持链式调用和Lambda表达式,使得查询条件更加清晰易读。


四、应用场景


MyBatis-Plus广泛应用于各种需要数据库交互的Java项目中,特别是在企业级应用开发中,其强大的功能和便捷的操作方式极大地提高了开发效率

综上所述,MyBatis-Plus是一个功能强大、易于使用的MyBatis增强工具,它通过提供一系列特性和工具,简化了数据库操作,提高了开发效率。

Lormbok简介


Lombok是一款Java编程工具,其主要作用在于简化Java代码的编写,提高开发效率。具体来说,Lombok的作用可以归纳为以下几点:

自动生成常用方法:


Getter和Setter方法:

通过在类的属性上添加@Getter和@Setter注解,Lombok可以自动生成这些属性的getter和setter方法,减少了手动编写这些方法的必要。


toString方法:

@ToString注解可以自动生成包含所有(非静态)属性名称和值的toString方法,方便调试和日志记录。


equals和hashCode方法:

@EqualsAndHashCode注解可以自动生成equals和hashCode方法,这对于需要将对象用作哈希表键或比较对象是否相等时非常有用。
自动生成构造函数:


无参构造函数:

@NoArgsConstructor注解可以自动生成一个无参构造函数。


全参构造函数:

@AllArgsConstructor注解可以自动生成一个包含所有属性作为参数的构造函数,简化了对象的创建过程。



@Slf4j、@Log4j2

等注解可以自动生成日志变量(如log),方便在代码中记录日志。
减少样板代码:
Lombok通过自动生成这些常用的方法和构造函数,显著减少了Java代码中的样板代(boilerplate code),使代码更加简洁和易于维护。
提高开发效率:
开发人员可以专注于业务逻辑的实现,而不是花费大量时间在编写和维护这些重复的代码上,从而提高了开发效率。
需要注意的是,Lombok仅在编译时起作用,不会对运行时的代码产生影响。生成的代码会在编译时自动插入到编译后的类文件中。此外,由于Lombok通过注解来工作,因此它依赖于IDE(如IntelliJ IDEA、Eclipse等)中的Lombok插件来解析这些注解并生成相应的代码。

综上所述,Lombok是一个强大的Java编程工具,它通过自动生成常用方法和构造函数、支持建造者模式、提供日志支持等功能,显著简化了Java代码的编写过程,提高了开发效率。

五 、添加 关键依赖包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ktjiaoyu</groupId><artifactId>MyBatis-Plus</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>MyBatis-Plus</name><description>MyBatis-Plus</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.18</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
}

 application.properties添加相关配置:

spring.application.name=MyBatis-Plus
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10spring.datasource.druid.max-wait=60000spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=adminspring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
#logging.level.root=warn
#logging.level.com.ktjiaoyu.crm.mapper=trace
#logging.pattern.console=%p%m%n

 启动类:

java">package com.ktjiaoyu.crm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.ktjiaoyu.crm.mapper")
public class MyBatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusApplication.class, args);}}


 编写实体类:User

java">package com.ktjiaoyu.crm.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("sys_user")
public class User implements Serializable {@TableId(type = IdType.AUTO)@TableField("usr_id")private Long usrId;@TableField("usr_name")private String usrName;private String usrPassword;private Long usrRoleId;private Integer usrFlag;public User(String usrName, String usrPassword, Long usrRoleId, Integer usrFlag) {this.usrName = usrName;this.usrPassword = usrPassword;this.usrRoleId = usrRoleId;this.usrFlag = usrFlag;}
}


 

 编写Mapper接口

java">package com.ktjiaoyu.crm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ktjiaoyu.crm.pojo.User;
public interface UserMapper extends BaseMapper<User> {}


 

 


http://www.ppmy.cn/news/1525413.html

相关文章

主流无线物联网通信技术有哪些

主流无线物联网通信技术主要包括以下几种&#xff0c;以下是对它们的详细分析和介绍&#xff1a; 一、短距离无线通信技术 蓝牙&#xff08;Bluetooth&#xff09; 蓝牙是一种大容量近距离无线数字通信技术标准&#xff0c;旨在实现最高数据传输速率1Mbps、最大传输距离为10…

高效执行自动化用例:分布式执行工具pytest-xdist实战

01声明 在介绍pytest-xdist时&#xff0c;不讲任何原理&#xff0c;需要看原理的请移至官方&#xff1a;pytest-xdist PyPI 当我们自动化测试用例非常多的时候&#xff0c; 一条条按顺序执行会非常慢&#xff0c;pytest-xdist的出现就是为了让自动化测试用例可以分布式执行&am…

快速入门游戏领域,开发游戏需要哪些技术?

在这个充满创意和技术的时代&#xff0c;游戏行业成为众多创新人才追求梦想的热土。对于准备踏入这个充满挑战与机遇的领域的新人来说&#xff0c;了解游戏开发流程是至关重要的。 游戏市场蓬勃发展&#xff0c;游戏行业未来行情可观&#xff0c;在这个充满创意和技术的时代&a…

OpenCV进行灰度变换

在Python中,处理图像(包括灰度变换)通常通过第三方库来完成,比如OpenCV和Pillow(PIL的更新版)。这里将分别介绍如何使用这两个库来进行灰度变换。 使用OpenCV进行灰度变换 OpenCV是一个开源的计算机视觉和机器学习软件库,它提供了大量图像处理的功能。使用OpenCV将图像…

git分支合并

git分支合并 说明步骤 说明 假如目前有两个分支 : main分支 和 master分支,你要将main分支合并到master分支,现在你正处于main分支. $ git branch * mainmaster步骤 切换到 master 分支&#xff1a; 首先&#xff0c;你需要切换到 master 分支&#xff0c;因为合并操作是在目…

Python “集合” 100道实战题目练习,巩固知识、检查技术

本文主要是作为Python中列表的一些题目&#xff0c;方便学习完Python的集合之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的列表&#xff0c;推荐…

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

大模型能否真正理解上下文?

人工智能咨询培训老师叶梓 转载标明出处 尽管对LLMs的评估涵盖了自然语言处理&#xff08;NLP&#xff09;的各个领域&#xff0c;但对它们理解上下文特征的语言能力的探讨却相对有限。为了填补这一空白&#xff0c;乔治城大学和苹果公司的研究者们共同提出了一种新的上下文理解…

在亚马逊云科技上利用Graviton4代芯片构建高性能Java应用(上篇)

简介 在AI迅猛发展的时代&#xff0c;芯片算力对于模型性能起到了至关重要的作用。一款能够同时兼具高性能和低成本的芯片&#xff0c;能够帮助开发者快速构建性能稳定的生成式AI应用&#xff0c;同时降低开发成本。今天小李哥将介绍亚马逊推出的4代高性能计算处理器Gravition…

基于Python实现一个庆祝中秋节的小程序

功能包括&#xff1a; 使用复杂的库来计算农历日期&#xff1a;可以使用 lunarcalendar 库来计算农历日期。提供更多的祝福语&#xff1a;可以通过随机选择祝福语来增加趣味性。加入图形用户界面 (GUI)&#xff1a;可以使用 tkinter 库来创建一个简单的图形用户界面。 我们可…

数据库设计中的需求分析

在数据库设计中&#xff0c;需求分析 是至关重要的一步。它不仅是设计过程的起点&#xff0c;也是后续步骤的基础。如果需求分析出现问题&#xff0c;那么后续所有设计阶段的结果都会受到影响&#xff0c;最终可能导致整个设计返工&#xff0c;耗费大量时间和资源。因此&#x…

u盘怎么重装系统_u盘重装win10系统详细图文教程【支持新旧机型】

u盘怎么重装系统&#xff1f;对于电脑小白来说用u盘安装系统还是有点难度的&#xff0c;有些电脑小白采用在线一键重装的方式安装系统&#xff0c;结果在安装过程中出现各种问题进不了系统了。所以建议小白采用U盘方式安装系统比较保险&#xff0c;因为这样哪怕安装失败还可以通…

构建有温度的用户关系:开源 AI 智能名片、链动 2+1 模式与 S2B2C 商城小程序的作用

摘要&#xff1a;本文探讨了在当今商业环境中&#xff0c;不能仅仅依靠产品打造连接&#xff0c;而应通过有温度的营销构建用户关系。引入开源 AI 智能名片、链动 21 模式及 S2B2C 商城小程序等创新元素&#xff0c;阐述它们在营销连接中的作用&#xff0c;强调只有通过营销连接…

UE5-俯视角色移动(蓝图)01

效果如下&#xff1a; 蓝图节点如下&#xff1a; 使用示例自带的移动蓝图&#xff0c;发现角色只能平移&#xff0c;不会转向。必须勾选以下选项&#xff1a; 点击蓝图-》组件-》SpringArm节点。在细节中找到摄像机设置&#xff0c;勾选以下&#xff1a; 在 点击蓝图-》组件-…

【系统架构设计】系统的可靠性分析与设计

【系统架构设计】系统的可靠性分析与设计 可靠性概述系统故障模型系统配置方法组成结构‌‌功能与应用场景‌‌技术含量与成本‌ 系统可靠性 可靠性概述 这里有几个名词要做好区分&#xff0c;可靠度是某一个时间区间内能正常运行的概率&#xff1b;可用度是某一时刻可运行的概…

重头开始嵌入式第三十九天(数据结构 栈)

栈 目录 栈 栈的定义 栈的分类 栈的类型 顺序栈 1.栈的创建 2.栈的销毁 3.入栈 4.出栈 5.判断栈满 6.判断栈空 7.获得栈顶元素 8.判断栈长 链栈 1.栈的创建 2.栈的销毁 3.入栈 4.出栈 5.判断栈满 6.判断栈空 7.获得栈顶元素 8.判断栈长 栈的定义 栈是一…

‘“node“‘ �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���

错误信息 使用vscode提交前端代码到git时&#xff0c;报下面的错&#xff0c;一直不知道啥原因&#xff0c;后来找到了个临时解决方案。。。 vscode解决方案 package.json文件中&#xff0c;去掉hooks的配置。 Idea解决方案 网上有说idea的解决方案的&#xff1a;就是提…

【JavaSE系列】注解

目录 前言 一、概述 二、Java预置注解 三、自定义注解 四、元注解 1. Retention 2. Target 3. Documented 4. Inherited 5. Repeatable 五、反射注解 总结 前言 随着Java语言的发展&#xff0c;注解&#xff08;Annotations&#xff09;逐渐成为了Java编程不可或…

如何在安卓設備上更換IP地址?

IP地址是設備在網路中的唯一標識&#xff0c;通過IP地址&#xff0c;網路能夠識別並與設備進行通信。本文將詳細介紹在安卓設備上更換IP地址的幾種方法。 在安卓設備上更換IP地址的方法 1. 使用Wi-Fi網路更換IP地址 最簡單的方法是通過Wi-Fi網路更換IP地址。步驟如下&#x…

【附源码】Python :链表合成(升序)

系列文章目录 Python 算法学习&#xff1a;链表合成&#xff08;升序&#xff09; 文章目录 系列文章目录一、算法需求二、方法源码方法1&#xff1a;迭代方法2&#xff1a;递归方法3&#xff1a;函数sorted方法4&#xff1a;双指针方法5&#xff1a;heapq模块 总结 一、算法需…