简介:术道并行,从零打造个人知识体系,图文视频同步更新。
本文学习章节:IT技能-Java基础-05案例-SpringBoot+Mybatis-plus+Layui实现模块增删改查
本文学习内容: 模块的增删改查
本文视频地址:待更新
通过Java基础的学习,我们进行一个实战项目:实现一个用户模块的增删改查。
后台框架:SpringBoot 2.4.3
数据库:H2内置数据库
ORM:Mybatis-Plus 参考文档:https://mp.baomidou.com/guide/
前端:Layui 2.5.7 参考文档:https://www.layui.com/doc/
开发工具:IDEA2020.3
使用idea在线方式直接搭建。
修改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进行接口测试了。
我们使用layuiadmin,需要实现下载好layuiadmin。我们以其中的user页面修改
我们修改的就是这3个文件,其中userform-add.html是新增的。
list.html
layuiAdmin 网站用户
usrform.html
layuiAdmin 网站用户 iframe 框
usrform-add.html
layuiAdmin 网站用户 iframe 框
访问默认端口:http://127.0.0.1:8080/views/userlist.html
正常测试新增,修改,删除,批量删除均无问题
一个模块的增删改查什么简单,这也是入门的基础。
mybatis-plus为我们做了基础操作的封装,省去了我们写增删改查基础代码,大大提高了效率。
layuiadmin十分适合管理类系统开发,拥有众多组件。
https://gitee.com/aiowang/sml.git