iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Mybatis-Plus的示例分析
  • 783
分享到

Mybatis-Plus的示例分析

2023-06-20 19:06:13 783人浏览 安东尼
摘要

这篇文章主要介绍了mybatis-Plus的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mybatis-Plus1.快速入门地址:安装 | MyBatis-Plus

这篇文章主要介绍了mybatis-Plus的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Mybatis-Plus

1.快速入门地址:安装 | MyBatis-Plus (baomidou.com)

2.创建数据库mybatis-plus

CREATE TABLE user(    id BIGINT(20) NOT NULL COMMENT '主键ID',    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',    age INT(11) NULL DEFAULT NULL COMMENT '年龄',    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',    PRIMARY KEY (id));
INSERT INTO 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');

以上数据的运行均在cmd命令运行

3.创建SpringBoot项目,配置yml文件

spring:  datasource:    username: root    passWord: 123456    url: jdbc:mysql://localhost:3306/mybatis_plus?userSSL=false&Unicode=true&CharacterEncoding=utf-8&serverTimezone=GMT%2B8    driver-class-name: com.Mysql.cj.jdbc.Driver

4.导入依赖

<?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.5.2</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.sxau</groupId>    <artifactId>mybatis_plus</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>mybatis_plus</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-WEB</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency><!--    mysql-connector-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency><!--        mybatis-plus-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.4.0</version>        </dependency><!--        lombok-->        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

5.创建pojo包,新建User实体类

