1. 初始化項目,引入相關依賴
項目中引入的依賴關系
當中最主要的 spring-boot-starter-data-jpa 包主要依賴如下,可以看到JPA的底層主要是通過hibernate實現的。
2. 創建實體類,利用JPA生成數據表
2.1 編寫實體類,配置好映射關系,從而和數據表進行映射
import javax.persistence.*;
@Entity //聲明實體類,和數據表映射 @Table(name="tb_user") //指定對應數據表,省略的話默認表名為類名小寫 public class User { @Id //聲明為該表主鍵 @GeneratedValue(strategy = GenerationType.IDENTITY) //主鍵自增策略 private Integer id; @Column(name = "first_name",length = 50) //設置列名及長度 private String firstName; @Column private String lastName; private String address; //getter & setter 方法略
2. 編寫Dao接口來操作實體類對應的數據表(Repository)
import com.zang.springboot.entity.User; import org.springframework.data.jpa.repository.JpaRepository; //繼承JpaRepository來完成對數據庫的操作 public interface UserRepository extends JpaRepository<User,Integer>{ }
3. 配置application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/user_manage?serverTimezone=GMT%2B8 username: root password: 123 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: #更新或創建數據庫表結構 ddl-auto: update #輸出執行sql show-sql: true
啟動Application類,JPA輸出如下sql語句進行表的創建
Hibernate: create table tb_user (id integer not null auto_increment, address varchar(255), first_name varchar(50), last_name varchar(255), primary key (id)) engine=MyISAM
3. 插入查詢測試
新建controller來接收請求
import com.zang.springboot.entity.User; import com.zang.springboot.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/user/{id}") public User getUser(@PathVariable("id") Integer id){ User user = userRepository.findById(id).orElse(null); return user; } //@PostMapping("/user") @GetMapping("/user") //為測試方便,通過url傳參,請求應設為Get方式 public User insertUser(User user){ User saveUser = userRepository.save(user); return saveUser; } }
傳值測試:
后台輸出如下,證明插入成功:
查詢測試:
后台輸出查詢sql如下:
Hibernate: select user0_.id as id1_0_0_, user0_.address as address2_0_0_, user0_.first_name as first_na3_0_0_, user0_.last_name as last_nam4_0_0_ from tb_user user0_ where user0_.id=?