ChatgptSetting为例子
public class ChatgptSetting {
private String setting;// 配置项名称
private String value;
}
chatgptSettingMapper.insert(chatgptSetting);
自动将非 null 字段插入到对应的数据库字段中
主键自增会自动回填(需实体类加 @TableId(type = IdType.AUTO)
)
chatgptSettingMapper.selectById(1);
List
List
QueryWrapper
用于构造 WHERE 条件
你也可以链式调用:.like()
, .between()
, .orderByDesc()
, .isNotNull()
chatgptSettingMapper.updateById(chatgptSetting);
前提是 chatgptSetting.getId()
不为 null
自动更新非 null 字段
chatgptSettingMapper.update( chatgptSetting, new UpdateWrapper
常用于“非主键”条件更新
如果你还用 .set("value", xxx)
,优先以 set()
为准
chatgptSettingMapper.deleteBatchIds(Arrays.asList(1, 2, 3));
方法 | 含义 | 示例 |
---|---|---|
.eq("字段", 值) |
等于 | eq("type", "api") |
.like("字段", 值) |
模糊匹配 | like("name", "key") |
.in("字段", List) |
在范围内 | in("id", ids) |
.orderByDesc("字段") |
倒序排序 | orderByDesc("create_time") |
.set("字段", 值) |
更新字段 | set("status", "已更新") |
注解 | 说明 |
---|---|
@TableName("表名") |
映射数据库表 |
@TableId(type = IdType.AUTO) |
主键自增策略 |
@TableField("字段名") |
映射字段名(如果数据库列和实体字段名不一致) |
@TableField(exist = false) |
该字段不参与数据库操作,常用于分页、展示字段等 |
需要配置分页插件:
// Spring Boot 配置分页插件(一次配置即可)
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
使用
Page page = new Page<>(1, 10);
Page result = chatgptSettingMapper.selectPage(page, queryWrapper);
五、结合使用示例:分页+条件查询
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.like("type", "api").orderByDesc("create_time");
Page page = new Page<>(1, 10);
Page result = chatgptSettingMapper.selectPage(page, wrapper);
@TableField(exist = false)
private Integer page;
@TableField(exist = false)
private Integer size;
通常在刚开始使用mybatis-plus时会出现的问题有:什么时候直接用mybatis-plus封装的方法、什么使用在方法中添加构造器**Warpaper
BaseMapper封装的方法有:
public interface BaseMapper extends Mapper {
int insert(T entity);
int deleteById(Serializable id);
int deleteByMap(@Param("cm") Map columnMap);
int delete(@Param("ew") Wrapper queryWrapper);
int deleteBatchIds(@Param("coll") Collection extends Serializable> idList);
int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);
T selectById(Serializable id);
List selectBatchIds(@Param("coll") Collection extends Serializable> idList);
List selectByMap(@Param("cm") Map columnMap);
T selectOne(@Param("ew") Wrapper queryWrapper);
Integer selectCount(@Param("ew") Wrapper queryWrapper);
List selectList(@Param("ew") Wrapper queryWrapper);
List
根据方法中的参数类型来调用对于的方法。
✅小编在学习过程中总结出一个小点:
在开发过程中 我们一旦用到关于主键id有关的crud操作 我们可以直接调用方法 不需要使用构造器构造具体sql条件。一但执行的sql操作不是根据主键id执行 那么参数里面就会包含构造器(但不绝对 还是以方法中的参数类型为准)
例如:
chatgptSettingMapper.update(
chatgptSetting,
new UpdateWrapper()
.set("value", chatgptSetting.getValue())
.eq("setting", chatgptSetting.getSetting())
);
而不能直接写成:
chatgptSettingMapper.update(chatgptSetting);
MyBatis-Plus = 自动化 + 高效 + 函数式链式调用 + 兼容原生 MyBatis,适合中小型项目快速开发。