IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MybatisPlus的常用注解和使用 -> 正文阅读

[Java知识库]MybatisPlus的常用注解和使用

一、引用依赖

  <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
  </dependency>
 
  <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
  </dependency>

定义mapper接口,继承基类BaseMapper<实体类>

public interface teacherMapper extends BaseMapper<teacher> {

}

常用方法:

新增:teacherMapper.insert(实体对象)

更新:teacherMapper.updateById(实体对象)

删除:

? 根据id删除:teacherMapper.deleteById()

? 根据多个id查询:teacherMapper.deleteBatchIds(Arrays.asList(1,2,3))

? 根据表信息(封装为map)查询:teacherMapper.selectByMap(map)

查询:

? 根据id查询? :teacherMapper.selectById()

? 根据多个id查询:teacherMapper.selectBatchIds(Arrays.asList(1,2,3))

? 根据表信息(封装为map)查询:teacherMapper.selectByMap(map)

主键策略:

? 在主键上写上注释@TableId(type=xxx)

? 策略:1、IdType.AUTO(自动递增)2、IdType.INPUT(输入)

? ? ? ? ? ? ?3、IdType.ID_WORKER(id为空时自动插入,数值型)

? ? ? ? ? ? ?4、IdType.ID_WORKER_STR(id为空时自动插入,字符型)

? ? ? ? ? ? ?5、IdType.UUID(这个没啥好说的)

? ? ? ? ? ? ?6、IdType.NONE(未设置主键类型)

? 设置自动填充如日期类型

? 1、加上注解@TableField(fill = xxx)

? ? ? fill = FieldFill.INSERT (插入时自动填充)

? ? ? fill = FieldFill.UPDATE(更新时自动填充)

? ? ? fill = FieldFill.INSERT_UPDATE(插入和更新时自动填充)

? 2、新建类继承MetaObjectHandler

package com.zsq.mpdemo0101.handlers;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
        this.setFieldValByName("version",1,metaObject);
        this.setFieldValByName("deleted",0,metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

}

设置功能注解先创建一个配置类

package com.zsq.mpdemo0101.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@MapperScan("mapper路径")
@EnableAutoConfiguration
@EnableTransactionManagement
public class MybatisPlusConfig {

}

??

1、设置乐观锁

? ?在字段上添加注解@version

? ?添加配置方法

?

    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

2、设施逻辑删除

在字段上添加注解 @TableLogic(默认0未删除,1逻辑删除)

添加配置方法

    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }

3、分页查询

添加配置方法

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

创建分页类

//page为当前页,limit为每页几条数据,从第一页开始
  Page<teacher> teacherPage = new Page<>(page, limit);

?执行

//null的位置是条件构造器 Wapper,往下讲解
teacherMapper.selectPage(pageParam,null);

条件构造器(实现复杂sql)

//构造器有多种,这个用的比较多  
QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();

构造器可以使用内部方法拼接,值为对应实体类的字段,实现大于,区间等操作

ge(大于等于)、gt(大于)、le(小于等于)、gt(小于)、between(在xx和xx之间)

like(模糊查询)等等,用法如下

 queryWrapper.isNull("name").ge("age", 12).isNotNull("email");

然后把queryWrapper添加进去作为查询条件

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:52:17  更:2021-08-30 11:53:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:17:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码