IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查

简介:术道并行,从零打造个人知识体系,图文视频同步更新。
本文学习章节:IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查
本文学习内容: 模块的增删改查
本文视频地址:待更新

1 概述

通过Java基础的学习,我们进行一个实战项目:实现一个用户模块的增删改查。

2 技术选型

后台框架:SpringBoot 2.4.3
数据库:H2内置数据库
ORM:Mybatis-Plus 参考文档:https://mp.baomidou.com/guide/
前端:Layui 2.5.7 参考文档:https://www.layui.com/doc/
开发工具:IDEA2020.3

3 开发步骤

3.1 SpringBoot框架搭建

使用idea在线方式直接搭建。

  • 步骤一:新建工程
    File --> New -->Projet
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第1张图片

  • 步骤二:选择在线搭建
    左侧选择Spring Initializr,右边选择 Default,点击 Next
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第2张图片

  • 步骤三:初始化设置
    初始化设置,如图
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第3张图片

  • 步骤四:选择依赖的jar包
    Developer Tools --> Lombok;Web–>Spring Web;SQL–>H2 Database
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第4张图片

IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第5张图片

IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第6张图片

  • 步骤五:设置项目名和项目路径
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第7张图片

  • 步骤六:检查是否工程是否正常
    IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第8张图片

3.2 工程目录结构

我们按照标准工程,创建目录如下:
IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第9张图片

3.3 Mybatis-plus、H2使用

按照如下结构创建或修改文件:
IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第10张图片

修改pom.xml文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.3
         
    
    com.aiowang
    demo
    0.0.1-SNAPSHOT
    sml
    springboot+mybatis-plus+Layui
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.2
        

        
            com.h2database
            h2
            runtime
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            junit
            junit
            4.10
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    


修改配置文件:

# DataSource Config
spring:
  datasource:
    driver-class-name: org.h2.Driver
    schema: classpath:db/schema-h2.sql
    data: classpath:db/data-h2.sql
    url: jdbc:h2:./data/test
    username: root
    password: 123456
    initialization-mode: always
  h2:
    console:
      path: /h2-console
      enabled: true

新增数据库初始脚本
data-h2.sql:

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');

schema-h2.sql:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id VARCHAR(32) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

控制层controller:

package com.aiowang.sml.controller;

import com.aiowang.sml.domain.User;
import com.aiowang.sml.service.UserService;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/11 22:04
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;


    /**
     * 新增
     *
     * @param user 对象
     * @return 返回
     */
    @PostMapping(value = "")
    public Boolean add(@RequestBody User user) {

        try {
            user.setId(UUID.randomUUID().toString().replaceAll("-",""));
            userService.save(user);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 根据id删除
     *
     * @param id 实体id
     * @return 成功标识
     */
    @DeleteMapping(value = "/{id}")
    public Boolean delete(@PathVariable("id") String id) {
        try {
            userService.removeById(id);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    @DeleteMapping(value = "")
    public Boolean delete(@RequestBody User[] users) {
        try {
            List ids = new ArrayList<>();
            Arrays.stream(users).forEach(s->{
                ids.add(s.getId());
            });
            userService.removeByIds(ids);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 更新
     *
     * @param user 对象
     * @return 成功标识
     */
    @PutMapping(value = "")
    public Boolean edit( @RequestBody User user) {
        try {
            userService.updateById(user);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 根据id查询
     *
     * @param id 实体id
     * @return 成功标识
     */
    @GetMapping(value = "/{id}")
    public User key(@PathVariable("id") String id) {
        try {
            return userService.getById(id);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


    /**
     * 分页查询
     *
     * @return ResponseVO-分页实体
     */
    @GetMapping(value = "")
    public IPage page(Integer offset,Integer limit,String name) {
        Page page = new Page<>(offset,limit);
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.like(name!=null, "name", name);
        return userService.page(page,queryWrapper);

    }
}

实体层domain:

package com.aiowang.sml.domain;

import lombok.Data;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/10 22:38
 */
@Data
public class User {
    private static final long serialVersionUID = 1L;
    private String id;
    private String name;
    private Integer age;
    private String email;
}

mapper层:

package com.aiowang.sml.mapper;

import com.aiowang.sml.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/10 22:38
 */
public interface UserMapper extends BaseMapper {

}

service层

package com.aiowang.sml.service;

import com.aiowang.sml.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/11 21:56
 */
public interface UserService extends IService {
}

service实现层

package com.aiowang.sml.service.impl;

import com.aiowang.sml.domain.User;
import com.aiowang.sml.mapper.UserMapper;
import com.aiowang.sml.service.UserService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.Map;
import java.util.function.Function;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/11 21:56
 */
@Service
public  class  UserServiceImpl extends ServiceImpl implements UserService {

}

config:

package com.aiowang.sml.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author aiowang
 * @description:
 * @date 2021/3/11 22:28
 */
@Configuration
@MapperScan("com.aiowang.sml.mapper")
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

}

修改启动类SmlApplication

package com.aiowang.sml;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.aiowang.sml.mapper")
public class SmlApplication {

    public static void main(String[] args) {
        SpringApplication.run(SmlApplication.class, args);
    }

}

此时,后台业务代码已开发完毕,可以使用postman进行接口测试了。

3.4 前端Layuiadmin前端实现

我们使用layuiadmin,需要实现下载好layuiadmin。我们以其中的user页面修改
IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第11张图片

我们修改的就是这3个文件,其中userform-add.html是新增的。
list.html






  
  layuiAdmin 网站用户
  
  
  
  
  



  

usrform.html






  
  layuiAdmin 网站用户 iframe 框
  
  
  
  



  

usrform-add.html






  
  layuiAdmin 网站用户 iframe 框
  
  
  
  



  

3.5 运行测试

对SmlApplication右键,如图运行即可。
IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第12张图片

访问默认端口:http://127.0.0.1:8080/views/userlist.html
IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查_第13张图片

正常测试新增,修改,删除,批量删除均无问题

4 总结

一个模块的增删改查什么简单,这也是入门的基础。
mybatis-plus为我们做了基础操作的封装,省去了我们写增删改查基础代码,大大提高了效率。
layuiadmin十分适合管理类系统开发,拥有众多组件。

5 源码获取

https://gitee.com/aiowang/sml.git

你可能感兴趣的:(#,IT操作知识-案例教程,java,数据库,layui)