一文入门mybatis-plus

news2025/7/7 4:08:38

mybatis-plus

mybatis-plus官网
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生.

可以说呢,在MP基础上还可以继续使用mybatis的特性。
MP只给出单表查询的接口,复杂的业务还是需要我们自己来的。
其实我并不是很喜欢这个工具包。sql写的少了sql会忘,以后出新的框架,很难快速的去兼容。

入门配置

1.创建springboot模块
在这里插入图片描述
Group ,package name,Artifict 很熟悉吧。
2.勾选sql里的驱动模块和mybatis。
在这里插入图片描述
3.导入依赖包

<dependencies>
		//mybatis-springboot启动依赖
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
		//mysql连接依赖
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        //MP的依赖包
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        //springboot整合的测试依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        //数据库连接池
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.12</version>
        </dependency>
    </dependencies>

4.创建数据库的表

CREATE TABLE `t_user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO t_user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

5.项目结构
在这里插入图片描述

5.pojo实体类

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

@Data
@TableName("t_user") //设置表名
public class User {

    //将属性所对应的字段设置为主键
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    private Long id;

    @TableField(value = "name")
    private String name;

    private Integer age;

    private String email;
    @TableField("Deleted")
    @TableLogic(value = "0",delval="1")
    private Integer deleted;
}

注意
@Data是lombok包下的注解。标注实体类,可以不用写构造器,get和set方法,toString方法。
@TableName(“t_user”) //设置对应数据库表名的
其他的使用的再说。
6.配置文件
数据库username和password写自己的哈。
还配置mybatis和MP的日志

spring:
  datasource:
    #配置数据库连接池
    type: com.alibaba.druid.pool.DruidDataSource
    #驱动类,url,username,password
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm?serverTimeZone=UTC
    username: root
    password: 1234

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus:
  global-config:
    db-config:
      #设置表名前缀
      table-prefix: t_
      #设置主键生成策略
      id-type: assign_id
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.atguigu.pojo

7.定义mapper接口
BaseMapper是MP提供的接口,里面有很多的api供我们使用。
@Mapper注解标识一下。可以被springboot识别到。

import com.atguigu.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

@Mapper
public interface userMapper extends BaseMapper<User> {

    Map<String,Object> selectMapById(Long id);

    /**
     * 通过年龄查询并分页
     * @param page MP 所提供的的分页对象,必须放第一个位置
     * @param age
     * @return
     */
    Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
}

8.测试

import com.atguigu.mapper.userMapper;
import com.atguigu.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.*;

@SpringBootTest
class MybatisplusDemo2ApplicationTests {

    @Autowired
    private userMapper userMapper;

    @Test
    public void testGetallUsers() {

        List<User> users = userMapper.selectList(null);

        for(User user:users) System.out.println(user);
    }

    /**
     * 测试添加功能
     * 与此同时,可以获取新增数据的id
     */
    @Test
    public void testInsertUser(){
        User user = new User();
        user.setName("张三");
        user.setAge(23);
        user.setEmail("123456@qq.com");
        int insert = userMapper.insert(user);
        System.out.println(insert);
        System.out.println("id==>"+user.getId());
    }

    /**
     * 根据id来删除信息
     */
    @Test
    public void testDeleteById(){

        int i = userMapper.deleteById(1592081315866370050l);
        System.out.println(i);
    }
    /**
     * 根据map来删除信息
     * 根据map中的条件来删除信息
     * key--字段名 value--条件值
     */
    @Test
    public void testDeleteByMap(){
        Map<String, Object> map=new HashMap<>();
        map.put("name","张三");
        map.put("age","23");
       userMapper.deleteByMap(map);
    }

    /**
     *  通过多个id来删除
     */
    @Test
    public void testDeleteByCollection(){
        List<Long> list=new ArrayList<>();
        list.add(1592425378192941058l);
        list.add(1592425378192941059l);
        int i = userMapper.deleteBatchIds(list);
        System.out.println(i);
    }

    /**
     *修改用户信息
     */
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(4l);
        user.setName("lisi");
        user.setEmail("123443@qq.com");
        int i = userMapper.updateById(user);
        System.out.println(i);
    }

    /**
     * 根据id来查询信息
     */
    @Test
    public void testSelectByID(){
        User user = userMapper.selectById(1);
        System.out.println(user);
    }
    @Test
    public void testSelectByIDs(){
        List<Long> list=new ArrayList<>();
        list.add(1l);
        list.add(2l);
        list.add(3l);
        List<User> users = userMapper.selectBatchIds(list);
        for(User user:users) System.out.println(user);
    }

    /**
     * 根据map集合中的信息来查询
     */
    @Test
    public void testSelectByMap(){
        Map<String,Object> map=new HashMap<>();
        map.put("age",20);
        List<User> users = userMapper.selectByMap(map);
        System.out.println(users);
    }

    /**
     * 测试自定义sql功能
     * mp对原生的mybatis只做了增强,不做影响
     */
    @Test
    public void testSelectById(){
        Map<String, Object> map = userMapper.selectMapById(1l);
        System.out.println(map);
    }

}

MP的条件查询可以通过QueryWrapper来完成!此外MP还有分页功能。
通过Page类辅助完成!
好了,MP入门就到这里了!!!

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

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

相关文章

一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析

最近我们线上有同学反馈&#xff0c;java 服务在接入了支持预发的 javaagent 以后会出现缓存的内存增长&#xff0c;去掉 agent 启动以后内存增长正常。于是分析了一下这个问题&#xff0c;写了这篇文章。 备注&#xff1a;JVM 堆内存最大 1000M 主要会涉及下面这些内容&#…

防火墙基础技术

目录 一、内容概述 二、防火墙概述 防火墙的应用 防火墙的本质 防火墙的发展历程 防火墙特征 防火墙分类 包过滤防火墙&#xff1a; 包过滤防火墙的缺点&#xff1a; 代理防火墙&#xff1a; 代理防火墙的缺点&#xff1a; 状态检测防火墙&#xff1a; 状态检测防火…

【Linux修炼手册:基本指令(下)】

目录 1 man指令&#xff08;重要&#xff09; 2 more指令 3 less指令&#xff08;重要&#xff09; 4 head指令和tail指令 5 时间相关的指令 6 Cal指令 7 find指令&#xff1a;&#xff08;灰常重要&#xff09; -name 8 grep指令 9 zip/unzip指令 10 其他常见命令 1…

SiPM使用总结

1、SiPM的电子模型 首先我们来看一下二极管的雪崩电子模型&#xff0c;电子模型和雪崩时的电流波形如下图所示&#xff0c; 电流上升的快慢是由电容的充放电速度决定的&#xff0c;充电的时常数TdRS*Cd&#xff0c;放电的时常数 TqRq*Cd&#xff0c;这里Rq>>Rs&#xf…

《Hidden Markov Map Matching Through Noise and Sparseness》读书笔记

摘要 Our test shows how the algorithm breaks down as the sampling rate of the GPS is reduced. We also test the effect of increasing amounts of additional measurement noise in order to assess how well our algorithm could deal with the inaccuracies of other…

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素 甘露糖修饰阿奇霉素&#xff0c;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等。在水中有很好的溶解性&#xff0c;取用一定要干燥&#xff0c;避免频繁的溶解和冻&#xff0c;提供…

2022年11月华南师范大学自考本科计算机信息管理系统加考实践题目

《 管理信息系统 》课程试卷 答卷提交说明&#xff1a; 在access环境下填写SQL命令完成以下实践的题目&#xff0c;并返回执行结果的截图&#xff0c;答卷的答题格式如下&#xff0c;包括三部分&#xff1a;题目&#xff0c;SQL文本代码&#xff0c;代码运行截图&#xf…

负载均衡架构

整体架构 设计关键点 4级负载架构 3级负载架构 2级负载架构 技术剖析 DNS 应用 地理位置和机房级别的负载均衡 优点 标准协议 缺点 能力有限&#xff0c;不够灵活DNS劫持DNS缓存 HTTP-DNS 应用场景 App、客户端 优缺点 可以根据业务和团队技术灵活定制非标协议、不通…

企业微信汇报怎么定时提醒?如何导出?

汇报工作的重要性在哪里&#xff1f; 作为职场人&#xff0c;能够准确及时的和自己的领导汇报自己的工作&#xff0c;不仅仅是我们工作的一部分&#xff0c;也是我们和领导工作沟通的一种十分重要的形式。汇报工作的重要性主要体现在&#xff1a; ● 可以让你的领导知道你日常…

算法刷题日志——贪心

文章目录分发糖果根据身高重建队列分发糖果 相邻的学生中&#xff0c;评分高的学生必须获得更多的糖果 &#xff0c;所以需要分别从左往右和从右往左遍历&#xff0c;然后取两次遍历结果的最大值就是最少糖果的数目了。 class Solution {public int candy(int[] ratings) {int[…

xgplayer西瓜视频插件引用后因视频格式引起问题?

起因是我的医疗公众号项目为了应对新需求引入了西瓜视频插件&#xff0c;但后台配置视频文件后有的可以正常展示&#xff0c;有的却是黑屏。我这边的安卓和ios端app都嵌套了我写的h5页面。 初步调查&#xff1a; 个别课程在手机上看着确实不能播放&#xff0c;在电脑上播放是…

大麦 Android 选座场景性能优化全解析

作者&#xff1a;于世雷(蓝彻) 通常情况下移动端APP由于受到设备性能所限一般较少有场景会处理超量数据&#xff0c;更多的是将复杂数据处理交付给服务端。本质上降低终端强数据处理是很有必要的&#xff0c;降低CPU使用率、减少内存抖动可以大幅提升APP使用体验。但是有时移动…

Node.js学习记录

一、Node.js简介 浏览器中JavaScript在浏览器中的运行环境&#xff08;代码正常运行需要的环境&#xff09;&#xff0c; Node.js后端的运行环境&#xff0c;通过Node.js可以实现用JavaScript后端开发 Node.js是一个基于Chrome V8引擎的JavaScript运行环境 二、fs文件系统模块 …

腾讯云短信告警

腾讯云短信告警 密钥获取地址&#xff1a;https://console.cloud.tencent.com/cam/capi #!/bin/python #-*- coding: utf-8 -*-import json, sys from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tenc…

来!简单了解一下计算机发展史!

一、古代的运算工具 1.双手 当我们还是远古人的时候&#xff0c;我们用双手来进行计算 2.结绳、垒石 渐渐的&#xff0c;又出现了结绳记事和垒石记事 3.春秋战国时期 — 算筹 春秋战国的时候&#xff0c;广泛使用的算筹&#xff0c;根据不同的排列来表示不同的数字并进行计…

JavaScript基础(11)_方法、枚举对象中的属性、作用域

函数可以成为对象的属性。如果一个函数作为一个对象的属性保存&#xff0c;那么我们称这个函数是这个对象的方法&#xff0c;调用这个函数就是调用对象的方法(method) 比如&#xff1a;console.log()调用console对象的log方法。document.write() 调用document对象的write方法。…

RabbitMQ详解

RabbitMQ详解 文章目录RabbitMQ详解一、AMQP 和 JMS1.1 JMS1.2 AMQP1.3 两者对比二、RabbitMQ消息模型2.1 基本消息模型2.2 工作消息模型2.3 订阅模型2.3.1 Fanout 订阅模型2.3.2 Direct 订阅模型2.3.3 Topic 订阅模型三、消息持久化3.1 交换机持久化3.2 队列持久化3.3 签收机制…

玩推特营销必知的基础常识上篇

现如今&#xff0c;Twitter已从一个让人们分享其想法的地方变成了一个强大的营销&#xff0c;该可让品牌实时与受众交流。每月活跃用户超过3.21亿&#xff0c;很容易看出为什么公司在所有这些时间之后仍继续使用Twitter。但是&#xff0c;仅仅偶尔发出有关趋势的话题&#xff0…

S标签肽,H2N-KETAAAKFERQHMDS-OH

S Tag Peptide 是一种合成的多肽&#xff0c;由15个氨基酸残基构成。S Tag Peptide is a 15 amino acid peptide derived from RNase A. 编号: 188345中文名称: 多肽标签S-tag 、S标签肽英文名: S-tag peptide单字母: H2N-KETAAAKFERQHMDS-OH三字母: H2N-Lys-Glu-Thr-Ala-Ala-A…

mysql 从入门到放弃— 数据库设计

之前我们已经了解了 mysql 的基本增删改查 mysql 从入门到放弃——基本约束以及语法 现在我们系统的进行一遍数据库的设计&#xff0c;建议收藏 ~~ 直接进入主题 来个例子&#xff1a;下面我们将围绕这个例子来进行数据库的设计 我们就来简单的模拟 大学教务处的选课 系统 …