import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class User {    //主键自增配合 数据库主键自增使用    @TableId(type = IdType.AUTO)    private Long id;    private String name;    private int age;    private String email;}

6.创建mapper包,新建UserMapper实体类

package com.sxau.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.sxau.pojo.User;import org.springframework.stereotype.Repository;@Repositorypublic interface Usermapper extends BaseMapper<User> {    //所有CRUD操作已经完成    //不需要一大堆的。xml配置文件}

7.在主启动类中加上Mapperscan注解扫描mapper映射文件

@MapperScan("com.sxau.mapper")

8.查询所有数据测试

package com.sxau.mybatis_plus;import com.baomidou.mybatisplus.annotation.IdType;import com.sxau.mapper.Usermapper;import com.sxau.pojo.User;import org.junit.jupiter.api.Test;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@MapperScan("com.sxau.mapper")@SpringBootTestclass MybatisPlusApplicationTests {    @Autowired    Usermapper usermapper;    @Test    void contextLoads() {        List<User> users = usermapper.selectList(null);        users.forEach(System.out::println);    }}

遇到这种情况,直接解决

Mybatis-Plus的示例分析

Mybatis-Plus的示例分析

9.开启mybatis-plus日志配置文件

#mybatis-plus日志配置文件mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Mybatis-Plus的示例分析

10.主键生成策略

默认 ID_WORKER 全局唯一id 对应数据库中的主键(uuid.自增id.雪花算法.redis.ZooKeeper)

分布式系统唯一id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html

雪花算法?Twitter的snowflake算法)

snowflake是Twitter开源分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0.可以保证几乎全球唯一

public enum IdType {    AUTO(0),//数据库ID自增      NONE(1),//该类型为未设置主键类型          INPUT(2),//手动输入ID       //该类型可以通过自己注册自动填充插件进行填充  //以下3种类型、只有当插入对象ID 为空,才自动填充。         ID_WORKER(3),//全局唯一ID (idWorker)          UUID(4),//全局唯一ID (UUID)              ID_WORKER_STR(5);//字符串全局唯一ID (idWorker 的字符串表示) }

11.增加数据测试类

//主键自增配合 数据库主键自增使用@TableId(type = IdType.AUTO)

Mybatis-Plus的示例分析

自增搭配使用

Mybatis-Plus的示例分析

12.修改数据测试类

@Test    void updateUser(){        User user = new User();        user.setId(new Long(201916129));//        user.setName("张三");        user.setAge(18);        usermapper.updateById(user);    }

动态拼接sql—简化了平常动态配置sql的麻烦问题

Mybatis-Plus的示例分析

Mybatis-Plus的示例分析

13.自动填充

方式一:数据库级别

设置默认时间,在navicat创建数据库的时候想要该字段的值为插入数据时候的时间:

在default中写:CURRENT_TIMESTAMP即可

Mybatis-Plus的示例分析

Mybatis-Plus的示例分析

private Date createTime;    //开始时间    private Date updateTime;  //更新时间

Mybatis-Plus的示例分析

方式 二:代码级别

Mybatis-Plus的示例分析

全部设置为null

@TableField(fill = FieldFill.INSERT)private Date createTime;    //开始时间@TableField(fill = FieldFill.INSERT_UPDATE)private Date updateTime;  //更新时间

编写handle包,新建myMetaObjectHandle.java

package com.sxau.handle;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.reflection.MetaObject;import org.springframework.stereotype.Component;import java.util.Date;@Slf4j@Component //把处理器加到ioc容器中public class myMetaObjectHandle implements MetaObjectHandler {    //插入时的填充策略    @Override    public void insertFill(MetaObject metaObject) {        log.info("Start insert fill.... ");        this.setFieldValByName("createTime",new Date(),metaObject);        this.setFieldValByName("updateTime",new Date(),metaObject);    }    //更新时的填充策略    @Override    public void updateFill(MetaObject metaObject) {        log.info("Start update fill.... ");        this.setFieldValByName("updateTime",new Date(),metaObject);    }}

非常关键的一步

在springboot启动的主类上加载component组件

@ComponentScan("com.sxau.handle")

测试类

@Test    void insertUser(){        User user = new User();//      user.setId(new Long(201916127));        user.setName("渣渣辉");        user.setAge(10);        user.setEmail("1016942589@qq.com");        usermapper.insert(user);        System.out.println(user.toString());    }    @Test    void updateUser(){        User user = new User();        user.setId(new Long(201916137));        user.setName("李丽");        user.setAge(20);        usermapper.updateById(user);    }

Mybatis-Plus的示例分析

14.乐观&悲观锁

乐观锁: 顾名思义十分乐观,他总是认为不会出现问题,无论干什么都不去上锁!如果出现了问题,再次更新值测试

悲观锁;顾名思义十分悲观,他总是认为出现问题,无论干什么都会上锁!再去操作!

我们这里主要讲解 乐观锁机制!

乐观锁实现方式:

  • 取出记录时,获取当前version

  • 更新时,带上这个version

  • 执行更新时,set version = newVersion where version = oldVersion

  • 如果version不对,就更新失败

15.查询操作

//测试批量查询@Testpublic void selectByBatchId(){    List<User> users = usermapper.selectBatchIds(Arrays.asList(1, 2, 3));    users.forEach(System.out::println);}//多条件查询用map@Testpublic void selectByBatchIds(){    HashMap<String, Object> map = new HashMap<>();    map.put("age",20);    List<User> users = usermapper.selectByMap(map);    for (User user : users) {        System.out.println(user);    }}

感谢你能够认真阅读完这篇文章,希望小编分享的“Mybatis-Plus的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Mybatis-Plus的示例分析

本文链接: https://www.lsjlt.com/news/299398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis-Plus的示例分析
    这篇文章主要介绍了Mybatis-Plus的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mybatis-Plus1.快速入门地址:安装 | MyBatis-Plus...
    99+
    2023-06-20
  • Mybatis Plus逆向工程的示例分析
    这篇文章主要介绍Mybatis Plus逆向工程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、创建数据库注:给tbl_emp的表创建外键数据库以及表的建立:二、配置pom.xml 文件&nbs...
    99+
    2023-06-26
  • mybatis-plus使用问题的示例分析
    这篇文章主要为大家展示了“mybatis-plus使用问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis-plus使用问题的示例分析”这篇文章吧。一、多表联合分页查询多表...
    99+
    2023-06-29
  • mybatis-plus查询源码的示例分析
    这篇文章主要介绍mybatis-plus查询源码的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!配置详情pom.xmldependency>     &...
    99+
    2023-06-29
  • Mybatis Plus案例分析
    这篇文章主要介绍了Mybatis Plus案例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis Plus案例分析文章都会有所收获,下面我们一起来看看吧。1 初识Mybatis-Plus  MyB...
    99+
    2023-06-29
  • Mybatis-Plus代码生成器的示例分析
    小编给大家分享一下Mybatis-Plus代码生成器的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 实战 数据库脚本 创建一张商品表test_goodsCREATE&nbs...
    99+
    2022-10-19
  • mybatis plus自动生成器的示例分析
    这篇文章将为大家详细讲解有关mybatis plus自动生成器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mybatis plus自动生成器解析使用这个可以超快速生成entity s...
    99+
    2023-06-29
  • java中MyBatis-plus入门使用的示例分析
    小编给大家分享一下java中MyBatis-plus入门使用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、初始化 SpringBoot 项目首先使用...
    99+
    2023-06-15
  • 基于mybatis-plus时间字段比较的示例分析
    这篇文章主要介绍了基于mybatis-plus时间字段比较的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis-plus 时间字段比较mybatis-plu...
    99+
    2023-06-20
  • Mybatis-Plus中SQL语句组拼原理的的示例分析
    这篇文章主要为大家展示了“Mybatis-Plus中SQL语句组拼原理的的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis-Plus中SQL语句组拼原理的的示例分析”这篇文章...
    99+
    2023-06-15
  • MyBatis-Plus 分页查询的实现示例
    方法: 使用selectPage()方法,第一个参数是传入分页方法(传入当前页和当前显示多少条数据),第二个参数是传入查询条件(如果查询全部的话,可以传null)。 前提: 表中的...
    99+
    2022-11-13
  • mybatis-plus QueryWrapper排序的坑案例分析
    这篇文章主要介绍了mybatis-plus QueryWrapper排序的坑案例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis-plus QueryWrapper排序的坑案...
    99+
    2023-06-29
  • Mybatis-plus支持Gbase8s分页的实现示例
    目录需求实现方法法2实现20210423修改完善20210519完善20210528完善需求 实现mybatis-plus对gbase8s的分页效果支持,使切换数据库(如oracle...
    99+
    2022-11-12
  • mybatis属性的示例分析
    这篇文章给大家分享的是有关mybatis属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库...
    99+
    2022-10-18
  • Mybatis Plus 中的LambdaQueryWrapper示例详解
    目录前言QueryWrapperLambdaQueryWrapper总结前言 之前写过 Mybatis Plus 的基本配置和使用。 Mybatis-Plus 看这一篇就够了 当初在...
    99+
    2022-11-13
  • Mybatis分页插件的示例分析
    这篇文章主要介绍Mybatis分页插件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mybatis分页插件的实例详解1.前言:我们知道,在MySQL中,分页的sql是使用l...
    99+
    2022-10-18
  • Mybatis-Plus支持GBase8s分页查询的实现示例
    MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。在最新版 MP 中,已明确支持 南...
    99+
    2023-01-09
    Mybatis-Plus GBase8s分页查询 Mybatis-Plus 分页查询
  • Spring集成MyBatis的示例分析
    这篇文章主要为大家展示了“Spring集成MyBatis的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring集成MyBatis的示例分析”这篇文...
    99+
    2022-10-18
  • Mybatis中缓存的示例分析
    这篇文章主要为大家展示了“Mybatis中缓存的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis中缓存的示例分析”这篇文章吧。缓存Mybat...
    99+
    2022-10-19
  • mybatis中foreach collection的示例分析
    这篇文章主要介绍mybatis中foreach collection的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了for...
    99+
    2023-05-31
    mybatis foreach collection
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作