本篇主要介绍如何用IntelliJ IDEA搭建一个基于Spring Boot+JPA+Mysql的API接口项目,初学的朋友可以参考一下,高手请绕道~
-
项目创建
打开IDEA,新建一个项目
Step 1从左侧列表选择Spring Initializr,然后点击Next
Step 2
Step 3
Step 4从左侧列表选择SQL,然后勾选右侧的Spring Data JPA和MySQL Driver,点击Next
Step 5
Step 6
- 代码开发
首先打开application.properties文件,在里面添加以下代码
#基本配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/rsa
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
##控制台打印sql
spring.jpa.show-sql=true
注意:因为本篇用到的DB很简单,在此就不另作说明了,看完文章自然就知道表结构了
点开View>Tool Windows>Database画面,在里面新建一个MySQL的DataSource
DB连接
再点开View>Tool Windows>Persistence画面,在项目名上右击,选择Assign Data Sources...,绑定上面刚添加的DB连接
绑定DB连接
新建一个entity文件夹,在里面新建一个UserEntity.java文件
package com.example.demo.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "user")
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
public class UserEntity {
@Id
@Column(name = "user_id")
private int user_id;
@Column(name = "user_name")
private String user_name;
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
}
新建一个repository文件夹,在里面新建一个UserRepository.java文件
package com.example.demo.repository;
import com.example.demo.entity.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<UserEntity,Integer> {
}
新建一个controller文件夹,在里面新建一个UserController.java文件
package com.example.demo.controller;
import com.example.demo.entity.UserEntity;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/api/user")
public class UserController {
private UserRepository userRepository;
@Autowired
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
//用GetMapping方式
@GetMapping(value = "getUserById")
public UserEntity getUserById(int user_id) {
UserEntity item = userRepository.getOne(user_id);
return item;
}
//用RequestMapping方式
@RequestMapping(value = "/getUserById2", method = RequestMethod.GET)
public UserEntity getUserById2(@RequestParam(value = "user_id") int user_id) {
UserEntity item = userRepository.getOne(user_id);
return item;
}
//用PostMapping方式
@PostMapping(value = "getUserById3")
public UserEntity getUserById3(int user_id) {
UserEntity item = userRepository.getOne(user_id);
return item;
}
@PostMapping(value = "getAllUsers")
public List<UserEntity> getAllUsers() {
List<UserEntity> list = userRepository.findAll();
return list;
}
}
到这里就可以启动项目,看一下执行结果了
运行结果
上面我为了说明几种不同的写法,写了好几个请求,结果我就不一一贴图了
但目前为止我只用了JpaRepository中内置的方法(其实内置方法基本可以满足一般需求),如果需要进行一些复杂但DB请求,只要进行如下改写
package com.example.demo.repository;
import com.example.demo.entity.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface UserRepository extends JpaRepository<UserEntity,Integer> {
@Query("select ut from UserEntity ut where ut.user_name = ?1")
List<UserEntity> findByName(String name);
}
然后在controller中调用上面这个方法就可以了
@PostMapping(value = "getUserByName")
public List<UserEntity> getUserByName(String name) {
List<UserEntity> list = userRepository.findByName(name);
return list;
}
运行结果
好啦!本次的Demo讲解就这样啦~希望对你有所帮助