В предыдущей статье уже было представленоОсновной процесс использования SpringBoot, в этой статье в основном представлена реализация простого интерфейса с проектом SpringBoot, настроенным в этой статье.
Окончательный каталог проекта выглядит следующим образом:
1. Структура каталогов проекта
Это простая структура каталогов, предназначенная только для справки, которая в основном разделена на четыре категории:
- repository
Унаследованный от JpaRepository, который в основном инкапсулирует действие sql по работе с базой данных, вы можете настроить метод для работы с базой данных или настроить оператор sql для работы с базой данных. репозиторий — мессенджер Jpa и непосредственный оператор базы данных;
- controller
Перед классом следует обратить внимание на класс интерфейса запроса, класс запроса/ответа и т. д.;
- service
Обработать экземпляр модели и синхронизировать экземпляр модели с базой данных через репозиторий;
- model
Экземпляр данных, Entity соответствует таблице в базе данных.
Наконец, есть класс ..Application, который генерируется системой по умолчанию и не нуждается в обработке.
2. Реализация каждого класса
Реализовать два интерфейса типов GET и POST: /список дел /todo/listДобавить
- TodoController
package com.dcxz.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class TodoController {
@Autowired
TodoService todoService;
@RequestMapping(value = "/todo/list", method = RequestMethod.GET)
public TodoResponse getTodoList(@RequestParam long id) {
Todo todo = todoService.getTodoData(id);
TodoResponse response = new TodoResponse();
response.setName(todo.getName());
//response.setMember(100);
//response.setCount(20);
return response;
}
@RequestMapping(value = "/todo/listAdd", method = RequestMethod.POST)
public String addTodoList(@RequestBody AddTodoRequest request) {
String name = request.getName();
if (name == null) { throw new RuntimeException("参数错误"); }
todoService.addTodoData(name);
return "success!";
}
}
- тело запроса и тело ответа
/// AddTodoRequest
package com.dcxz.demo;
public class AddTodoRequest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/// TodoResponse
package com.dcxz.demo;
import java.util.Set;
public class TodoResponse {
private String name;
private int count;
private int member;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getMember() {
return member;
}
public void setMember(int member) {
this.member = member;
}
}
- service
package com.dcxz.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class TodoService {
@Autowired
TodoRepository todoRepository;
public void addTodoData(String name) {
Todo todo = new Todo();
todo.setName(name);
todo.setCreateTime(new Date());
todoRepository.save(todo);
}
public Todo getTodoData(long id) {
Todo todo = todoRepository.findById(id).get();
return todo;
}
}
- Todo
package com.dcxz.demo;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "s_todo")
public class Todo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
@Column(name = "create_time")
private Date createTime;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Date getCreateTime() { return createTime; }
public void setCreateTime(Date createTime) { this.createTime = createTime; }
}
- repository
package com.dcxz.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TodoRepository extends JpaRepository<Todo, Long> {
}
3. Вызов интерфейса
Вы можете проверить, нормальный ли интерфейс, вызвав два написанных выше интерфейса через браузер и PostMan. При звонке проверяйте правильность установки IP-адреса, порта, имени интерфейса и параметров.