MybatisPlus的使用

MyBatis-Plus简介

MyBatis-Plus(简称MP)是在MyBatis的基础上研发的一套持久层框架,旨在简化数据库操作,提高开发效率。它不仅保留了MyBatis的所有优点,还提供了诸多便利功能和扩展特性,以下是MyBatis-Plus的主要特点和功能详解:

  1. 无侵入设计
    MyBatis-Plus的设计理念是无侵入式的增强,这意味着在使用MyBatis-Plus的同时,仍可以继续使用MyBatis的所有功能,开发者可以选择性地使用MP提供的增强特性。

  2. 自动CRUD
    MP提供了丰富的通用CRUD方法,比如插入、更新、删除、查询等,这些方法在BaseMapper接口中已经实现,只需要继承该接口,就可以免去大部分基本操作的SQL编写。

  3. Lambda表达式支持
    支持Lambda语法,使得开发者可以更优雅地调用CRUD方法,代码更加简洁明了。

  4. 条件构造器
    提供了强大且易于使用的条件构造器,通过链式调用可以快速构建复杂的动态查询条件,避免硬编码SQL。

  5. 主键策略
    自动处理主键生成策略,包括雪花算法(Snowflake)等多种内置策略,并支持自定义主键生成器。

  6. 代码生成器
    提供了强大的代码生成工具,可以根据数据库表结构一键生成Entity、Mapper、Service、Controller等全套模板代码,极大提升了开发效率。

  7. 表关联映射
    支持一对一、一对多等表关联查询的注解和方法,简化了复杂关联查询的操作。

  8. 分页查询
    内置分页插件,支持非常简便的分页查询,无需编写复杂的SQL,只需简单调用Page对象即可实现分页功能。

  9. 性能优化
    包括批量插入、更新等针对性能的优化操作,同时支持二级缓存。

  10. 扩展性强
    MP预留了丰富的扩展接口,开发者可以根据需求定制自己的插件,例如逻辑删除、乐观锁、数据校验等功能。

  11. 配置简化
    MP通过Spring Boot Starter的形式,简化了MyBatis在Spring Boot环境中的配置,如数据源、事务管理等配置都可以通过Spring Boot的自动配置来实现。

总之,MyBatis-Plus通过一系列的实用功能大大提高了MyBatis在日常开发中的易用性和生产效率,成为众多Java项目中广泛采用的持久层框架之一。

MybatisPlus的使用

在MyBatis-Plus(以下简称MP)框架中,BaseMapperIService 是为了简化常规CRUD操作而提供的抽象接口。

BaseMapper:

BaseMapper 是 MP 提供的基础Mapper接口,通过继承它,你可以快速实现对数据库的基本增删改查操作,而无需自己编写SQL语句或XML映射文件。
假设你有一个名为User的实体类,你可以创建对应的UserMapper如下:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
    // 不需要额外添加任何方法,除非你需要实现一些特定的查询逻辑
}

BaseMapper已经内建了如下的基本CRUD方法:

  • 插入(insert, insertOrUpdate, insertBatchSomeColumns 等)
  • 删除(deleteById, deleteByMap, deleteBatchIds 等)
  • 更新(updateById, update, updateAllColumnById 等)
  • 查询(selectById, selectBatchIds, selectList, selectMaps, selectOne 等)

IService:

IService 是 MP 针对Service层设计的一个抽象接口,通过继承它,你可以快速实现Service层的接口规范。同样以User为例,创建对应的UserService

import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {
    // 这里可以根据业务需求扩展自定义的服务方法
}

当Service类实现了IService之后,就已经具备了基础的CRUD功能。然后你可以创建一个ServiceImpl类来实现具体服务逻辑,注入UserMapper

import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    // 可以在此处编写具体的业务逻辑
}

@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;

@GetMapping("/test")
public void detail() {
       UserDetailDto detail = userService.selectById(1L);
	
    }
}

ServiceImpl中,通过继承ServiceImpl<T, ID>类,其中泛型T代表实体类(这里是User),ID代表实体类的主键类型,框架会自动注入对应的Mapper实例,从而在Service层调用BaseMapper中的方法执行数据库操作。

总结来说,使用BaseMapperIService可以大幅减少重复的DAO层和Service层的编码工作,提高开发效率。只需关注业务逻辑的实现,而非基础的数据库操作。

MybatisPlus API

MybatisPlus支持lamada表达式

QueryWrapper<User> userQueryWrapper = new QueryWrapper<User>();
userQueryWrapper.lambda().select(User::getId,User::getUserName,User::getPhone);
userQueryWrapper.lambda().eq(User::getId,1L);
User user = userMapper.selectOne(userQueryWrapper);

更多API请参见 IService 接口

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示