MybatisPlus学习

简介

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。是一种集mybatis与hibernate的优点一起的框架,它提供了hibernate的单表CRUD操作的方便同时,又保留了mybatis的特性。

特性

  • 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性

  • 依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring

  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

  • 预防Sql注入:内置 Sql 注入剥离器,有效预防Sql注入攻击

  • 通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

  • 多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题

  • 支持热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动

  • 支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作

  • 支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用(P.S. 比 Mybatis 官方的 Generator 更加强大!)

  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

  • 支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词

  • 内置分页插件:基于 Mybatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询

  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询

  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作

特别说明:Mybatis及Mybatis-Spring依赖请勿加入项目配置,以免引起版本冲突!!!Mybatis-Plus会自动帮你维护!

注解说明

表名注解 @TableName

  • com.baomidou.mybatisplus.annotations.TableName

值 描述

value

表名( 默认空 )

resultMap

xml 字段映射 resultMap ID

主键注解 @TableId

  • com.baomidou.mybatisplus.annotations.TableId

值 描述

value

字段值(驼峰命名方式,该值可无)

type

主键 ID 策略类型( 默认 INPUT ,全局开启的是 ID_WORKER )

暂不支持组合主键

字段注解 @TableField

  • com.baomidou.mybatisplus.annotations.TableField

值 描述

value

字段值(驼峰命名方式,该值可无)

el

详看注释说明

exist

是否为数据库表字段( 默认 true 存在,false 不存在 )

strategy

字段验证 ( 默认 非 null 判断,查看com.baomidou.mybatisplus.enums.FieldStrategy )

fill

字段填充标记 ( FieldFill, 配合自动填充使用 )

  • 字段填充策略 FieldFill

值 描述

DEFAULT

默认不处理

INSERT

插入填充字段

UPDATE

更新填充字段

INSERT_UPDATE

插入和更新填充字段

序列主键策略 注解 @KeySequence

  • com.baomidou.mybatisplus.annotations.KeySequence

值 描述

value

序列名

clazz

id的类型

乐观锁标记注解 @Version

  • com.baomidou.mybatisplus.annotations.Version

常用条件

Mybatis-Plus 通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者 Condition(与EW类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率。

经常使用的条件有

.eq("id"10) 字段 参数 查出对应条件

.ge("id", 10) 字段 参数 大于等于10

.gt("id",10)  字段 参数 大于10

.le("id", 10) 字段 参数 小于等于10

.lt("id",10)  字段 参数 小于10

.in("id",值(或者集合或数组)) 和普通in方法相同

.like("name","q")

.between("id",10,15) 字段 开始区间,结束区间 包左包右

.notbetween 不解释 了

.setSqlSelect("age") 查询指定字段

.setSqlSelect("name,age") 指定多个字段(

.where("id={0}",52) 正常应该这样写 但是为了方便 可以忽略第二个参数直接写个sql条件即可

.where("id=52")

.or("id=1")

.and("id=1")

不常用的

.ne("age",20) age 20> 同时 20<

.exists() 根据这个条件判断 如果为true 默认返回所有行的所有字段

.group by() 因为group 基本要和函数一起使用 所以不建议用

.having()

还有一些notlike notexists 等很好理解的就没放上去

可以进行一些稍复杂一点的逻辑

如:

查询id字段或者age字段包括1的

.like("id","1").or().like("age","1")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值