Mybatis-Plus 搭建与使用入门(小结)

Mybatis-Plus 搭建与使用入门(小结)

本文介绍了如何使用 Mybatis-Plus 搭建一个基本的 CRUD 应用,并对其进行增强功能的使用。整个过程包含以下步骤:

1. 环境准备

为了使用 Mybatis-Plus,我们需要在项目中添加相关的依赖:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>${mybatis-plus.version}</version>
</dependency>

其中,${mybatis-plus.version} 是一个变量,需要配置为实际的版本号。

2. 配置文件

在项目的配置文件 (application.ymlapplication.properties) 中,需要进行以下配置:

mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml # 设置 Mybatis Mapper 文件的路径
  configuration:
    map-underscore-to-camel-case: true # 开启驼峰命名规则转换(例如:user_name -> userName)

3. 实体类

定义实体类时需要注意以下几点:

  • 实体类需要添加 @TableName 注解,指定数据库表名
  • 实体类需要实现 Serializable 接口,以支持缓存等操作

示例代码:

@Data
@TableName("user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;
    private String name;
    private Integer age;

}

4. Mapper接口

使用 Mybatis-Plus 时,Mapper 接口不需要我们手动编写,Mybatis-Plus 会自动生成多种常用的 Mapper 方法。例如,我们可以定义一个 UserMapper 接口:

public interface UserMapper extends BaseMapper<User> {

}

其中,BaseMapper 是 Mybatis-Plus 提供的基础 Mapper 接口,包含了大量的增删改查等方法。

5. Service 接口

Service 接口的定义其实很简单,就是继承 IService 接口,并指定泛型类型为对应的实体类即可:

public interface UserService extends IService<User> {

}

其中,IService 是 Mybatis-Plus 提供的基础 Service 接口,包含了大量的增删改查等方法。

6. Service 实现类

实现 Service 接口时需要注意以下几点:

  • Service 实现类需要添加 @Service 注解,以交由 Spring 管理
  • Service 实现类需要实现 Service 接口
  • Service 实现类需要使用 @Autowired 注入 Mapper 对象

示例代码:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserMapper userMapper;

    // 可以在这里添加方法,实现业务逻辑

}

7. Controller

Controller 不需要进行特别的处理,直接使用 SpringMVC 的方式定义即可:

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

}

8. 增强功能

Mybatis-Plus 还提供了一些增强功能,例如分页、条件构造器等。分页功能实现代码示例:

Page<User> page = new Page<>(1, 10);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().gt(User::getAge, 18);
IPage<User> result = userService.page(page, queryWrapper);

9. 结语

至此,我们已经完成了 Mybatis-Plus 的搭建和使用入门教程。Mybatis-Plus 还有许多其他的功能和特性,感兴趣的读者可以查看官方文档,进一步学习和探索。

示例1:Mybatis-Plus使用代码

// UserService接口
public interface UserService extends IService<User> {
    IPage<User> selectPageVo(Page<?> page, Integer state);
    int[] insertBatch(List<UserDto> userList);
}

// Service 实现类
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public IPage<User> selectPageVo(Page<?> page, Integer state) {
        return userMapper.selectPageVo(page, state);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public int[] insertBatch(List<UserDto> userList) {
        int[] result = userMapper.insertBatch(userList);
        return result;
    }

}

// Mapper 接口
@Mapper
public interface UserMapper extends BaseMapper<User> {

    @Select("select * from user where state = #{state}")
    IPage<User> selectPageVo(Page<?> page, Integer state);

    @Insert("<script> INSERT INTO user (username, password, state, create_time, update_time) VALUES "
            + "<foreach collection =\"userList\" item=\"item\" separator =\",\"> "
            + "(#{item.username,jdbcType=VARCHAR}, #{item.password,jdbcType=VARCHAR}, #{item.state,jdbcType=INTEGER}, NOW(), NOW())"
            + "</foreach> </script> ")
    int[] insertBatch(List<UserDto> userList);

}

// Controller
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

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

    @GetMapping("/list")
    public IPage<User> list(PageRequest pageRequest, Integer state) {
        Page<User> page = new Page<>(pageRequest.getPageNum(), pageRequest.getPageSize());
        return userService.selectPageVo(page, state);
    }

    @PostMapping
    public ResponseResult save(@RequestBody UserDto user) {
        userService.save(user.convertToUser());
        return ResponseResult.success();
    }

    @PostMapping("/upload")
    public ResponseResult upload(@RequestBody List<UserDto> userList) {
        userService.insertBatch(userList);
        return ResponseResult.success();
    }

}

