您好,登錄后才能下訂單哦!
因為要用spring boot,最近剛剛學(xué)習(xí).這是一個web項目的配合mysq+Hibernate+tomcat的簡單示例demo,很容易在此基礎(chǔ)上擴展成自己的項目.
作者用的IDE是IDEA,新建一個工程,選擇Spring Initalizer.
下一步的話由于作者需要部署到服務(wù)器上面,選擇了war.不需要的話可以選擇jar.
選擇spring web+spring Data JPA+Mysql Driver.
然后完成即可,首次運行的話配置依賴需要一點時間,請耐心等待.
配置數(shù)據(jù)源分為兩部分,一部分是建表與建用戶,另一部分是在application.properties中配置的.
create database test;
注意這里不用創(chuàng)建表了,因為Hibernate從實體類自動創(chuàng)建一個同名的表.
create user 'db'@'%' identified by 'xxxxx';
grant all on test.* to 'db'@'%';
這里建議授權(quán)all,因為后面Hibernate會用到建表權(quán)限,不能僅僅授權(quán)增刪查改.
配置四個屬性:
spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
第一個屬性是可以取值
none是對mysql的默認值,不會改變數(shù)據(jù)庫結(jié)構(gòu).
Hibernate會根據(jù)給出的實體類去改變數(shù)據(jù)庫.
創(chuàng)建數(shù)據(jù)庫但是不會在關(guān)閉的時候刪除.
創(chuàng)建數(shù)據(jù)庫,當(dāng)SessionFactory關(guān)閉時刪除數(shù)據(jù)庫.這個是對H2與其他嵌入式數(shù)據(jù)庫的默認選項.
第一次運行時必須設(shè)置為update或create,因為還不知道確切的實體類,第一次運行后,可以設(shè)置為update或none.
url的話對于mysql來說是
jdbc:mysql://ip:3306/database
剩下的兩個為用戶名與密碼.
以下是作者的配置,供參考:
這里創(chuàng)建一個簡單的User實體類,需要用到j(luò)avax中的Entity,Id,GeneratedValue與GenerationType注解.
Entity用于標識實體類,Id用于標識主鍵,GeneratedValue與GenerationType用于配置主鍵.
package com.test;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
除了主鍵之外,可以加上自己想要的屬性,還有setter與getter,Hibernate會自動將實體類制作成一個數(shù)據(jù)表.
創(chuàng)建倉庫保存用戶記錄.需要繼承CrudRepository<T,ID>,第一個類型為實體類,第二個類型為主鍵類型.
package com.test;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User,Integer>
{
}
控制器用于控制Http請求,在控制器中可以配置不同的路徑實現(xiàn)不同的操作.
package com.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(path = "/demo")
public class MainController {
@Autowired
private UserRepository userRepository;
@PostMapping(path = "/add")
public @ResponseBody String addNewUser(@RequestParam String name)
{
User user = new User();
user.setName(name);
userRepository.save(user);
return "Saved.";
}
@GetMapping(path = "/all")
public @ResponseBody Iterable<User> getAllUsers()
{
return userRepository.findAll();
}
}
@RequestMapping中的值表示url以此值開頭.@PostMapping是僅處理post請求的路徑.
br/>@PostMapping是僅處理post請求的路徑.
br/>@RequestParam表示一個從get或post中獲取的參數(shù).
首先輸入
localhost:8080/demo/all
由于作者先前已經(jīng)有一行數(shù)據(jù)所以有顯示.
否則的話應(yīng)該顯示為[]
接下來可以添加數(shù)據(jù):
curl localhost:8080/demo/add -d name=123
回應(yīng):
接下來可以選擇再次查看:
在看看數(shù)據(jù)庫:
Build->Build Artifacts.
Build即可.
然后會在項目目錄的target下有一個test-0.0.1-xxx的war文件,就是這個了.
改名字放到tomcat的webapps/下,比如作者改成了demo.war:
然后可以去訪問了,注意路徑,這里的路徑是war的路徑再加上@RequestMapping中的路徑再加上 @PostMapping或 @GetMapping路徑:
完成!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。