Mybatis—Plus重要知识点
Mybatis—Plus重要知识点
FANSEAMybatis—Plus重要知识点
删除数据
1,根据id删除一个数据
1 | mapper.deleteByid(id) |
2,Map多条件删除
1 | //map.put("删除列","删除列对应的值") |
3,QueryWrapper多条件删除
1 | //根据QueryWrapper多条件删除 ,条件之间是and关系 |
修改数据
1 | Tag tag=new Tag("9","美食") |
增加数据
1 | tagService.save(tag) |
自动填充
1,设置字段填充字段
1 | //插入时自动填充 |
2,添加填充配置
1 | public class MyMetaObjectHandler implements MetaObjectHandler { |
数量比较
- eq 就是 equal等于
- ne 就是 not equal不等于
- gt 就是 greater than大于
- lt 就是 less than小于
- ge 就是 greater than or equal 大于等于
- le 就是 less than or equal 小于等于
设置乐观锁
1.设置@Version的注解
1 |
|
2.config文件中注入乐观锁插件
1 |
|
新版注入方式
分页使用
- 分页配置
1 |
|
- 分页应用
1 | public ResponseResult<PageVo> pageTagList(Integer pageNum, Integer pageSize, TagListDto tagListDto) { |
1 | Page<Blog> blogPage = blogService.query().eq("user_id", id).page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); |
IService接口
请查阅文档:IService接口方法文档
BaseMapper
int insert(T entity)
: 插入一条记录int deleteById(Serializable id)
: 根据主键删除记录int delete(Wrapper<T> queryWrapper)
: 根据条件删除记录int updateById(T entity)
: 根据主键更新记录int update(T entity, Wrapper<T> updateWrapper)
: 根据条件更新记录T selectById(Serializable id)
: 根据主键查询记录List<T> selectBatchIds(Collection<? extends Serializable> idList)
: 根据主键集合批量查询记录List<T> selectList(Wrapper<T> queryWrapper)
: 根据条件查询记录列表T selectOne(Wrapper<T> queryWrapper)
: 根据条件查询一条记录int selectCount(Wrapper<T> queryWrapper)
: 根据条件统计记录数量IPage<T> selectPage(Page<T> page, Wrapper<T> queryWrapper)
: 分页查询记录
提问:baseMapper类中没有方法的实现是怎么实现sql操作的?
BaseMapper<T>
接口在 MyBatis-Plus 中定义了一系列通用的 CRUD 操作方法,但并没有包含这些方法的具体实现。这是因为 MyBatis-Plus 使用了 MyBatis 的动态 SQL 功能和插件机制来自动生成这些方法的 SQL 语句和执行逻辑。
具体来说,MyBatis-Plus 通过以下方式实现了这些方法的 SQL 操作:
- XML Mapper 文件或注解:MyBatis 允许开发者通过 XML 文件或注解来定义 SQL 语句。对于
BaseMapper
中的方法,MyBatis-Plus 提供了默认的 XML Mapper 文件,这些文件中定义了每个方法的 SQL 语句模板。 - Mapper 接口和 XML 的绑定:MyBatis 会自动扫描 Mapper 接口和对应的 XML 文件,并将它们绑定在一起。当开发者调用 Mapper 接口中的方法时,MyBatis 会根据方法名和参数类型找到对应的 XML 中的 SQL 语句,并执行它。
- 动态 SQL:MyBatis 支持动态 SQL,这意味着 SQL 语句可以根据传入的参数动态生成。
Wrapper<T>
是 MyBatis-Plus 提供的一个条件构造器,它允许开发者以链式调用的方式构建查询条件。MyBatis-Plus 的 XML Mapper 文件中使用了 MyBatis 的动态 SQL 元素(如<if>
,<choose>
,<when>
,<otherwise>
等)来根据Wrapper
的条件动态生成 SQL 语句。 - 插件机制:MyBatis-Plus 还提供了一些插件,这些插件可以在 SQL 语句执行前或执行后进行一些额外的操作,如分页、性能分析等。
综上所述,虽然 BaseMapper<T>
接口没有方法的实现,但 MyBatis-Plus 通过 MyBatis 的动态 SQL 功能和插件机制,在运行时自动生成了这些方法的 SQL 语句和执行逻辑。因此,当开发者调用这些方法时,实际上是在执行由 MyBatis-Plus 自动生成的 SQL 语句。