由於要用spring boot,最近剛剛學習.這是一個web項目的配合mysq+Hibernate+tomcat的簡單示例demo,很容易在此基礎上擴展成本身的項目.java
做者用的IDE是IDEA,新建一個工程,選擇Spring Initalizer. mysql
配置數據源分爲兩部分,一部分是建表與建用戶,另外一部分是在application.properties中配置的.git
create database test;
複製代碼
注意這裏不用建立表了,由於Hibernate從實體類自動建立一個同名的表.github
create user 'db'@'%' identified by 'xxxxx';
複製代碼
grant all on test.* to 'db'@'%';
複製代碼
這裏建議受權all,由於後面Hibernate會用到建表權限,不能僅僅受權增刪查改.web
配置四個屬性:spring
spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
複製代碼
第一個屬性是能夠取值sql
none是對mysql的默認值,不會改變數據庫結構.數據庫
Hibernate會根據給出的實體類去改變數據庫.json
建立數據庫可是不會在關閉的時候刪除.tomcat
建立數據庫,當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.