欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-12 18:37:59
springboot+mybatis-plue实现内置的CRUD使用详情,这里暂时只介绍查询增加操作mybatis-plus的特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的 CRUD操作:内置通用 Mapper、通用Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda形式调用:通过 Lambda 表达式,方便的编写各类查询...

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);
        }
    

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

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

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

本文地址:https://blog.csdn.net/gumindong/article/details/107252159