项目描述:最近入职的公司使用的springboot构建项目,由于以前学习的传统的ssm框架,而且没有运用到实际中去。在此通过这个项目来熟悉整个流程。
此项目是一个比较简单的项目,主要是对用户增删改查的功能,分页功能也没有加入。
整个项目分包结构:entity实例包,dto包、dto.map、config、mapper、service、controller
解释:本例中用的是User实例,对应的是UserDTO,UserDTO方便于传输数据,数据以json格式传输。
1.UserDtoMap用于实体类和DTO类的转化,前端通过传入json格式的数据,controller中通过DTO类去接收,然后转化为对应的实体类,实体类和数据库之间进行操作。后端向前端返回String类型的数据或者DTO类型的数据。
2.config中的是一个swagger的配置类,mapper中是一个UserMapper.java的接口,此接口中定义了一些对User对象的增删改查,对应的是resources下的mapper,也就是UserMaper.xml文件,定义了对应的SQL语句,实现UserMapper.java接口。
具体的代码如下:
config包下
复制代码
package com.example.learndemo.controller;
import com.example.learndemo.dto.UserDTO;
import com.example.learndemo.dto.map.UserDtoMap;
import com.example.learndemo.entity.User;
import com.example.learndemo.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@Api(tags = "1.1、用户管理接口")
@RequestMapping("/v1/userMg")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
/**
* 查询所有用户,未加入分页功能
*/
@ApiOperation(value = "获取所有用户信息")
@GetMapping
public List<UserDTO> getAll(){
List<User> userList = userService.findAll();
List<UserDTO> userDTOList = UserDtoMap.MAP.to(userList);
return userDTOList;
}
/**
* 添加用户
*/
@ApiOperation(value = "添加用户")
@PostMapping
public String insert(@Valid @RequestBody UserDTO userDTO){
//转换数据
User user = UserDtoMap.MAP.from(userDTO);
//插入数据
int result = userService.insertOne(user);
//根据插入的结果返回对应的请求结果
return result>0 ? "SUCCESS" : "error";
}
/**
* 删除用户
*/
@ApiOperation(value = "删除用户")
@DeleteMapping(value = "/{id}")
public String delete(@PathVariable(value = "id") Long id){
int result = userService.deleteOne(id);
return result>0 ? "SUCCESS" : "error";
}
/**
* 更新用户,根据id去更新
*/
@ApiOperation(value = "更新用户信息")
@PutMapping(value = "/{id}")
public String update(@ApiParam(value = "主键id",required = true) @PathVariable(value = "id") Long id,
@RequestBody UserDTO userDTO){
User user = userService.findById(id);
//断言该对象不为空,如果为空,抛出message信息
Assert.notNull(user,"该数据不存在");
user = UserDtoMap.MAP.from(userDTO);
user.setId(id);
int result = userService.update(user);
return result>0 ? "SUCCESS" : "error";
}
}
复制代码
entity包下
复制代码
package com.example.learndemo.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
/**
* 主键id
*/
private Long id;
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
private static final long serialVersionUID = 1L;
}
复制代码
建表sql
复制代码
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_name` varchar(20) DEFAULT NULL COMMENT '用户名',
`password` varchar(32) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1006 DEFAULT CHARSET=utf8 COMMENT='用户管理';
复制代码
dto包下
复制代码
package com.example.learndemo.dto;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "UserDTO", description = "用户管理的DTO")
public class UserDTO implements Serializable {
/**
* 主键id
*/
@JSONField(serializeUsing = ToStringSerializer.class)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 用户名
*/
@ApiModelProperty(value="用户名")
private String userName;
/**
* 密码
*/
@ApiModelProperty(value="密码")
private String password;
private static final long serialVersionUID = 1L;
}
复制代码
dto.map包下
复制代码
package com.example.learndemo.dto.map;
import java.util.List;
import org.mapstruct.InheritConfiguration;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mappings;
public interface BasicMapper<SOURCE, TARGET> {
@Mappings({})
@InheritConfiguration
TARGET to(SOURCE var1);
@InheritConfiguration
List<TARGET> to(List<SOURCE> var1);
@InheritInverseConfiguration
SOURCE from(TARGET var1);
@InheritInverseConfiguration
List<SOURCE> from(List<TARGET> var1);
}
复制代码
复制代码
package com.example.learndemo.dto.map;
import com.example.learndemo.dto.UserDTO;
import com.example.learndemo.entity.User;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface UserDtoMap extends BasicMapper<User, UserDTO>{
/**
* 获取Mapper
*/
UserDtoMap MAP = Mappers.getMapper(UserDtoMap.class );
}
复制代码
mapper包下:
复制代码
package com.example.learndemo.mapper;
import com.example.learndemo.entity.User;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserMapper {
int insertOne(User user);
int update(User user);
int deleteOne(Long id);
User findById(Long id);
List<User> findAll();
}
复制代码
service包下:
复制代码
package com.example.learndemo.service;
import com.example.learndemo.entity.User;
import java.util.List;
public interface UserService {
int insertOne(User user);
int update(User user);
int deleteOne(Long id);
User findById(Long id);
List<User> findAll();
}
复制代码
service实现类:
复制代码
package com.example.learndemo.service.impl;
import com.example.learndemo.entity.User;
import com.example.learndemo.mapper.UserMapper;
import com.example.learndemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author wxc
*/
@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
@Autowired
public UserServiceImpl(UserMapper userMapper) {
this.userMapper = userMapper;
}
@Override
public int insertOne(User user) {
return userMapper.insertOne(user);
}
@Override
public int update(User user) {
return userMapper.update(user);
}
@Override
public int deleteOne(Long id) {
return userMapper.deleteOne(id);
}
@Override
public User findById(Long id) {
return userMapper.findById(id);
}
@Override
public List<User> findAll() {
return userMapper.findAll();
}
}
复制代码
启动类:
复制代码
package com.example.learndemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
//@EnableConfigurationProperties(ReadProperties.class)
@MapperScan("com.example.learndemo.mapper")
@SpringBootApplication
@ServletComponentScan
@EnableSwagger2
public class LearnDemoApplication {
public static void main(String[] args) {
SpringApplication.run(LearnDemoApplication.class, args);
}
}
复制代码
resources目录下mapper包下:
复制代码
<?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.learndemo.mapper.UserMapper">
<insert id="insertOne" parameterType="com.example.learndemo.entity.User">
insert into user(user_name,password) values(#{userName}, #{password})
</insert>
<update id="update" parameterType="com.example.learndemo.entity.User">
update user set user_name=#{userName},password=#{password} WHERE id=#{id}
</update>
<delete id="deleteOne" parameterType="long">
delete from user where id=#{_parameter}
</delete>
<select id="findById" parameterType="long" resultType="com.example.learndemo.entity.User">
select id,user_name userName,password from user where id=#{_parameter}
</select>
<select id="findAll" resultType="com.example.learndemo.entity.User">
select id,user_name userName,password from user
</select>
</mapper>
复制代码
application.yml文件:
复制代码
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/learndb
username: root
password: root
# mybatis的Mapper是他扫描
mybatis:
# type-aliases-package: com.yuanmao.certs.apps.domain.entity
mapper-locations: classpath:mapper/*.xml
复制代码
application-dev.yml文件:
server:
port: 8081
访问http://127.0.0.1:8081/swagger-ui.html最终效果:
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有