示例2:Mybatis-Plus Demo 代码(基础CRUD操作)

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

    @GetMapping("/{id}")
    public Object get(@PathVariable(name = "id") Long id) {
        return userService.getById(id);
    }

    @GetMapping("/page")
    public Object page(@RequestParam(defaultValue = "1") int current, @RequestParam(defaultValue = "10") int size) {
        return userService.page(new Page<>(current, size));
    }

    @PostMapping("/")
    public Object add(@RequestBody User user) {
        userService.save(user);
        return "success";
    }

    @PutMapping("/")
    public Object update(@RequestBody User user) {
        userService.updateById(user);
        return "success";
    }

    @DeleteMapping("/{id}")
    public Object delete(@PathVariable(name = "id") Long id) {
        userService.removeById(id);
        return "success";
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus 搭建与使用入门(小结) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java读取并下载网络文件的方法

    以下是详细的“Java读取并下载网络文件的方法”的攻略: 1. 使用Java标准库中的URL和URLConnection类实现 1.1 代码示例 import java.io.InputStream; import java.io.FileOutputStream; import java.net.URL; import java.net.URLConnec…

    Java 2023年5月20日
    00
  • 在windows下揪出java程序占用cpu很高的线程并完美解决

    以下是针对“在 Windows 下揪出 Java 程序占用 CPU 很高的线程并完美解决”的完整攻略: 1. 使用 Java 可视化工具揪出占用 CPU 较高的线程 步骤1:下载 VisualVM VisualVM 是一款 Java 虚拟机监控和性能分析工具,可以在 Windows 等多个平台上使用,具有良好的界面和体验。可以到以下网址下载 VisualVM…

    Java 2023年5月19日
    00
  • Java命令设计模式详解

    Java命令设计模式详解 本文将详细介绍Java命令设计模式。首先,我们会讲解什么是设计模式以及为什么要使用它们。接着,会详细讲解Java命令设计模式的相关概念以及在实际应用中的使用。最后,会提供两个示例说明,以帮助读者更好地掌握Java命令设计模式。 什么是设计模式? 在软件开发阶段,我们经常需要解决一些常见的问题,如对象的创建、系统的分布、通信的实现、异…

    Java 2023年5月26日
    00
  • java实现堆排序以及时间复杂度的分析

    下面我会详细讲解“java实现堆排序以及时间复杂度的分析”的完整攻略,包括定义、算法步骤、实现过程和时间复杂度的分析。 定义 堆排序是一种树形选择排序,它的排序过程类似于选择排序,建立在堆的基础之上。堆是一个近似完全二叉树的结构,并同时满足堆积的性质: 父节点的键值总是大于或等于任何一个子节点的键值。 每个节点的左右子树都是一个堆。 算法步骤 创建一个初始数…

    Java 2023年5月19日
    00
  • 详解Java的JDBC API的存储过程与SQL转义语法的使用

    详解Java的JDBC API的存储过程与SQL转义语法的使用 什么是存储过程? 存储过程是一种预定义在数据库中的过程,通过一条语句的执行,可以调用存储过程来完成一系列操作。存储过程通常用于执行重复性的任务。 在Java中,我们可以使用JDBC API来访问数据库,并执行存储过程。 JDBC API中调用存储过程的方法 在Java中,我们可以使用JDBC的C…

    Java 2023年5月20日
    00
  • Spring Boot使用FastJson解析JSON数据的方法

    Spring Boot使用FastJson解析JSON数据的方法 介绍 FastJson是一个Java语言编写的高性能JSON处理器,它是阿里巴巴开源的项目,相比其他的JSON处理器,FastJson具有非常快的序列化和反序列化速度,在大数据量的情况下性能表现优异,被广泛应用于阿里巴巴的各项业务和产品中。 Spring Boot是一个基于Spring框架的快…

    Java 2023年5月26日
    00
  • 常见的Java单元测试框架有哪些?

    常见的 Java 单元测试框架有 JUnit、TestNG、Spock 等。 JUnit JUnit 是一个 Java 单元测试框架,它是一个 Open Source 软件,遵循 Apache2.0 许可。JUnit 提供了一些注解和断言,可以使用它们编写测试代码。 示例说明 创建被测试类 public class Calculator { public i…

    Java 2023年5月11日
    00
  • jdk8的datetime时间函数使用示例

    下面我来详细讲解一下“jdk8的datetime时间函数使用示例”的完整攻略。 JDK8的DateTime时间函数使用示例 1. DateTime创建对象 在JDK8之前,Java的日期和时间的API非常难用和陈旧,但在JDK8中,Java提供了一个全新的日期和时间API(java.time),它提供了一种更简单、更易于使用和更安全的方式来处理日期和时间。 …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部