Springboot+Gradle+Mysql+Jpa 整合
JPA
-
由來
- 爲了更加方便的操作數據庫,提供持久化標準規範
-
是什麼
- JPA(Java Persistence API——Java持久層API)Sun官方提出的Java持久化規範,用來方便大家操作數據庫。
-
特點及性能
- ORM映射元數據:支持XML和註解兩種元數據的形式,框架據此將實體對象持久化到數據庫表中
- API:操作實體對象,執行CRUD
- 查詢語言:面向語言而非面向數據庫的查詢語言
-
如何使用
-
創建數據庫中表,我的數據庫名
game_manage_system
,表名Game_Type
create database game_manage_system; #創建數據庫
use game_manage_system; #使用數據庫
create table Game_Type( #創建表
id int(11) not null auto_increment,
game_type_name varchar(30),
game_type_url varchar(255),
primary key(id)
)default charset=utf8;
#插入數據,方便測試
insert into game_manage_system.game_type values(null,"董","www.uniondong.top:8080");
- 在
application.properties
中添加數據庫信息
#配置數據庫信息
spring.datasource.url=jdbc:mysql://localhost:3306/game_manage_system?serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1997Hang
spring.jpa.hibernate.ddl-auto=update
-
依賴注入,如下
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'mysql:mysql-connector-java:8.0.17'
-
創建對應表的實體類,我的實體類名
Game_Type
@Entity //@Entity 實體類
@Table(name = "Game_Type") //說明這是一個表
public class Game_Type {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增
@Column(name = "id")
private int id;
@Column(name = "game_type_name") //數據庫的字段名
private String game_type_name;
@Column(name = "game_type_url")
private String game_type_url;
public Game_Type() {
}
public Game_Type(String game_type_name, String game_type_url) {
this.game_type_name = game_type_name;
this.game_type_url = game_type_url;
}
public Game_Type(Integer id,String game_type_name, String game_type_url) {
this.id = id;
this.game_type_name = game_type_name;
this.game_type_url = game_type_url;
}
public String getGame_type_name() {
return game_type_name;
}
public void setGame_type_name(String game_type_name) {
this.game_type_name = game_type_name;
}
public String getGame_type_url() {
return game_type_url;
}
public void setGame_type_url(String game_type_url) {
this.game_type_url = game_type_url;
}
}
- 創建DAO數據庫操作類,用於操作對應的表,我的類名
Game_Type_Dao
//提供泛型<Game_Type,Integer>,說明是Game_Type的DAO,並且主鍵是Integer類型
//JpaRepository 這個父接口,就提供了CRUD操作
public interface Game_Type_Dao extends JpaRepository<Game_Type,Integer> {
}
- 創建Controller接口進行測試增刪查改,我的類名
Dao_Test
@RestController
public class Dao_Test {
@Autowired
Game_Type_Dao game_type_dao;
//通過id查找
@RequestMapping("/find_by_id_G_T")
public Game_Type find_by_id_G_T(@RequestParam("id")Integer id){
return game_type_dao.findById(id).get(); //調用庫函數
}
//查找全部
@RequestMapping("/Find_All_G_T")
public List<Game_Type> find_all_G_T(){
return game_type_dao.findAll();
}
//插入
@RequestMapping("/Insert_G_T")
public Game_Type insert_game_type(@RequestParam("game_type_name") String name,@RequestParam("game_type_url") String url){
Game_Type game_type = new Game_Type(name,url);
return game_type_dao.save(game_type); //調用庫函數
}
//刪除
@RequestMapping("/delete_By_Id_G_T")
public void delete_by_id_game_type(@RequestParam("id")Integer id){
game_type_dao.deleteById(id); //調用庫函數
}
//修改
@RequestMapping("/update_game_type")
public Game_Type update_game_type(@RequestParam("id") Integer id,@RequestParam("game_type_name") String name,@RequestParam("game_type_url") String url){
Game_Type game_type = new Game_Type(id,name,url);
return game_type_dao.save(game_type); //調用庫函數
}
}
- 最後附上我的文件佈局,方便理解
End