简介:本文从0-1简单实现SpringBoot的CRUD。
1、工程目录结构
2、pom.xml 配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
3、application.properties 配置
# 应用名称
spring.application.name=crud
# 应用服务 WEB 访问端口
server.port=8080
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath*:mappers/*.xml
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.example.crud.domain.entity
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/crud?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123456
4、entity
package com.example.crud.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "crud.user")
public class User {
/**
* 用户id
*/
private String id;
/**
* 用户账号
*/
private String userName;
/**
* 用户密码
*/
private String password;
}
5、Mapper接口
package com.example.crud.domain.persistence;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.crud.domain.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
/**
* 添加
* @param user
* @return
*/
int insert(User user);
/**
* 通过id查询
* @param id
* @return
*/
User selectById(@Param("id") String id);
}
6、Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.crud.domain.persistence.UserMapper">
<insert id="insert" parameterType="java.util.Map">
insert into user
("id","user_name","password")
values (#{id},#{userName},#{password})
</insert>
<select id="selectById" resultType="com.example.crud.domain.entity.User">
select *
from user
where
id = #{id}
</select>
</mapper>
7、Service接口
package com.example.crud.domain.service;
import com.example.crud.api.form.UserForm;
import com.example.crud.domain.entity.User;
import org.springframework.web.bind.annotation.PathVariable;
public interface UserService {
/**
* 添加/编辑
* @param userForm
* @param user
* @return
*/
User saveOrUpdate (UserForm userForm, User user);
/**
* 物理删除(单条)
* @param id
* @return
*/
int deleteById(String id);
/**
* 通过id查询
* @param id
* @return
*/
User selectById(@PathVariable("id") String id);
}
8、Impl实现类
package com.example.crud.domain.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.crud.api.form.UserForm;
import com.example.crud.domain.entity.User;
import com.example.crud.domain.persistence.UserMapper;
import com.example.crud.domain.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
/**
* 添加/编辑
* @param userForm
* @param user
* @return
*/
@Override
public User saveOrUpdate(UserForm userForm, User user) {
if (user == null) {
User copyUser = new User();
BeanUtils.copyProperties(userForm, copyUser);
copyUser.setId(String.valueOf(new Date().getTime()));
userMapper.insert(copyUser);
return copyUser;
} else {
BeanUtils.copyProperties(userForm, user);
userMapper.updateById(user);
return user;
}
}
/**
* 物理删除
* @param id
* @return
*/
@Override
public int deleteById(String id) {
return userMapper.deleteById(id);
}
/**
* 通过id查询
* @param id
* @return
*/
@Override
public User selectById(String id) {
return userMapper.selectById(id);
}
}
9、Form类接收Body中JSON内容
package com.example.crud.api.form;
import lombok.Data;
@Data
public class UserForm {
/**
* 编辑信息id
*/
private String id;
/**
* 用户账号
*/
private String userName;
/**
* 用户密码
*/
private String password;
}
10、controller 控制层
package com.example.crud.api.controller;
import com.example.crud.api.form.UserForm;
import com.example.crud.domain.entity.User;
import com.example.crud.domain.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/v1/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 添加编辑
* @param userForm
* @return
*/
@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST)
public User saveOrUpdate(@RequestBody UserForm userForm) {
User userResult = new User();
if (userForm.getId() != null && userForm.getId() != "") {
User user = userService.selectById(userForm.getId());
if (user != null) {
userResult = userService.saveOrUpdate(userForm, user);
}
} else {
userResult = userService.saveOrUpdate(userForm, null);
}
return userResult;
}
/**
* 物理删除(单条/批量)
* @param id
* @return
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public int delete(@PathVariable("id") String id ) {
return userService.deleteById(id);
}
/**
* 通过id查询
* @param id
* @return
*/
@RequestMapping(value = "/selectById/{id}", method = RequestMethod.GET)
public User selectById(@PathVariable("id") String id) {
return userService.selectById(id);
}
}
Postman接口测试
1、添加/编辑
2、查看
3、删除