初识MyBaitsPlus

初识MyBaitsPlus

1.介绍

MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化MyBatis的开发,提高生产效率。它提供了一系列功能,包括CRUD操作的自动生成、复杂查询的简化配置、代码生成器、分页插件等。以下是MyBatis-Plus的一些主要特性:

  1. CRUD 操作:MyBatis-Plus通过注解或XML配置自动生成常见的增删改查操作,减少了大量的手写SQL代码。
  2. 代码生成器:支持根据数据库表结构生成对应的实体类、Mapper接口、Service和Controller等代码,大幅度提高开发速度。
  3. 分页插件:内置分页插件,可以方便地进行分页查询,并支持多种数据库。
  4. 条件构造器:提供了丰富的条件构造器,能够以链式调用的方式构建查询条件,简化复杂查询的编写。
  5. 插件扩展:支持自定义插件,可以根据需求进行功能扩展,如逻辑删除、多租户等。
  6. 性能分析:内置性能分析插件,可以输出每条SQL的执行时间,帮助优化SQL性能。
  7. 多数据源支持:方便集成和管理多数据源配置。
优势
  • 简单易用:减少了大量的配置和手写代码,使开发人员可以专注于业务逻辑。
  • 高效:自动化的代码生成和CRUD操作大幅度提高了开发效率。
  • 灵活扩展:提供了丰富的扩展机制,可以根据项目需求进行自定义功能的开发。

使用场景

MyBatis-Plus特别适用于需要快速开发、迭代频繁的项目,可以显著减少开发人员的工作量。同时,它也适合于对性能要求较高、需要频繁进行数据库操作的应用。

2 .简单使用

详细步骤:

1.添加依赖:

pom.xml文件中添加MyBatis-Plus的依赖。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>latest_version</version>
</dependency>
2.配置数据源:

application.propertiesapplication.yml中配置数据库连接信息。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
3.编写实体类:

创建与数据库表对应的实体类,使用@TableName注解指定表名,使用@TableId注解指定主键。

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
public class User {
    @TableId
    private Long id;
    private String username;
    private Integer age;

    // 省略getter和setter方法
}
4.编写Mapper接口:

创建继承自BaseMapper的Mapper接口,并使用@Mapper注解标记。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}
5.编写Service接口:

创建继承自IService的Service接口。

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

public interface UserService extends IService<User> {
}
6.编写Service实现类:

创建继承自ServiceImpl的Service实现类,并实现Service接口。

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
7.使用Service进行操作:

在控制器或其他服务中自动注入UserService并使用它进行CRUD操作。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

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

    @GetMapping("/{id}")
    public User getById(@PathVariable Long id) {
        return userService.getById(id);
    }

    @PostMapping
    public boolean save(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping
    public boolean update(@RequestBody User user) {
        return userService.updateById(user);
    }

    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Long id) {
        return userService.removeById(id);
    }
}
8.配置扫描:

确保MyBatis-Plus能够扫描到Mapper接口,通常在启动类上添加@MapperScan注解。

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
9.解释
  • 实体类(Entity):用于映射数据库表结构的Java类,每个属性对应表中的一个字段。
  • Mapper接口:用于执行数据库操作的方法接口,继承自BaseMapper,MyBatis-Plus会自动实现常见的CRUD方法。
  • Service接口:定义业务逻辑接口,继承自IService
  • Service实现类:实现业务逻辑接口,继承自ServiceImpl,可以使用MyBatis-Plus提供的CRUD方法。
  • 控制器(Controller):处理HTTP请求并调用Service层进行业务处理。

通过以上步骤,MyBatis-Plus可以显著减少开发中重复的CRUD代码,提高开发效率,并提供了丰富的功能来简化复杂查询和数据操作。

3.MyBatis-Plus中给我们提供的Mapper和Service封装的方法

1.Mapper接口类(例如UserMapper):
  1. 基本 CRUD 方法
    • T selectById(Serializable id):根据ID查询一条记录。
    • List<T> selectList(@Param("ew") Wrapper<T> wrapper):根据条件查询记录列表。
    • int insert(T entity):插入一条记录。
    • int updateById(T entity):根据ID更新记录。
    • int deleteById(Serializable id):根据ID删除记录。
  2. 扩展的查询方法
    • int selectCount(@Param("ew") Wrapper<T> wrapper):根据条件查询记录数量。
    • T selectOne(@Param("ew") Wrapper<T> wrapper):根据条件查询单条记录,如果查询结果超过一条会抛出异常。
    • List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList):根据ID列表查询记录列表。
    • List<T> selectPage(Page<?> page, @Param("ew") Wrapper<T> wrapper):根据条件分页查询记录列表。
2.Service接口类(例如UserService):
  1. 基本 CRUD 方法
    • boolean save(T entity):保存一条记录,根据ID是否存在自动判断插入还是更新。
    • boolean updateById(T entity):根据ID更新记录。
    • boolean removeById(Serializable id):根据ID删除记录。
    • T getById(Serializable id):根据ID查询记录。
    • List<T> list():查询所有记录列表。
  2. 扩展的查询方法
    • int count(Wrapper<T> wrapper):根据条件查询记录数量。
    • T getOne(Wrapper<T> wrapper, boolean throwEx):根据条件查询单条记录,如果查询结果超过一条根据throwEx参数决定是否抛出异常。
    • List<T> list(Wrapper<T> wrapper):根据条件查询记录列表。
    • IPage<T> page(Page<T> page, Wrapper<T> wrapper):根据条件分页查询记录列表。
  3. 其他方法
    • Map<String, Object> getMap(Wrapper<T> wrapper):根据条件查询记录并返回Map结果集。
    • Object getObj(Wrapper<T> wrapper):根据条件查询记录并返回Object结果集。

这些方法提供了丰富的功能,可以满足各种数据操作需求,从基本的增删改查到复杂的条件查询和分页查询,同时也支持返回不同类型的结果集,使得开发更加灵活和高效。

tring, Object> getMap(Wrapper wrapper)`:根据条件查询记录并返回Map结果集。

  • Object getObj(Wrapper<T> wrapper):根据条件查询记录并返回Object结果集。

这些方法提供了丰富的功能,可以满足各种数据操作需求,从基本的增删改查到复杂的条件查询和分页查询,同时也支持返回不同类型的结果集,使得开发更加灵活和高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值