1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【MyBatis-Plus】第一章 快速入门

【MyBatis-Plus】第一章 快速入门

时间:2021-10-04 22:42:19

相关推荐

【MyBatis-Plus】第一章 快速入门

第一章 快速入门

文章目录

第一章 快速入门一、介绍1.概述2.特性二、入门案例1.安装插件2.准备工作3.MyBatis-Puls 替换 MyBatis4.修改 StudentDao 接口5.修改实体类 Student.java6.修改 StudentServiceImpl.java7.修改 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

需要删除原来的 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;@Repositorypublic 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: $*/@Servicepublic 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);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。