Play的model層,數據庫配置

Model層是mvc中的重要概念 ,與controller和view對應。下面講講model。

play的model有一下特點。

1.實體類中的屬性需要public修飾

2.實體類不需要寫get/set方法

3.通常我們會在實體類中寫數據庫操作方法,也就是傳統框架中的dao層


這與正常的持久化框架有點不同。有人會說這是錯的,不應該把屬性設置成public,應該是private,這樣才符合Java的封裝特性。事實上,play在後臺是爲這些屬性做過處理的,已經處理成了private,並且爲我們生成了set/get方法。

play說做的一切就是爲了簡化框架,提高開發效率,讓開發者更注重項目的邏輯代碼,而不是框架的結構。


啓用數據庫,需要對配置文件進行配置

db.url=jdbc:mysql://localhost:3306/eseed_wechat_dcd?useUnicode=true&characterEncoding=UTF-8
db.driver=com.mysql.jdbc.Driver
db.user=root
db.pass=mysql

在model中創建新的model類,需要繼承Model及基礎類


import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import play.db.jpa.Model;
@Entity
public class Student extends Model{
public String name;
public String studentId;
public int age;
public String adress;
public String grade;
@ManyToOne public SchoolInfo schoolInfo;
}


import javax.persistence.Entity;
import play.db.jpa.Model;
@Entity
public class SchoolInfo extends Model{
public String schoolName; //大學名字
public String schoolNum;  //大學編號
public String address;   //地址
public String description; //描述
public String president;//校長
}

不需要創建Id的字段,在生成數據表的時候會自動添加


Play的JPA

//增user.save();

//刪user.delete();

//改user.email = “new@emailaddress.com”;user.save();

//查User user = User.findById(1L);

//查列表List<User> users = User.find(“admin = ?”, “true”).fetch();

和hibernate常見的操作一樣,具體方法自己熟悉

RestaurantInfo restaurantInfo= RestaurantInfo.findById(id);

validation.valid(restaurantInfo.edit("restaurantInfo", params.all()));//對錶單提交的數據進行整合,直接打包編輯給實例

RestaurantInfo restaurantInfo= new RestaurantInfo();
validation.valid(restaurantInfo.edit("restaurantInfo", params.all()));//新建實例


關於對保存,對象之間存在關聯,需要對各自的實例進行保存

student.school.save();

student.save();



問:在連接數據庫時,何時新建與實體類對應的數據庫表?

----重新運行項目,在訪問於實體類相關的controller的方法時會在數據庫表中新建一個表(如果表不存在)。如項目運行過程中,刪掉了表,繼續與訪問類的相關方法會報錯,數據庫表不能連接的錯。需要重新啓動項目,重新生成表。

 

問:在實體類中增加或者減少字段的時候,是否能直接同步到數據表中?

答:在類中增加新的字段,在訪問類相關方法的時候會對數據表進行修改,增加對應的字段。不需要額外的配置。但是刪除屬性的時候,數據表中的字段不會自動刪除,需要手動去刪除字段,但是不會報錯,因爲相當於給相應的刪除的字段添加NULL的值



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章