Mybatis plus(一)

P1 介绍

实现单表的crud操作。

还有更多的一些丰富功能。

P2 快速入门-入门案例

  • 引入mybatis-plus,集成了mybatis和mybaitsplus的所有功能,实现了自动装配效果。

例如:

XML 复制代码
     <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
  • 定义mapper,继承mybatisplus提供的basemapper,指定泛型为对应的实体类型

P3 快速入门-常用注解

mybatisplus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

  • 类名驼峰转下划线作为表名;

  • 名为id的字段作为主键;

  • 变量名驼峰转下划线作为表的字段名;(约定大于配置)

如果变量名不符合上述驼峰,这如何实现映射呢,需要自己使用注解,

mybatisplus中常用的几个注解如下:

  • @TableName:指定表名

  • @TableId,指定表中的主键字段

    生成id有三种形式,可以通过type进行指定

    • AUTO,数据库自增长,id是数据库创建的

    • INPUT,通过set方法自行输入

    • ASSIGNED_ID,分配ID,将IdentifierGenerator的方法nextId来生成id,这是mybatisplus实现的id,雪花算法生成long型id

  • @TableField,指定表中的普通字段信息

    常见场景,

    • 成员变量名与数据库字段名不一致,

    • 成员变量名以is开头且是布尔值,

    • 成员变量名与数据库关键字冲突,使用转义字符解决@TabelField("order")

    • 成员变量不是数据库字段,@TabelField(exist = false)

例如,数据库中真实表名为tb_user,而实体类为User,则可以加上注解@TabelName("tb_user"

P4 常用配置

这个配置也要熟悉

mybatisplus的配置项集成了mybatis原生配置和一些自己特有的配置,

例如:下述配置几乎都是有默认值的

XML 复制代码
#mybatis:
#  mapper-locations: classpath*:mapper/*.xml
mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po # 别名扫描包
  global-config:
    db-config:
      id-type: auto # 配置id生成的策略,如果是雪花算法就是assign_id
      logic-delete-field: deleted # 配置逻辑删除字段
      update-strategy: not_null # 更新策略,只更新非空字段
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
    map-underscore-to-camel-case: true # 开启下划线和驼峰映射
    cache-enabled: false # 是否开启二级缓存
  mapper-locations: "" # mapper.xml文件地址

具体可以查看官网的示例配置,

相关推荐
qfljg17 分钟前
OpenRewrite 实战指南
java
Sylvia33.22 分钟前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
知行合一。。。5 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
2601_962071576 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
zww89491116 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
zww89491119 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设10 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳10 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
白山编程大哥10 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
devpotato11 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis