我正在尝试执行插入语句,但不幸的是,我无法将数据保存到数据库中。 可能是这里的@Query注释无法正常工作。
以下是我的课程。 控制器:
@Component
//@RequestMapping("/api/v1")
public class EmployeeControllerImpl implements EmployeeController{
@Autowired
public EmployeeService employeeService;
@Override
@PostMapping("/addEmployee")
public Employee addEmployee(@RequestBody Employee emp) {
return employeeService.addEmployee(emp);
}
}
服务:
@Component
public class EmployeeServiceImpl implements EmployeeService{
@Autowired
public EmployeeRepository employeeRepository;
@Override
public Employee addEmployee(Employee emp) {
return employeeRepository.addEmployee(emp);
}
}
存储库接口:
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer > {
@Query(value = "insert into employee (fname, lname, gender, age, contactNumber, empEmail, empPass) "
+ "VALUES (:fname, :lname, :gender, :age, :contactNumber, :empEmail, :empPass)", nativeQuery = true)
Employee addEmployee(Employee emp );
}
Employee.java:
@Data
@Entity
@Table(name="Employee")
@Getter
@Setter
public class Employee {
@Id
@Column(name = "employee_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int empId;
@Column
private String fname;
@Column
private String lname;
@Column
private String gender;
@Column
private int age;
@Column
private String contactNumber;
@Column
private String empEmail;
@Column
private String empPass;
}
应用程序属性:
server.port:8082
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/orcl
spring.datasource.username=system
spring.datasource.password=oracle
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.jpa.database-platform=org.hibernate.dialect.OracleDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
JpaRepository 中已经有一个 save() 方法。您可以在您的服务类别中使用它。
public class EmployeeServiceImpl implements EmployeeService{
@Autowired
public EmployeeRepository employeeRepository;
@Override
public Employee addEmployee(Employee emp) {
return employeeRepository.save(emp);
}
}
另外,在你的实体类中,当你使用lombok时,你只需要添加@Data即可。这将包括 @Getters 和 @Setter,因此您无需单独添加。所以它看起来像这样:
@Data
@Entity
@Table(name="Employee")
public class Employee
您还应该使用@Controller和@Service而不是@Component。它指定代码应该位于哪一层。