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使用POI实现html和word相互转换

    针对“java使用POI实现html和word相互转换”的问题,我来详细讲解一下。 一、实现思路 POI 是 Apache 开源的用于操作 Microsoft Office 二进制文件格式的 Java API,它可以读取和写入 Excel、Word 和 PowerPoint 等文件。利用 POI,我们可以方便地将 word 和 html 相互转换。 具体实现…

    Java 2023年5月20日
    00
  • 解决Springboot-application.properties中文乱码问题

    解决 Springboot-application.properties 中文乱码问题需要遵循以下步骤: 步骤一:修改 IDE 编码 在开始修改 Springboot-application.properties 文件之前,首先需要确保 IDE 的编码设置正确。因为如果 IDE 的编码设置不正确,无论怎么修改 Springboot-application.p…

    Java 2023年5月20日
    00
  • JSP使用Servlet作为控制器实现MVC模式实例详解

    JSP使用Servlet作为控制器实现MVC模式实例详解 简介 MVC(Model-View-Controller)模式是一种常用于软件架构设计的模式,其目的是为了将应用程序分成不同的部分以便于设计和维护。其中,Model层负责处理应用程序的数据逻辑,View层负责渲染用户界面,Controller层负责控制应用程序流程和控制用户交互。 JSP(JavaSe…

    Java 2023年6月15日
    00
  • Resty极简restful框架快速接入Spring

    Resty是一个基于Java的类似于JAX-RS的RESTful框架,它提供了核心的RESTful应用层框架,可以快速搭建RESTful应用程序。在这里,我将详细介绍如何将Resty快速整合到Spring框架中。 准备工作 在整合Resty之前,请确认已经安装好以下环境: JDK 1.8或更高版本 Maven 3.0或更高版本 Spring框架 添加Mave…

    Java 2023年5月19日
    00
  • Java中字符序列的替换与分解的几种实现方法

    Java中字符序列的替换与分解的几种实现方法 字符串(String)是Java编程中最常见的数据类型之一。但是,如果我们要处理字符串中包含的字符序列时,String类的效率并不高。字符串的每次修改都会导致创建一个新的字符串对象,这会很容易造成内存泄漏和效率低下的问题。为了克服这些问题,Java提供了两种更适合于字符操作的数据类型:StringBuilder和…

    Java 2023年5月27日
    00
  • Java webSerivce的使用看完你就明白了

    下面是一个完整的攻略,帮助你了解和使用Java Web Service。 Java Web Service 的使用看完你就明白了 什么是 Java Web Service Java Web Service 是一种基于 XML 和 HTTP 协议的远程服务技术,它允许应用程序在不同操作系统、不同编程语言和不同的硬件平台上进行交互和通信。 Java Web Se…

    Java 2023年5月27日
    00
  • 什么是Java对象关系映射(ORM)?

    Java对象关系映射(ORM)是一种理念,它将数据库中的关系数据模型转换为Java对象模型,并且提供了一种交互式的方式,使得Java程序可以访问和操作数据库,而不必使用SQL语言。ORM的使用可以大幅度减少代码的重复性,提高开发效率。 下面是一个基于ORM实现的小型Java Web应用的开发过程: 首先,我们需要选择一款Java ORM框架,常见的有Hibe…

    Java 2023年5月11日
    00
  • Java实现考试系统

    Java实现考试系统攻略 概述 本文介绍如何使用Java实现一个考试系统。该系统包含了以下功能: 单选题和多选题的创建和管理 考试试卷生成和管理 学生考试、交卷和阅卷 系统设计 数据库设计 考试系统需要存储题目、试卷和学生等信息。因此需要设计以下表格: question 表:用于存储题目信息,包括题目内容、选项和正确答案等。 exam 表:用于存储试卷信息,…

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