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

喜欢而已 提交于 2020-08-07 04:46:16

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

    在这里插入图片描述
    在这里插入图片描述


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!