springboot - mybatis plus
介绍
- 基于SpringBoot项目
- 标准的crud
注意事项
- 自动生成的Mapper一定要添加注解
@Mapper
,或者定义mapper的扫描包@MapperScan("cn.tjhis.api.mapper")
- 如果有配置类,建议
@MapperScan
写到配置类上
几个注解
- @TableName
- @TableId
- @TableField(value="pwd",select=false) 查询时隐藏
- @TableField(exist=false) 数据库不存在的字段
- @TableLogic 逻辑删除
- @TableLogic(value="0",delval="1")
- @Version 乐观锁
配置
mybatis-plus:
global-config:
banner: false
db-config:
id-type: input
# 全局逻辑删除的实体字段名
logic-delete-field: deleted
# 逻辑已删除值(默认为 1)
logic-delete-value: 1
# 逻辑未删除值(默认为 0)
logic-not-delete-value: 0
Oracle序列
- 实体类加注解,指定序列名称
@TableName(value ="hisapi.MENU_INFO")
@KeySequence("hisapi.GEN_HIS_MAGIC_NO")
@Data
public class MenuInfo implements Serializable {
/**
* ID
*/
@TableId
private Long id;
}
- 添加配置类
@Configuration
public class MybatisPlusConfig {
/**
* 配置主键的自动生成策略,这里选择使用Oracle的序列
* @return Oracle的序列
*/
@Bean
public IKeyGenerator iKeyGenerator(){
return new OracleKeyGenerator();
}
}
查询
- 查询单条数据
LambdaQueryWrapper<Dept> wrapper = Wrappers.lambdaQuery(Dept.class).eq(Dept::getDeptno, 50);
Dept dept = service.getOne(wrapper);
- 分页查询
public IPage<Brand> findPage(Brand brand, int page, int size) {
// 构造分页查询
IPage pageInfo = new Page(page, size);//分页参数
// 条件查询器
LambdaQueryWrapper<Brand> wrapper = Wrappers.lambdaQuery(Brand.class)
.like(Brand::getName, brand.getName());
//执行iservice的page查询
pageInfo = brandMapper.selectPage(pageInfo, wrapper);
return pageInfo;
}
- 通用查询
wrapper.eq("实体类::查询字段", "条件值"); //相当于where条件
wrapper.between("实体类::查询字段", "区间一", "区间二");//相当于范围内使用的between
wrapper.like("实体类::查询字段", "模糊查询的字符"); //模糊查询like
wrapper.groupBy("实体类::查询字段"); //相当于group by分组
wrapper.in("实体类::查询字段", "包括的值,分割"); //相当于in
wrapper.orderByAsc("实体类::查询字段"); //升序
wrapper.orderByDesc("实体类::查询字段");//降序
wrapper.ge("实体类::查询字段", "要比较的值"); //大于等于
wrapper.le("实体类::查询字段", "要比较的值"); //小于等于
世界上没有什么事情是跑步解决不了的,如果有,那就再跑一会!