纠结了大半天,终于搞定一个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;
}
}