一切以官方文档为主
安装
Spring Boot
Maven:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
常用注解
@TableName
- 描述:表名注解
如果数据库表名字和java实体类类名不对应时,就使用该注解映射
@TableField
- 描述:字段注解(非主键)
如果数据库字段和java实体类属性名不对应时,就可以使用该注解映射
扩展:
排除非表字段的三种方式
- transient: 用transient修饰属性
- static: 用static修饰属性
- @TableField: @TableField(exist = false),代表该属性在数据库中不存在
mp实用不常见CRUD方法
查询
-
根据id批量查询:selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
image.png
image.png 根据map查询:List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
Map<String,Object> columnMap = new HashMap<>(); columnMap.put(key,value); columnMap.put("name","李艺伟");
map里的键值对就相当于
where key = vaule and name = "李艺伟"
注意:key的值时数据库表字段的值,并非实体类属性

image.png

image.png
条件构造器
- 查询条件构造器 QueryWrapper 继承 AbstractWrapper提供诸多条件构造方法
例:
1.基本条件构造

image.png

image.png
2.时间格式化构造date_format(_time,'%Y-%m-%d')和 in 关键字条件构造
- apply()
-
inSql("condition","sql")
image.png
image.png
3.()sql

image.png

image.png
-
nested()
image.png

image.png
-
in()
image.png
image.png
-
select("colunm1","colunm2"..):指定要查询字段
方式一:
image.png
image.png -
方式二:
image.png
image.png
实体参数作为条件构造的参数

image.png

image.png
注意:
SELECT id,create_time,name,manager_id,email,age FROM user WHERE name=? AND age=?
这种方式构建的sql的时,所有条件均为 “=”,非 “=”条件怎么办呢:
在实体类对应属性添加注解@TableField(condition = SqlCondition.xx)

image.png

image.png

image.png
使用条件构造器的自定义分页sql
首先我们使用xml自定义方式,我们要在yml配置:
mybatis-plus:
mapper-locations: classpath*:mapper/*mapper.xml
- mapperLocations :
MyBatisMapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置
接着在mapper的java类中自定义方法:

image.png
(Constants.WRAPPER)page的别名是固定的
最后在xml文件写查询:

image.png
${ew.customSqlSegment}值是固定的调用且展示结果:

image.png

image.png










