Springboot注解,【MyBatis-Plus】第一章 快速入门

 2023-09-25 阅读 24 评论 0

摘要:第一章 快速入门 文章目录第一章 快速入门一、介绍1.概述2.特性二、入门案例1.安装插件2.准备工作3.MyBatis-Puls 替换 MyBatis4.修改 StudentDao 接口5.修改实体类 Student.java6.修改 StudentServiceImpl.java7.修改 StudentController.java 一、介绍 1.概述 MyBatis-Plus 是

第一章 快速入门

文章目录

  • 第一章 快速入门
  • 一、介绍
    • 1.概述
    • 2.特性
  • 二、入门案例
    • 1.安装插件
    • 2.准备工作
    • 3.MyBatis-Puls 替换 MyBatis
    • 4.修改 StudentDao 接口
    • 5.修改实体类 Student.java
    • 6.修改 StudentServiceImpl.java
    • 7.修改 StudentController.java

一、介绍

1.概述

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生

2.特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CRUD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便地编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入(Write once,use anywhere)
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper、Model、Service、Controller 层代码,支持模板引擎,更有超多自定义配置
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启动该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete、update 操作智能分析阻断,也可自定义拦截规则,预防误操作

二、入门案例

1.安装插件

在这里插入图片描述

2.准备工作

这次项目搭建基于【小项目】专栏里的 SSM 实现单表 CRUD,在此基础上整合 MyBatis-Plus

3.MyBatis-Puls 替换 MyBatis

Springboot注解?需要删除原来的 mybatis 依赖和 yml 配置文件中的 mybatis 配置,否则可能会冲突。resources 下的 mapper 文件夹也可以删除了,我们不再需要写 SQL

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>
</dependency>

4.修改 StudentDao 接口

虽然不改名也并不影响,但是为了规范还是修改一下。记得修改包名的时候把启动类上的 MapperScan 注解的路径也一并修改了

package com.sisyphus.studentssm.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sisyphus.studentssm.pojo.Student;
import org.springframework.stereotype.Repository;@Repository
public interface StudentMapper extends BaseMapper<Student> {}

5.修改实体类 Student.java

package com.sisyphus.studentssm.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;/*** @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: $*/
//如果表名和实体类名一致则可以选择不写
@TableName(value = "student")
public class Student {//如果属性名采用驼峰命名 value 可以选择不设置,也就是说 userId 会被自动转换为 user_id//注意!如果字段名也为 userId,那么就会报错,除非设置 value = userId 或者在 yml 中关闭驼峰式编码//@TableId 用于指定主键以及主键类型@TableId(value = "id",type = IdType.INPUT)private Integer id;//@TableField 用于指定普通字段@TableField(value = "name")private String name;@TableField(value = "email")private String email;@TableField(value = "age")private Integer age;@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +", age=" + age +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

6.修改 StudentServiceImpl.java

StudentService 接口可以删除了

package com.sisyphus.studentssm.service;import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sisyphus.studentssm.mapper.StudentMapper;
import com.sisyphus.studentssm.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;/*** @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: $*/
@Service
public class StudentServiceImpl implements IService<Student> {@Autowiredprivate StudentMapper studentMapper;//查@Overridepublic Student getById(Serializable id) {return studentMapper.selectById(id);}//删@Overridepublic boolean removeById(Serializable id) {return studentMapper.deleteById(id) > 0;}//增@Overridepublic boolean save(Student entity) {return studentMapper.insert(entity) > 0;}//改@Overridepublic boolean updateById(Student entity) {return studentMapper.updateById(entity) > 0;}//以下方法都是接口强制实现的方法,不用过多关注@Overridepublic boolean saveBatch(Collection<Student> entityList, int batchSize) {return false;}@Overridepublic boolean saveOrUpdateBatch(Collection<Student> entityList, int batchSize) {return false;}@Overridepublic boolean updateBatchById(Collection<Student> entityList, int batchSize) {return false;}@Overridepublic boolean saveOrUpdate(Student entity) {return false;}@Overridepublic Student getOne(Wrapper<Student> queryWrapper, boolean throwEx) {return null;}@Overridepublic Map<String, Object> getMap(Wrapper<Student> queryWrapper) {return null;}@Overridepublic <V> V getObj(Wrapper<Student> queryWrapper, Function<? super Object, V> mapper) {return null;}@Overridepublic BaseMapper<Student> getBaseMapper() {return null;}@Overridepublic Class<Student> getEntityClass() {return null;}
}

7.修改 StudentController.java

package com.sisyphus.studentssm.controller;import com.baomidou.mybatisplus.extension.service.IService;
import com.sisyphus.studentssm.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: $*/
@RestController
@RequestMapping("student")
public class StudentController {//没有 StudentService 接口了,注入 IService<Student> 接口@Autowiredprivate IService<Student> studentService;@RequestMapping("query")public Student queryById(@RequestParam("id") Integer id){return studentService.getById(id);}@RequestMapping("insert")public void insert(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam("email") String email, @RequestParam("age") Integer age){Student student = new Student();student.setId(id);student.setName(name);student.setEmail(email);student.setAge(age);studentService.save(student);}@RequestMapping("delete")public void deleteById(@RequestParam("id") Integer id){studentService.removeById(id);}@RequestMapping("update")public void update(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam("email") String email, @RequestParam("age") Integer age){Student student = new Student();student.setId(id);student.setName(name);student.setEmail(email);student.setAge(age);studentService.updateById(student);}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/95659.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息