main
2991692032 2 months ago
parent ef3264756c
commit af5b8caf9e

@ -1,2 +1,11 @@
# the_second_work
在本地配置mysql环境并创建userservice数据库,在application.yml配置文件中设置数据库账号密码,根据下面sql语句建表:
```sql
CREATE TABLE user (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL
);
```

@ -51,6 +51,16 @@
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>

@ -1,4 +1,4 @@
package com.example.demo;
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@ -1,25 +1,32 @@
package com.example.demo.controller;
package com.example.controller;
import com.example.demo.entity.User;
import com.example.entity.User;
import com.example.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.reactive.TransactionalOperator;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@RequestMapping("/users")
@Slf4j
public class UserController {
static Map<Long, User> users = Collections.synchronizedMap(new HashMap<>());
@Autowired
private UserService userService;
@GetMapping("/")
@Operation(summary = "获取用户列表")
public List<User> getUserList(){
List<User> userList = new ArrayList<>(users.values());
return userList;
log.info("获取用户列表");
return userService.list();
}
@ -27,32 +34,37 @@ public class UserController {
@Operation(summary = "创建用户",description = "根据user对象创建用户")
public String postUser(@io.swagger.v3.oas.annotations.parameters.RequestBody(description = "用户实体类")
@org.springframework.web.bind.annotation.RequestBody User user) {
users.put(user.getId(), user);
log.info("创建用户:{}",user);
userService.save(user);
return "success";
}
@Operation(summary = "获取用户详细信息",description = "根据url的id来获取用户详细信息")
@GetMapping("/{id}")
public User getUser(@Parameter(description ="用户id" )@PathVariable Long id) {
return users.get(id);
log.info("根据id获取用户,id={}",id);
return userService.selectById(id);
}
@PutMapping("/{id}")
@Operation(summary = "更新用户详细信息",description = "根据url的id指定更新对象,并根据传过来的user信息更新用户详细信息")
@Transactional
public String putUser(@Parameter(description = "用户ID")@PathVariable Long id,@RequestBody(description = "用户实体类")
@org.springframework.web.bind.annotation.RequestBody User user){
User u = users.get(id);
log.info("更新用户,id={}",user.getId());
User u = userService.selectById(id);
u.setName(user.getName());
u.setAge(user.getAge());
users.put(id, u);
userService.update(u);
return "success";
}
@DeleteMapping("/{id}")
@Operation(summary = "删除用户",description = "根据url的id来指定删除对象")
public String deleteUser(@Parameter(description = "用户ID")@PathVariable Long id) {
users.remove(id);
log.info("产出用户,id={}",id);
userService.remove(id);
return "success";
}
}

@ -1,4 +1,4 @@
package com.example.demo.entity;
package com.example.entity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@ -0,0 +1,21 @@
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List<User>list();
void save(User user);
User selectById(Long id);
void update(User user);
void deleteById(Long id);
}

@ -0,0 +1,40 @@
package com.example.service.Impl;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> list(){
return userMapper.list();
}
@Override
public void save(User user){
userMapper.save(user);
}
@Override
public User selectById(Long id){
return userMapper.selectById(id);
}
@Override
public void update(User user){
userMapper.update(user);
}
@Override
public void remove(Long id){
userMapper.deleteById(id);
}
}

@ -0,0 +1,18 @@
package com.example.service;
import com.example.entity.User;
import java.util.List;
public interface UserService {
List<User> list();
void save(User user);
User selectById(Long id);
void update(User user);
void remove(Long id);
}

@ -1 +0,0 @@
spring.application.name=demo

@ -0,0 +1,13 @@
spring:
application:
name: demo
datasource:
url: jdbc:mysql://localhost:3306/userservice
username: root
password: 123456
mybatis:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath:mapper/*.xml

@ -0,0 +1,29 @@
<?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.mapper.UserMapper">
<select id="list" resultType="com.example.entity.User">
select * from user
</select>
<insert id="save" >
insert into user (name,age) values (#{name},#{age})
</insert>
<select id="selectById" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
<update id="update">
update user
<set>
<if test="name!=null and name!=''">name=#{name},</if>
<if test="age!=null">age=#{age}</if>
</set>
where id=#{id}
</update>
<delete id="deleteById" >
delete from user where id=#{id}
</delete>
</mapper>

@ -1,6 +1,6 @@
package com.example.demo;
package com.example;
import com.example.demo.controller.UserController;
import com.example.controller.UserController;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
Loading…
Cancel
Save