初始化
可以使用idea来创建micronaut项目
也可以从
Micronaut Launch选择需要的依赖并下载其模板
选择依赖
目录结构
model
package org.malred.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Integer roll;
private String firstName;
private String lastName;
private Integer standard;
}
repository
repository继承CrudRepository<实体类,主键数据类型>, 可以使用jpa定义好的crud操作
package org.malred.repository;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
import org.malred.model.Student;
@Repository
public interface StudentRepository extends CrudRepository<Student,Integer> {}
controller
package org.malred.controller;
import io.micronaut.http.annotation.*;
import lombok.RequiredArgsConstructor;
import org.malred.model.Student;
import org.malred.repository.StudentRepository;
import java.util.Optional;
@Controller(value = "/student")
@RequiredArgsConstructor // lombok提供的,代替@AutoWired,但是属性需要用final定义
public class StudentController {
private final StudentRepository student;
// 返回所有student
@Get("/all")
public Iterable<Student> all() {
return student.findAll();
}
// 创建
@Post("/create")
public Student createWithBody(@Body Student student) {
return this.student.save(student);
}
// 修改(传递json对象,包含字段roll(主键))
@Put("/update")
public Student updateWithBody(@Body Student student) {
// 通过roll获取指定student
Optional<Student> studentByRoll = this.student.findById(student.getRoll());
Student entity = studentByRoll.get();
// 修改
entity.setFirstName(student.getFirstName());
entity.setLastName(student.getLastName());
entity.setStandard(student.getStandard());
// 修改h2数据库里保存的数据
return this.student.update(entity);
}
// 删除(传递json对象,包含字段roll(主键))
@Delete("/delete")
public Iterable<Student> deleteWithBody(@Body Student student) {
// 通过roll获取指定student
Optional<Student> studentByRoll = this.student.findById(student.getRoll());
Student entity = studentByRoll.get();
// 删除
this.student.delete(entity);
// 返回当前所有student
return this.student.findAll();
}
}
运行
可以在根目录的命令行里使用命令运行
mvnw mn:run
或者直接idea运行
添加
修改
获取
删除