MyBatis-Plus 详细使用指南

MyBatis-Plus 详细使用指南

发布时间:2024-10-09 15:10:26

1. 环境准备

1.1 安装jdk

  1. 访问oracle官网下载最新的jdk (https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
  2. 根据操作系统选择合适的安装包
  3. 安装jdk
  4. 设置环境变量:
    • java_home: jdk安装目录
    • path: 添加%java_home%in
  5. 验证安装: 打开命令行,输入 java -version

1.2 安装maven

  1. 下载apache maven (https://maven.apache.org/download.cgi)
  2. 解压到本地目录
  3. 设置环境变量:
    • m2_home: maven安装目录
    • path: 添加%m2_home%in
  4. 验证安装: 打开命令行,输入 mvn -version

2. 创建mybatis-plus项目

2.1 使用spring initializr创建项目

  1. 访问 https://start.spring.io/
  2. 选择:
    • project: maven
    • language: java
    • spring boot: 2.5.x (或最新稳定版)
  3. 填写项目元数据 (group, artifact等)
  4. 添加依赖:
    • spring web
    • mysql driver
    • mybatis framework
  5. 点击"generate"下载项目压缩包

2.2 添加mybatis-plus依赖

  1. 解压下载的项目文件
  2. 打开 pom.xml 文件
  3. 标签中添加以下依赖:
    xml


    com.baomidou
    mybatis-plus-boot-starter
    3.4.3.4

3. 配置mybatis-plus

3.1 配置数据源

  1. 打开 src/main/resources/application.properties 文件
  2. 添加以下配置:
    properties

    spring.datasource.url=jdbc:mysql://localhost:3306/your_database
    spring.datasource.username=your_username
    spring.datasource.password=your_password
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.driver

    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.stdoutimpl

3.2 创建实体类

  1. 在 src/main/java/com/example/demo 目录下创建 entity 包
  2. 在 entity 包中创建 user.java 文件
  3. 添加以下内容:
    java

    package com.example.demo.entity;

    import com.baomidou.mybatisplus.annotation.idtype;
    import com.baomidou.mybatisplus.annotation.tableid;
    import com.baomidou.mybatisplus.annotation.tablename;

    @tablename("user")
    public class user {
    @tableid(type = idtype.auto)
    private long id;
    private string name;
    private integer age;
    private string email;

    // getters and setters
    }

3.3 创建mapper接口

  1. 在 src/main/java/com/example/demo 目录下创建 mapper 包
  2. 在 mapper 包中创建 usermapper.java 文件
  3. 添加以下内容:
    java

    package com.example.demo.mapper;

    import com.baomidou.mybatisplus.core.mapper.basemapper;
    import com.example.demo.entity.user;
    import org.apache.ibatis.annotations.mapper;

    @mapper
    public interface usermapper extends basemapper {
    }

3.4 创建service接口和实现

  1. 在 src/main/java/com/example/demo 目录下创建 service 包
  2. 在 service 包中创建 userservice.java 文件:
    java

    package com.example.demo.service;

    import com.baomidou.mybatisplus.extension.service.iservice;
    import com.example.demo.entity.user;

    public interface userservice extends iservice {
    }

  3. 在 service 包中创建 impl 子包,并在其中创建 userserviceimpl.java 文件:
    java

    package com.example.demo.service.impl;

    import com.baomidou.mybatisplus.extension.service.impl.serviceimpl;
    import com.example.demo.entity.user;
    import com.example.demo.mapper.usermapper;
    import com.example.demo.service.userservice;
    import org.springframework.stereotype.service;

    @service
    public class userserviceimpl extends serviceimpl implements userservice {
    }

4. 使用mybatis-plus

4.1 创建controller

  1. 在 src/main/java/com/example/demo 目录下创建 controller 包
  2. 在 controller 包中创建 usercontroller.java 文件
  3. 添加以下内容:
    java

    package com.example.demo.controller;

    import com.example.demo.entity.user;
    import com.example.demo.service.userservice;
    import org.springframework.beans.factory.annotation.autowired;
    import org.springframework.web.bind.annotation.*;

    import java.util.list;

    @restcontroller
    @requestmapping("/users")
    public class usercontroller {

    @autowired
    private userservice userservice;

    @getmapping
    public list list() {
    return userservice.list();
    }

    @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);
    }
    }

