首页 > 其他分享 >Mybatis-plus-cnblog

Mybatis-plus-cnblog

时间:2023-10-19 21:04:05浏览次数:36  
标签:插件 数据库 接口 id plus Mybatis com cnblog

Mybatis-plus

目录

快速入门

  • @TableField的常用场景

    • 成员变量名与数据库字段名不一致(会自动驼峰转下划线)
    • 成员变量名以is开头,且是bool值(经过反射处理后会去掉is)
    • 成员变量名和数据库关键字冲突(需要前后加`进行转义字符处理)
    • 成员变量不是数据库字段
  • 常用配置

mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po #别名扫描包
  mapper-locations: "classpath*:/mapper/** /*.xml" #Mapper.xml文件地址,默认值
  configuration:
    map-underscore-to-camel-case: true #是否开启下划线和驼峰的映射
    cache-enabled: false #是否开启二级缓存
  global-config:
    db-config:
      id-type: assign_id # id为雪花算法生成
      update-strategy: not_null #更新策略:只更新非空字段

核心功能

条件构造器

  • 各种Wrapper

  • LambdaWrapper

    • 避免字符串硬编码
    • 把get函数传过去,程序可以通过反射机制获取要操作的字段名

自定义SQL

image-20231016212620725

service接口

  • 查一个用get

  • 查多个用list

  • 分页page

  • lambdaQuery() 写复杂条件查询,不用new

  • 接口extends IService<User>

  • 实现类extends ServiceImpl<UserMapper, User> implements IUserService

  • swagger地址:后面加doc.html

报错:Dependency 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:' not found

实战

swagger

  • knife4j配置:

    knife4j:
      enable: true
      openapi:
        titile: 用户管理接口文档
        description: "用户管理接口文档"
        email: [email protected]
        concat: 虎哥
        url: https://www.itcast.cn
        version: v1.0.0
        group:
          default: 
            group-name: default
            api-rule: package
            api-rule-resources:
              -com.ithema.mp.controller
    
  • @ApiOperation:描述接口的操作。

  • @ApiParam:描述单个接口参数。

其他

  • dto:用于在不同层(例如,业务逻辑层和表示层、服务层和数据访问层,返回给微服务的等等)之间传输数据的对象。

  • po:存放数据库实体

  • vo:返回给前端的

  • 把dto拷贝到po

    BeanUtil.copyProperties(userDTO,User.class)
        copytoList
    
  • @RequiredArgsConstuctor
    
    private final IUserService userService;
    

Lambda

  • 前面可以写条件
//不为空才传
lambdaQuery().like(name!=null,User::getUsername,name)
  • 注意:更新完成后最后要加个.update()
  • 注意2:如果要修改的话,考虑多线程,需要加锁(乐观锁/悲观锁)

Iservice的批量新增

  • (举例:提交1000个对象)

  • 预编译

  • 法一:普通for逐条加入,提交1000次

  • 默认mp:编译出1000条sql语句,一次性提交(减少网络请求)

  • 需求:编译出一条,像这样:

    image-20231019114418856

  • 方式:在jdbc后面连一个rewriteBatchedStatements = true

扩展功能

代码生成器

  • 查文档

  • mybatisplus插件

    image-20231019115435793

image-20231019115443829

静态工具

  • 不用注入,解决循环依赖的情况
  • 直接用Db.调用(用baomidou的)
  • eg.根据id查用户,查用户的同时查出用户对应的地址

image-20231019185410406

  • eg.根据id批量查询用户对应的地址

    • 先根据ids在user表中查用户
    • 再根据查到的userId在address表中查地址

    image-20231019190413594

image-20231019190450105

逻辑删除

枚举处理器

  • 问题一:用户状态可读性差

    • 解决:建一个枚举类,然后在里面写状态和desc增强可读性;在User类中,把Int status直接改成UserStatus枚举类型
  • 问题二:User和数据库中的status类型不对应(一个UserStatus一个Int)

    • 解决:在枚举类中对应数据库值的地方加@EnumValue注解

    image-20231019191351103

    • 然后配置文件让它生效
    mybatis-plus:
    	configuration:
    		default-enum-type-handler:com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
    
    • @JsonValue:决定给前端的返回值

    image-20231019191750215

JSON处理器

  • 问题:数据库中存json字段info,java中用string接,如果想中途从json中取出部分制定内容,不好取

  • 解决:建一个UserInfo类,存;然后用JacksonTypeHandler转

  • 实现:autoResultMap和typeHandler(两个地方!!)

    image-20231019192923142

插件

分页插件

  • image-20231019193455703

  • image-20231019194445809

  • 构建分页条件的步骤比较繁琐且通用:提出来

image-20231019202246158

  • 需求一

    • 通过泛型和可变参数增加通用性
    • 注意:记得给类中的属性先赋个初值,保证它不为空

    image-20231019202646085

标签:插件,数据库,接口,id,plus,Mybatis,com,cnblog
From: https://www.cnblogs.com/xiaoyangii/p/17775611.html

相关文章

  • SSM-cnblog
    SSM目录SSM1Spring1.1SpringFramework1.2IoCDIIoCDI理解基础配置bean构造方法(常用)静态工厂(了解)实例工厂(重要)Bean生命周期生命周期依赖注入setter注入(重要)(常用)引用类型简单类型构造器注入使用场景自动装配集合注入管理第三方数据源加载properties文件容器加载配置文件获取bea......
  • GIT-cnblog
    Git目录Git简介安装与常用命令本地仓库配置别名基础操作分支分支规范仓库托管配置ssh公钥常用指令git在Idea中的使用简介分布式版本控制工具安装与常用命令ls/ll查看当前目录cat查看文件内容touch创建文件vivi编辑器i或insert键:插入esc退出编辑模式zz或:wq......
  • Javaweb后端-cnblog
    Javaweb后端目录Javaweb后端MavenHTTP请求响应请求(补充)xml文件分层解耦三层架构IOC/DI入门IoC控制反转DI依赖注入MySQL事务索引分页查询MyBatis快速入门数据库连接池Lombok增删改查删除新增查询条件查询xml映射文件动态sql案例部门管理分页查询文件上传阿里云OSS配置文件参数......
  • springboot mybatis-plus 逆向工程
    官网地址:https://baomidou.com/开发环境Springbootv3.1.4mybatis-plusv3.5.3.2mybatis-plus-boot-startermybatis-plus-generatorApacheFreeMarkerv2.3.32mysql  ......
  • MyBatis Plus 达梦数据库 分页查询异常问题
    MyBatisPlus达梦数据库分页查询异常问题 一、问题背景根据博客《SpringBootMyBatisPlus整合达梦数据库》中提到分页查询问题,如果没有配置 MybatisPlusConfig.java文件,会出现如下现象:数据表PRODUCTION.PRODUCT_CATEGORY中的数据如下: 调用如下查询接口:http:/......
  • 实现Springboot中MyBatisplus使用分页“@P0”附近有语法错误selectPage, IPage和Page分
    说明:QueryWrapper<Banner> warapper=newQueryWrapper<>();Page<Banner>page=newPage<>(1,1);IPage<Banner>iPage=bannerMapper.selectPage(page,warapper);输出结果还是全部的,没有limit效果。 解决:查了一天发现网上有说,没有进行配置分页插件,加上这个分页插件配置类......
  • SpringBoot项目中使用mybatis逆向工程
    mybatis逆向工程,即利用现有的数据表结构,生成对应的model实体类、dao层接口,以及对应的mapper.xml映射文件。借助mybatis逆向工程,我们无需手动去创建这些文件。下面是使用Java代码的方式来实现逆向工程,生成文件(也可以使用插件来生成):首先,导入需要的依赖包:mybatis逆向工程的依赖和......
  • ACS系列(6) ACS QT版SPiiPlusClibraryDemo
    工程文件QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++17#YoucanmakeyourcodefailtocompileifitusesdeprecatedAPIs.#Inordertodoso,uncommentthefollowingline.#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x......
  • 轻松搞定多数据源配置,Spring Boot与Mybatis-Plus的完美结合!
    ......
  • Spring MVC,Mybatis常见问题
    如果您面试一个只做过SpringMVC+MyBatis项目的候选人,您可能会问一些问题来评估其在这两个技术上的了解和经验。以下是一些可能的问题及其答案:什么是SpringMVC和MyBatis?它们在项目中的作用是什么?答:SpringMVC是一个基于Spring框架的用于构建Web应用程序的模块,它使用MVC(Model-......