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

springboot+mybatis-plus实现内置的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-plus实现内置的CRUD使用详解的文章就介绍到这了,更多相关springboot mybatis-plus内置CRUD内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot+Mybatis+Vue 实现商品模块的crud操作

    准备工作 第一步 创建新module,名字为10-springboot-goods-vue. 第二步 添加maven依赖并进行初步配置(拷贝即可) 第三步 拷贝pojo,dao,service包中的所有接口和类. 第四步 拷贝静态资源到static目录(例如vue.js,axios.min.js) 商品查询设计及实现 创建GoodsController并定义相关方法,代码如下: package com.cy.pj.goods.controller; import com.cy.pj.goods.

  • Spring Boot整合Mybatis并完成CRUD操作的实现示例

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官方一点: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordina

  • SpringBoot整合Mybatis实现CRUD

    准备工具:IDEA jdk1.8 Navicat for MySQL Postman 一.新建Project 选择依赖:mybatis Web Mysql JDBC 项目结构 pom依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o

  • Spring boot整合Mybatis实现级联一对多CRUD操作的完整步骤

    前言 在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Mybatis并完成CRUD操作,这是本文操作的基础.本文先准备一个测试的数据库,然后使用MyBatis Generator进行部分代码自动生成,再以一个例子来展示稍微高级点的操作:使用Mybatis完成级联一对多的CRUD操作. 数据库准备 数据库用到三张表:user表,role表,user_ro

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

    mybatis-plus的特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD操作:内置通用 Mapper.通用Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4种主键策略(内含分布式唯一 ID 生成器

  • springboot+mybatis-plus实现内置的CRUD使用详解

    springboot+mybatis-plus实现内置的CRUD使用详情,具体修改删除操作内容后文也有详细说明 mybatis-plus的特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD操作:内置通用 Mapper.通用Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda形式调用:通过 Lambda 表达式,方

  • SpringBoot内置tomcat启动原理详解

    前言 不得不说SpringBoot的开发者是在为大众程序猿谋福利,把大家都惯成了懒汉,xml不配置了,连tomcat也懒的配置了,典型的一键启动系统,那么tomcat在springboot是怎么启动的呢? 内置tomcat 开发阶段对我们来说使用内置的tomcat是非常够用了,当然也可以使用jetty. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo

  • angular内置provider之$compileProvider详解

    一.方法概览 1.directive(name, directiveFactory) 2.component(name, options) 3.aHrefSanitizationWhitelist([regexp]); 4.imgSrcSanitizationWhitelist([regexp]); 5.debugInfoEnabled([enabled]); 6.strictComponentBindingsEnabled([enabled]); 7.onChangesTtl(limit);

  • python 函数中的内置函数及用法详解

    今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. print(abs(-18)) print(abs(0.15)) result: 18 0.15 2.all(iterable) 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False. print(all(['a','b',

  • Python反射和内置方法重写操作详解

    本文实例讲述了Python反射和内置方法重写操作.分享给大家供大家参考,具体如下: isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象,类似 type() class Foo(object): pass obj = Foo() isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Fo

  • Django 内置权限扩展案例详解

    当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建三个权限,分别为:add.change.delete,如果给用户或组赋予delete的权限,那么用户将可以删除这个model下的所有数据. 原本overmind只管理了我们自己部门的数据库,权限设置只针对具体的功能不针对细粒度的数据库实例,例如用户A 有审核的权限,那么用户A 可以审核所有的DB,此

  • Python 内置方法和属性详解

    目录 1.1 _del_方法(知道) 1.2 _str_ 方法 总结 1.1 _del_方法(知道) 在Python中 当使用 类名()创建对象时,为对象 分配完空间后,自动 调用 _init_方法: 当一个 对象被从内存中阶段 前,会 自动 调用 _del_方法: 生命周期 1).一个对象从调用 类名()创建,生命周期开始: 2).一个对象的 _del_ 方法一旦被调用,生命周期结束: 3).在对象的生命周期内,可以访问对象属性,或者让对象调用方法: class Cat(): def __in

  • Java 内置接口 Serializable示例详解

    目录 引言 Serializable 接口 Serializable 是一个标记型接口 serializable Version UID Java 序列化与JSON序列化的区别 Java序列化相较于 JSON 的优势 Java 类对象的序列化代码演示 总结 引言 上一部分我们着重讲了 Java 集合框架中在开发项目时经常会被用到的数据容器,在讲解.演示使用实践的同时,把这个过程中遇到的各种相关知识点:泛型.Lambada.Stream 操作,一并给大家做了梳理. 从这篇开始我们进入下一部分,用三

随机推荐