spring-boot起步介紹Demo,廖師兄springboot學習筆記
阿新 • • 發佈:2019-01-21
在慕課網上面學習了廖師兄的spring-boot 2小時入門的課程,為了防止忘記,這裡記了一些筆記和一些想法。可以轉載,請轉載的時候註明以上資訊即可。
一、使用IDEA
- 新建專案 new project
- Spring Initializr
- 目錄解釋:
- templates自動生成,放著spring-boot的模版,現在都是前後端分離,一般不用這個,這個效能不好,就算是寫jsp也不用模版
- application.properties是配置檔案,建議使用.yml檔案,簡單不說格式還很舒服
- TestApplication main方法啟動服務
- 其他的都一眼看懂了
- 除了main方法啟動,windows和linux都可以使用命令列啟動
二、配置檔案
server:
port: 8080 #埠 預設是8080
context-path: /man #requestMapping一樣,首路徑攔截
user:
cupSize: B # 業務中可以通過 @Value("${girl.age}")
age: 18
# 如果需要注入到物件中,則在物件中增加@ConfigurationProperties(prefix = "user") 字首是user
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
jpa:
show-sql: true #列印sql語句
hibernate:
ddl-auto: update
#create 每次啟動都新建表
#update 每次判斷是否存在,不刪除原有資料,最常用
#create-drop 應用停止就刪除表
#none沒有操作
#validate 驗證是否一致,不一致報錯
三、pom.xml檔案
- 預設生成的包含了web和test以及一個manven外掛
- 其他的:jpa和mysql是和資料庫相關
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
四、實體類,專案啟動自動建表(配置檔案)
@Entity
public class Man {
@Id
@GeneratedValue
private Integer id; // 主鍵,自動增長
private String name;
public Man() { // 必須需要一個構造方法
}
get、set方法
}
五、sql實現層程式碼,是個介面
// controller @autowired使用
public interface ManRepository extends JpaRepository<Man, Integer> {
List<Man> findByName(String name);
}
- 繼承JpaRepository即可,< Man,Integer> Man是要查詢的實體類,Integer是主鍵的型別
- findByName是自己除了增刪改查新增的方法,這裡的格式要求嚴格,findBy…
六、controller程式碼,@PathVariable restful風格{id}獲得這個id
@RestController
public class ManController {
@Autowired
private ManRepository manRepository; // 繼承jpa的介面,使sql變得非常簡單
/**
* 查詢所有
* @return
*/
@GetMapping(value = "/mans") // get方法
public List<Man> manList(){
return manRepository.findAll(); // 預設就有的方法
}
/**
* 新增一個
*/
@PostMapping(value = "mans") // post方法
public Man manAdd(@RequestParam("name")String name){
Man man = new Man();
man.setName(name);
return manRepository.save(man); // 預設就有的方法
}
/**
* 更新(如果id不存在則add,存在則update)
*/
@PutMapping("/mans/{id}") // put方法
public Man manUpdate(@PathVariable(value = "id")Integer id,
@RequestParam("name")String name){
Man man = new Man();
man.setName(name);
man.setId(4);
return manRepository.save(man); // 預設就有的方法
}
/**
* 刪除
*/
@DeleteMapping("/mans/{id}") // delete方法
public void manDelete(@PathVariable(value = "id")Integer id){
manRepository.delete(id); // 預設就有的方法
}
/**
* 主鍵查詢
*/
@GetMapping(value = "/findById/{id}")
public Man findById(@PathVariable(value = "id")Integer id){
return manRepository.findOne(id); // 預設就有的方法
}
/**
* 其他條件查詢
*/
@RequestMapping(value = "/findByName/{name}")
public List<Man> findByName(@PathVariable(value = "name")String name){
return manRepository.findByName(name); // 自己擴充套件的方法
}
@Autowired
private ManServer manServer; // 測試事務用,很簡單的一個小方法
/**
* 事務處理
*/
@RequestMapping(value = "two")
public void two(){
manServer.insertTwo();
}
七、業務層程式碼
@Service
public class ManServer {
@Autowired
private ManRepository manRepository;
@Transactional // 業務,只要是增刪改都建議用
public void insertTwo(){
Man a = new Man();
Man b = new Man();
a.setName("1");
b.setName("2");
manRepository.save(a);
// int i = 0;
// System.out.println(0/i); // 報錯業務測試
manRepository.save(b);
}
}
八、模版
- 一般是不建議用,比較佔用記憶體不說,現在都是前後端分離,用jsp都行。
- pom引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- templates裡面增加index.html
- html裡面什麼都不用寫,要清空否則報錯。然後直接寫各種程式碼即可
- 直接在controller裡面和springmvc一樣返回String即可