详解springboot+mybatis-plue实现内置的CRUD使用详情

 更新时间:2020年07月12日 10:19:07   作者:Dlei东  
这篇文章主要介绍了详解springboot+mybatis-plue实现内置的CRUD使用详情,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

mybatis-plus的特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作
  • 强大的 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

首先搭建好springboot项目,引入pom文件

<!-- mybatis plus 依赖 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.1.0</version>
		</dependency>
		<!-- mybatis 依赖 -->

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.1</version>
		</dependency>

		<!-- mybatis 根据实体生成数据库表依赖 -->
		<dependency>
			<groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
			<artifactId>mybatis-enhance-actable</artifactId>
			<version>1.1.1.RELEASE</version>
		</dependency>

连接数据库这一步很关键,这里使用druid连接mysql数据库

<!-- mysql数据库-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- druid连接数据库 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.10</version>
		</dependency>

application-prod.yml数据源配置文件,这里使用com.mysql.cj.jdbc.Driver的druid数据源,你也可以直接写在application.yml配置文件中

spring:
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/lianxicrud?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 username: root
 password: 123456
 # 使用druid数据源
 type: com.alibaba.druid.pool.DruidDataSource
 driver-class-name: com.mysql.cj.jdbc.Driver
 
server:
	port: 8191 

新建mapper的空文件

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.psd.domain.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User>{
}

新建service及impl文件
Service文件继续IService
Impl继承ServiceImpl<UserMapper,User>实现service抽象接口
注ServiceImpl查询是直接this.list(),插入则使用userMapper.insert(user)
修改数据删除数据在单独在文章内容后文补充

import com.baomidou.mybatisplus.extension.service.IService;
import com.psd.domain.User;

import java.util.List;


public interface IUserService extends IService<User>{

 /**
  * 查询所有
  * @return
  */
 List<User> listAll();

	/**
  * id条件查询
  * @return
  */
 User listOne(Long id);

 /***
  * 保存
  * @param user
  * @return
  */
 int insert1(User user);

}
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.psd.domain.User;
import com.psd.mapper.UserMapper;
import com.psd.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;


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

 @Autowired
 private UserMapper userMapper;

 //查询所有
 @Override
 public List<User> listAll() {
  List<User> users = this.list();
  return users;
 }

 //条件查询
 public User listOne(Long id) {
  User user = this.getById(id);
  return user;
 }

 //保存
 public int insert1(User user){
  return userMapper.insert(user);

 }

}

user实体

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;


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

 private long id;
 private String name;
 private int age;
 private String email;
	//..使用lombok插件省列get set方法

}

控制器应用层类

import com.psd.domain.User;
import com.psd.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
public class UserController {

 @Autowired
 private IUserService userService;

 @GetMapping("/listAll")
 public List<User> listAll(){
  List<User> users = userService.listAll();
  return users;
 }

 @GetMapping("/listOne")
 public User listOne(){
  return userService.listOne(1L);
 }


 //保存
 @GetMapping("/save")
 public void baocun1(int age,String name,String email){
  User user1 = new User();
  user1.setAge(age);
  user1.setName(name);
  user1.setEmail(email);
  userService.insert1(user1);
 }
}

mybatis-plus修改数据操作

@Test
 public void update() {
 
  //修改值
  User user = new User();
  user.setAge(“20”);
  user.setName("李四");
 
  //修改条件意思就是修改值为user.setAge(“20”);user.setName("李四");像setEmail为null的视为不变,然后条件值为id=1
  UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
  userUpdateWrapper.eq("id", "1");
  boolean update = mapper.update(user, userUpdateWrapper);
 
  System.out.println(update);
 }

mybatis-plus删除数据操作

@Test
 public void delete() {
  QueryWrapper<User> queryWrapper = new QueryWrapper<>();
  //条件意思就是删除id=1的并且isNotNull指"id"字段不为空的
  queryWrapper
    .ge("id", 1)
    .isNotNull("id");
  int delete = mapper.delete(queryWrapper);
 }

直接浏览器请求,那么整个过程就完成了
http://localhost:8191/save?age=18&name=张磊&email=739595798@qq.com
http://localhost:8191/user/listOne


到此这篇关于详解springboot+mybatis-plue实现内置的CRUD使用详情的文章就介绍到这了,更多相关springboot+mybatis-plue内置CRUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Spring Cloud集成Nacos Config动态刷新源码剖析

    Spring Cloud集成Nacos Config动态刷新源码剖析

    这篇文章主要为大家介绍了Spring Cloud集成Nacos Config动态刷新源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • freemarker jsp java内存方式实现分页示例

    freemarker jsp java内存方式实现分页示例

    这篇文章主要介绍了freemarker jsp java内存方式实现分页示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Java用文件流下载网络文件示例代码

    Java用文件流下载网络文件示例代码

    这篇文章主要介绍了Java用文件流的方式下载网络文件,大家参考使用吧
    2013-11-11
  • FileUtils扩展readURLtoString读取url内容

    FileUtils扩展readURLtoString读取url内容

    这篇文章主要介绍了FileUtils扩展readURLtoString使用其支持读取URL内容为String,支持带POST传大量参数,大家参考使用吧
    2014-01-01
  • 深入了解Java内部类的用法

    深入了解Java内部类的用法

    java类的五大成员:属性,方法,构造器(构造方法),代码块,内部类。本文就来和大家详细讲讲ava内部类的用法,需要的小伙伴可以参考一下
    2022-07-07
  • MyBatis高级映射和查询缓存

    MyBatis高级映射和查询缓存

    这篇文章主要介绍了MyBatis高级映射和查询缓存的相关资料,需要的朋友可以参考下
    2016-06-06
  • Java同步锁Synchronized底层源码和原理剖析(推荐)

    Java同步锁Synchronized底层源码和原理剖析(推荐)

    这篇文章主要介绍了Java同步锁Synchronized底层源码和原理剖析,释放后,进入减减操作、直到为0然后唤醒队列,让他们去争夺锁,循环前面步骤,对Java同步锁Synchronized相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • Java之synchronized(含与ReentrantLock的区别解读)

    Java之synchronized(含与ReentrantLock的区别解读)

    文章主要介绍了`synchronized`和`ReentrantLock`的区别,包括它们的实现原理、公平性、灵活性、可中断性等方面,同时,文章详细解释了`synchronized`的使用方法,包括修饰实例方法、静态方法和代码块的情况,以及如何分析代码是否互斥和可重入性
    2025-01-01
  • 线程局部变量的实现 ThreadLocal使用及场景介绍

    线程局部变量的实现 ThreadLocal使用及场景介绍

    这篇文章主要为大家介绍了线程局部变量的实现 ThreadLocal使用及场景详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Java时间轮算法的实现代码示例

    Java时间轮算法的实现代码示例

    本篇文章主要介绍了Java时间轮算法的实现代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论