本系列文章主要索引詳情 點(diǎn)擊查看
現(xiàn)在我們已經(jīng)可以通過(guò)從后臺(tái)傳遞數(shù)據(jù)到前端頁(yè)面,而且也可以對(duì)應(yīng)頁(yè)面的輸入域進(jìn)行簡(jiǎn)單的校驗(yàn)并將數(shù)據(jù)提交都后臺(tái),現(xiàn)在我們來(lái)實(shí)現(xiàn)將提交到后臺(tái)的數(shù)據(jù),保存到數(shù)據(jù)庫(kù)中,而我們將使用MongoDB數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行保存。
工具
IntelliJ IDEA 16
JDK 1.8
Maven 3.5
Tomcat 1.8
MongoDB 3.4.5
安裝MongoDB
暫略,后期補(bǔ)充
項(xiàng)目源碼下載地址:
https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo
引入相關(guān)依賴
1、安裝完了MongoDB,下面便開始將MongoDB整合到我們的項(xiàng)目中來(lái),首先我們需要導(dǎo)入必須的依賴,在pom.xml文件中導(dǎo)入我們的Maven依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
然后在application.properties文件中添加
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/spring
標(biāo)準(zhǔn)的URL連接語(yǔ)法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 這是固定的格式,必須要指定。
username:password@ 可選項(xiàng),如果設(shè)置,在連接數(shù)據(jù)庫(kù)服務(wù)器之后,驅(qū)動(dòng)都會(huì)嘗試登陸這個(gè)數(shù)據(jù)庫(kù)
host1 必須的指定至少一個(gè)host, host1 是這個(gè)URI唯一要填寫的。它指定了要連接服務(wù)器的地址。如果要連接復(fù)制集,請(qǐng)指定多個(gè)主機(jī)地址。
portX 可選的指定端口,如果不填,默認(rèn)為27017
/database 如果指定username:password@,連接并驗(yàn)證登陸指定數(shù)據(jù)庫(kù)。若不指定,默認(rèn)打開 test 數(shù)據(jù)庫(kù)。
?options 是連接選項(xiàng)。如果不使用/database,則前面需要加上/。所有連接選項(xiàng)都是鍵值對(duì)name=value,鍵值對(duì)之間通過(guò)&或;(分號(hào))隔開
標(biāo)準(zhǔn)的連接格式包含了多個(gè)選項(xiàng)(options),如下所示:

2、打開我們的實(shí)體類ProfileForm.java,添加一個(gè)字段 id(注意類型必須為String ,如果使用Integer,則會(huì)報(bào)錯(cuò),因?yàn)樵贛ongoDB中id字段是自動(dòng)生成的一段字符串,而不是一個(gè)數(shù)字)
package com.example.dto;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
@Document(collection = "profile")
public class ProfileForm {
@Id
private String id;
@Size(min = 2)
private String twitterHandle;
@Email
@NotNull
private String email;
@NotNull
private LocalDate birthDate;
public ProfileForm() {
}
public ProfileForm(String id, String twitterHandle, String email, LocalDate birthDate) {
this.id = id;
this.twitterHandle = twitterHandle;
this.email = email;
this.birthDate = birthDate;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTwitterHandle() {
return twitterHandle;
}
public void setTwitterHandle(String twitterHandle) {
this.twitterHandle = twitterHandle;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public LocalDate getBirthDate() {
return birthDate;
}
public void setBirthDate(LocalDate birthDate) {
this.birthDate = birthDate;
}
@Override
public String toString() {
return "ProfileForm{" +
"id=" + id +
", twitterHandle='" + twitterHandle + '\'' +
", email='" + email + '\'' +
", birthDate=" + birthDate +
'}';
}
}
@Id注釋 : id屬性是給mongodb用的,用@Id注解修飾
@Document(collection = "profile") 聲明數(shù)據(jù)庫(kù)中對(duì)應(yīng)的文檔(表)
3、 接下來(lái)編寫一個(gè)操作mongodb的repository代碼,它繼承MongoRepository接口;MongoRepository接口包含了常用的CRUD操作,例如:save,insert,fillAll等。我們也可以定義我們自己的操作接口
package com.example.Repository;
import com.example.dto.ProfileForm;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface ProfileRepository extends MongoRepository<ProfileForm,String> {
ProfileForm findByTwitterHandle(String twitterHandle);
}
如果使用自定義接口,如findByTwitterHandle()方法,這個(gè)并不是MongoRepository提供的方法,twitterHandle 為 ProfileForm 屬性,由此可以看出,如果我們想要通過(guò)某個(gè)字段來(lái)查詢數(shù)據(jù),則方法名稱的格式應(yīng)該為 findBy+字段名(首字母大寫)。
4、接下來(lái)是訪問(wèn)控制類,在提交事件中添加保存的操作
@Autowired
private ProfileRepository profileRepository;
@RequestMapping(value = "/profile" ,method = RequestMethod.POST)
public String saveProfile(@Valid ProfileForm profileForm, BindingResult bindingResult){
if(bindingResult.hasErrors()){
return "profile/profilePage";
}
profileRepository.save(profileForm);
System.out.println("Save Ok"+profileForm);
return "redirect:profile";
}
5、下面開發(fā)訪問(wèn)我們的項(xiàng)目:http://127.0.0.1:8080/profile,并輸入正確格式的數(shù)據(jù)(因?yàn)榍懊嫘〗Y(jié)中,我們?yōu)檩斎胗蛱砑恿诵r?yàn)),然后點(diǎn)擊提交

6、提交數(shù)據(jù)以后,查詢MongoDB數(shù)據(jù)庫(kù),如果結(jié)果如下,則保存數(shù)據(jù)成功

源碼下載地址:
https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo
上一篇Spring Boot 框架開發(fā)Web項(xiàng)目之九 Spring Boot項(xiàng)目的打包和部署
下一篇未完待續(xù)...