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是一门面向对象的编程语言,这意味着它支持面向对象的编程风格及相关的特性,如封装、继承和多态性。本文将讲解Java面向对象中的继承、构造方法、重写和重载的具体原理和应用。 1. 继承 1.1 继承概述 继承是面向对象编程中的一种重要机制,它允许我们基于已有的类创建一个新类,这个新类继承了原有类的属性和行为,并且可以在此基础上添加新的属性和行为。被继承的…

    Java 2023年5月26日
    00
  • Java程序结构与常量变量难点解析

    Java程序结构与常量变量难点解析 Java程序的结构 主函数 Java程序的结构是比较灵活的,但最基本的结构必须要有一个主函数(main function)。主函数是程序的入口,也就是程序从这里开始执行。 主函数的格式如下: public static void main(String[] args) { // 这里是主函数的代码 } 其中,public表…

    Java 2023年5月30日
    00
  • IDEA创建Maven工程Servlet的详细教程

    我将为你提供详细的”IDEA创建Maven工程Servlet的详细教程”攻略。 目录 背景知识 创建Maven工程 导入Servlet依赖 创建Servlet类 部署项目 示例代码 总结 1. 背景知识 在开始创造Maven工程和Servlet之前,需要知道什么是Maven和Servlet,以及IDEA是如何工作的。 1.1 Maven Maven是一个开源…

    Java 2023年5月19日
    00
  • 分享几款linux下常见的vps控制面板

    Linux下有许多VPS(Virtual Private Server,虚拟专用服务器)控制面板可供选择。这些控制面板可以帮助用户通过图形用户界面(GUI)而非命令行来对服务器进行管理。下面将介绍几种在Linux系统下常见的VPS控制面板的安装步骤和使用方法。 1. cPanel cPanel是一个流行的基于Web的Linux控制面板,适用于VPS和独立服务…

    Java 2023年5月19日
    00
  • Java 字符串连接的性能问题分析

    一、Java 字符串连接的性能问题分析 背景字符串是 Java 中最常见的数据类型之一,由于其具有不可变性质,任何对字符串进行修改或连接的操作都会生成一个新的字符串对象,这就意味着会产生大量的中间对象,浪费了宝贵的内存资源。 解决方案Java 提供了多种方式进行字符串连接,包括 ‘+’ 运算符、StringBuffer 和 StringBuilder 等。其…

    Java 2023年5月26日
    00
  • JAVA中StackOverflowError错误的解决

    下面是“JAVA中StackOverflowError错误的解决”的完整攻略。 什么是StackOverflowError错误? 在Java程序中,如果方法被递归调用时,方法栈会不断地往系统栈内添加方法栈帧。如果方法递归层数过多,方法栈会撑满,此时就会发生StackOverflowError错误,如下所示: Exception in thread &quot…

    Java 2023年5月27日
    00
  • 详解Java中Period类的使用方法

    详解Java中Period类的使用方法 什么是Period类 在Java中,通过java.time包可以很方便地操作日期和时间。其中,Period类表示一个时间段,可以用于计算在两个日期之间的年、月、日的差值。Period类的构造函数有多种方式,最常见的是两个LocalDate对象直接计算得到。 构造Period对象 1. 两个LocalDate对象得到Pe…

    Java 2023年5月20日
    00
  • 面试必备之Java 最常见 200+ 面试题全解析

    首先,我们需要明确这个攻略的目的,即为Java岗位的应聘者提供一份全面的面试题目汇总以及这些题目的解析,帮助应聘者更好地准备及应对面试。 其次,我们需要确定一些指导原则,如:- 每一个面试题都必须有解答- 对于解答,需要给出尽可能详细的解释- 除了题目的解答,还需要添加一些相关的知识点或技巧 在撰写收集题目和解答的过程中,可以按照如下步骤进行: 第一步:收集…

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