1. 程式人生 > >play framework mysql

play framework mysql

糾結了大半天,終於搞定一個demo了。play framework還是可喜的,但是對於mysql的支援我竟然沒找到文件。找了很多論壇什麼的也沒一個說清楚的。真心無語。這裡使用的是官方的todo list demo,具體的程式碼和步驟請參考:

官方例子中是對h2資料庫的支援, H2是一個短小精幹的嵌入式資料庫引擎,詳見google。下面說說如何改成用mysql實現:

其實很簡單,就是加個jar包,改改application.conf 就行了,但是我卻繞了很大的圈子。。。

1.在專案檔案中新增lib資料夾並放入mysql驅動jar包

2.修改application.conf 成

#db.default.driver=org.h2.Driver
#db.default.url="jdbc:h2:mem:play"


db=mysql 
db.default.driver=com.mysql.jdbc.Driver 
db.default.url="jdbc:mysql://localhost:3306/todolist?useUnicode=true&characterEncoding=utf-8"
db.default.user="root"
db.default.pass="root"


ebean.default="models.*"

特別注意:在加入lib裡的jar包後需要重啟專案!!!這是我一直跑步起來的原因~~!!!

另外,附帶Task.java的程式碼,因為在對@Required標註label之後,如果不加入相應的getter setter 會報沒有訪問器的錯誤。

package models;

import java.util.*;

import play.db.ebean.*;
import play.data.validation.Constraints.*;

import javax.persistence.*;

@Entity
public class Task extends Model {
    @Id
    public Long id;

	@Required
	public String label;

  	public static Finder<Long,Task> find = new Finder(Long.class,Task.class);
  
  	public static List<Task> all() {
    	return find.all();
  	}
  
	public static void create(Task task) {
		task.save();
	}
	  
	public static void delete(Long id) {
	  	find.ref(id).delete();
	}

	/************* getter and setter*****************/

	public Long getId(){
	  	return id;
	}

	public void setId(Long id){
	  	this.id=id;
	}

	public String getLabel(){
	  	return label;
	}

  	public void setLabel(String label){
  		this.label=label;
  	}
    
}