com.baomidou
mybatis-plus-boot-starter
3.5.1
实体类对应表名:@TableName("表名")或@TableName(value = "表名")
主键自增字段ID:@TableId(type = IdType.AUTO) 放在id上
非主键id字段@TableeField("字段名")
//Mapper接口继承
extends BaseMapper<实体类>
配置输出完整SQL日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
// 查询
1.根据id查询.selectById
2.根据ids查询多条 List ids = Arrays.asList(1,2); return classinfoMapper.selectBatchIds(ids);
3.多参数查询.selectByMap(map); 使用map进行传参
4.模糊查询
// 创建条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("列名", 值).like("列名", "值");
// 只能返回一条数据,否则报错
5.时间区间查询
// 创建条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.gt("起始时间列名","值").lt("起始时间列名","值");
Map results = new HashMap();
// 如果传null则查询所有
List<对象> data = xxxMapper.selectList(queryWrapper);
// 查询数据条数
Long count = xxxMapper.selectCount(queryWrapper);
results.put("data",data);
results.put("count",count);
return results;
6.子查询
// 创建条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.inSql("子查询需要查询出的字段","SQL语句,查询出的是想要的字段,而不是 * ")
return xxxMapper.selectMaps(queryWrapper);
7.排序---倒序
// 创建条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("倒序列名");
return xxxMapper.selectObjs(wrapper);
8.分页 使用时间区间进行查询分页 先引入 八、分页查询的类,放在config包下
// 创建条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
// 传入区间参数(列,值)
queryWrapper.gt("起始时间列名","值").lt("起始时间列名","值");
// 创建 分页对象
Page page = new Page(起始页数,起始条数);
// 传参调用查分页方法
xxxMapper.selectPage(page, queryWrapper);
// 分页的数据
List<实体类> data = page.getRecords();
// 条数
long total = page.getTotal();
// 页数
long pages = page.getPages();
// 当前页数
long current = page.getCurrent();
Map map = new HashMap<>();
map.put("data",data);
map.put("total",total);
map.put("pages",pages);
map.put("current",current);
return map;
// 新增
1.插入一条数据.insert
// 删除
1.根据id删除一条数据delete
2.批量删除deleteByIds List ids = Arrays.asList(4,5,6); int i = classinfoMapper.deleteBatchIds(ids);
3.根据条件删除deleteByMap 传参@RequestParam Map map
// 修改
1.根据id更新一条数据 .updateById
操作步骤
第一步、在控制层调用mapper接口方法,传入分页和多条件查询参数。
第二步、在持久层mapper接口中创建方法,传入分页工具Page和多条件查询参数。
第三步、在 src/main/resources/mapper 中创建mapper.xml文件,编写SQL。
// 第一步:
// 模拟查询参数 controller层
Map map = new HashMap();
map.put("列名","值");
// 创建Page 分页工具类
Page<实体类> page = new Page<实体类>(页数,条数);
// 调用mapper的方法,返回值是Page分页工具类
Page<实体类> pageData = classinfoMapper.XMLSQLAndPage(page,map);
// 分页的数据
List data = pageData.getRecords();
// 总条数
long total = pageData.getTotal();
// 页数
long pages = pageData.getPages();
// 当前页数
long current = pageData.getCurrent();
// Map map = new HashMap<>();
map.put("data",data);
map.put("total",total);
map.put("pages",pages);
map.put("current",current);
return map;
// 第二步:
// dao层 点击报红的XMLSQLAndPage去dao层的mapper接口创建方法
Page<实体类> XMLSQLAndPage(Page<实体类> page, @Param("map") Map map);
// 第三步:
// 1.在 resources 文件夹下创建 mapper 文件夹
// 2.在文件夹中创建 xxxMapper.xml 文件
// 3.编写多表联查SQL语句
// 逻辑删除操作步骤
// 第一步:修改表结构添加 deleted 字段 默认值 0 表示未删除
// 第二步:在实体类中添加deleted属性
// 第三步:给实体类设 @TableLogic 注解
// 第四步:测试删除和查询操作
// 在yml文件中修改默认值
# 可配置自定义配置文件 global-config
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: 字段
logic-delete-value: 删除
logic-not-delete-value: 未删除
// 第一步:使用注解,标记需要填充的字段
@TableField(fill = FieldFill.标记)
// 标记分为:DEFAULT:默认不处理
// INSERT:插入填充字段
// UPDATE:更新填充字段
// INSERT_UPDATE:插入和更新填充字段
// 第二步:自定义策略实现类MyMetaObjectHandler
// 1.实现MetaObjectHandler
// 2.重写方法
// 类上注解
@Slf4j
@Component
// 方法内填充
this.setFieldValByName("字段",填充数据,metaObject);
// 第三步、测试新增和修改
@Configuration
@MapperScan("扫描你的mapper接口包")
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
// @Bean
// public ConfigurationCustomizer configurationCustomizer() {
// return configuration -> configuration.setUseDeprecatedExecutor(false);
// }
}