由於要用spring boot,最近剛剛學習.這是一個web項目的配合mysq+Hibernate+tomcat的簡單示例demo,很容易在此基礎上擴展成本身的項目.java
做者用的IDE是IDEA,新建一個工程,選擇Spring Initalizer.mysql
下一步的話因爲做者須要部署到服務器上面,選擇了war.不須要的話能夠選擇jar.git
選擇spring web+spring Data JPA+Mysql Driver.github
而後完成便可,首次運行的話配置依賴須要一點時間,請耐心等待.web
配置數據源分爲兩部分,一部分是建表與建用戶,另外一部分是在application.properties中配置的.spring
create database test;
注意這裏不用建立表了,由於Hibernate從實體類自動建立一個同名的表.sql
create user 'db'@'%' identified by 'xxxxx';
grant all on test.* to 'db'@'%';
這裏建議受權all,由於後面Hibernate會用到建表權限,不能僅僅受權增刪查改.數據庫
配置四個屬性:json
spring.jpa.hibernate.ddl-auto= spring.datasource.url= spring.datasource.username= spring.datasource.password=
第一個屬性是能夠取值tomcat
none是對mysql的默認值,不會改變數據庫結構.
Hibernate會根據給出的實體類去改變數據庫.
建立數據庫可是不會在關閉的時候刪除.
建立數據庫,當SessionFactory關閉時刪除數據庫.這個是對H2與其餘嵌入式數據庫的默認選項.
第一次運行時必須設置爲update或create,由於還不知道確切的實體類,第一次運行後,能夠設置爲update或none. url的話對於mysql來講是
jdbc:mysql://ip:3306/database
剩下的兩個爲用戶名與密碼. 如下是做者的配置,供參考:
這裏建立一個簡單的User實體類,須要用到javax中的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會自動將實體類製做成一個數據表.
建立倉庫保存用戶記錄.須要繼承CrudRepository<T,ID>,第一個類型爲實體類,第二個類型爲主鍵類型.
package com.test; import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository<User,Integer> { }
控制器用於控制Http請求,在控制器中能夠配置不一樣的路徑實現不一樣的操做.
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請求的路徑.
@ResponseBody表示返回的類型.
@RequestParam表示一個從get或post中獲取的參數.
getAllUsers()會返回一個json或者xml.
首先輸入
localhost:8080/demo/all
因爲做者先前已經有一行數據因此有顯示.
不然的話應該顯示爲[]
接下來能夠添加數據:
curl localhost:8080/demo/add -d name=123
迴應:
接下來能夠選擇再次查看:
再看看數據庫:
Build->Build Artifacts.
Build便可.
而後會在項目目錄的target下有一個test-0.0.1-xxx的war文件,就是這個了.
更名字放到tomcat的webapps/下,好比做者改爲了demo.war:
而後能夠去訪問了,注意路徑,這裏的路徑是war的路徑再加上@RequestMapping中的路徑再加上 @PostMapping或 @GetMapping路徑:
完成!