4.2 使用条件构造器

在 usercontroller 中添加以下方法来演示条件查询:

java

@getmapping("/search")
public list search(@requestparam(required = false) string name,
@requestparam(required = false) integer agefrom,
@requestparam(required = false) integer ageto) {
querywrapper querywrapper = new querywrapper<>();
if (name != null) {
querywrapper.like("name", name);
}
if (agefrom != null) {
querywrapper.ge("age", agefrom);
}
if (ageto != null) {
querywrapper.le("age", ageto);
}
return userservice.list(querywrapper);
}

5. 运行和测试

  1. 确保mysql服务器正在运行,并且已创建相应的数据库和表
  2. 在命令行中,进入项目根目录
  3. 执行以下命令运行项目:
     
    mvn spring-boot:run
  4. 使用postman或其他api测试工具测试各个接口

6. 故障排除

  1. 数据库连接问题:
    • 检查mysql服务是否正在运行
    • 验证application.properties中的数据库连接信息是否正确
    • 确保mysql jdbc驱动版本与mysql服务器版本兼容
  2. 实体类映射问题:
    • 检查@tablename注解是否与数据库表名一致
    • 确保实体类属性名与数据库列名匹配(如果不匹配,使用@tablefield注解)
  3. mapper扫描问题:
    • 确保在主应用类上添加了@mapperscan注解
    • 检查mapper接口是否正确放置在指定的包下
  4. 插件配置问题:
    • 如果使用分页插件,确保正确配置了paginationinterceptor
    • 对于其他插件,检查是否正确添加了相应的配置类
  5. sql执行问题:
    • 启用mybatis-plus的sql日志功能(在application.properties中配置)
    • 分析输出的sql语句,检查是否符合预期
  6. 性能问题:
    • 考虑使用mybatis-plus的批量操作方法提高效率
    • 对于大量数据的查询,使用分页查询避免一次性加载过多数据
  7. 版本兼容性问题:
    • 确保spring boot、mybatis-plus和数据库驱动的版本相互兼容
    • 查阅mybatis-plus官方文档,了解不同版本间的变更
  8. 自动生成主键问题:
    • 检查@tableid注解的配置,确保与数据库主键生成策略一致
    • 对于非自增主键,考虑使用mybatis-plus提供的id生成器

记住,良好的日志记录和断点调试可以帮助您快速定位问题。如果遇到难以解决的问题,可以查阅mybatis-plus官方文档或在github issues中寻找类似问题的解决方案。

--------------------------------------------------------------------------------

上面是一个详细的mybatis-plus使用指南文档。这个指南涵盖了从环境准备到mybatis-plus的配置、使用,以及常见问题的故障排除。您可以将这个文档作为参考,按照步骤逐一实施。

以下是文档的主要章节:

  1. 环境准备(jdk和maven的安装)
  2. 创建mybatis-plus项目
  3. 配置mybatis-plus
  4. 使用mybatis-plus
  5. 运行和测试
  6. 故障排除

每个章节都包含了详细的步骤说明和代码示例。这应该能够帮助您全面地了解和使用mybatis-plus框架。

几个需要特别注意的点:

  1. mybatis-plus是基于mybatis的增强工具,它简化了很多常用操作,如crud等。
  2. 使用@tablename和@tableid等注解可以轻松映射实体类和数据库表。
  3. 继承basemapper接口可以获得许多预定义的crud方法。
  4. 使用iservice和serviceimpl可以进一步抽象和复用业务逻辑。
  5. 条件构造器(如querywrapper)提供了灵活的查询条件构建方式。

感谢提供:05互联