使用playframework连接MySql

来源:互联网 发布:淘宝秒杀群怎么找人 编辑:程序博客网 时间:2024/05/16 17:44

在web项目中,通常需要持久化数据,而这些数据都是存放在数据库里面的,跟很多开源框架一样,playframework也提供了连接数据库的方法!

Play可以连接任何JDBC兼容的数据库,只需要将相应的驱动类库添加到/lib目录中,并在conf/application.conf文件中定义JDBC配置:

db.url=jdbc:mysql://localhost:端口号/库名db.driver=com.mysql.jdbc.Driverdb.user=rootdb.pass=123456

 还可以在conf/application.conf文件中用配置选项指定JPA方言:

jpa.dialect=<dialect>

Play框架集成了H2数据库和MySQL数据库的驱动程序,存放在$PLAY_HOME/framework/lib/目录下。如果需要使用PostgreSQL,Oracle或者其他数据库,需要在该目录(或者应用程序的lib/目录)下添加相应的数据库驱动。

下面以连接MySql数据库为例:

在conf/application.conf文件中定义JDBC配置:

创建web工程后conf/application.conf里面就有默认的,可以直接在这里修改成上图所示:

db.default.url=jdbc:mysql://localhost:3306/mybatis
db.default.driver=com.mysql.jdbc.Driver
db.default.user=root
db.default.pass=root



Application.java(User是对应数据库表的一个实体类):

package controllers;import play.*;import play.mvc.*;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.*;import models.*;import play.data.validation.*;import play.db.DB;public class Application extends Controller {    public static void index() {        render();    }/** * 记得加上import play.data.validation.*。 * @Required告诉Play自动检查myName字段是否填写。 * 如果验证失败,我们加入一条消息到flash scope中并重定向到index动作。 * flash scope允许在重定向时保持消息。 */public static void sayHello(@Required String myName) {System.out.println(myName);if (validation.hasErrors()) {  flash.error("please enter your name!");  index();  }  List<User> listitems = new ArrayList<User>();try {Connection conn = DB.getConnection();conn.createStatement().execute("select * from user");ResultSet resultSet = conn.createStatement().executeQuery("select * from user");while(resultSet.next()){ User user = new User(); user.setId(resultSet.getLong("id")); user.setBirthday(resultSet.getDate("birthday")); user.setPhoto(resultSet.getString("photo")); user.setUpass(resultSet.getString("upass")); user.setUserAddress(resultSet.getString("userAddress")); user.setUserAge(resultSet.getInt("userAge")); user.setUserName(resultSet.getString("userName")); System.out.println(user.toString()); listitems.add(user); }System.out.println("连接数据库成功");} catch (SQLException e) {System.out.println("连接数据库失败");e.printStackTrace();}renderArgs.put("listitems", listitems);renderArgs.put("myName", myName);render();  }   }

sayHello.html:

#{extends 'main.html' /}  #{set title:'Home' /}       <h1>你好 ${myName}</h1><table border="1" style="width: 50%">  <tr>    <th>姓名</th>    <th>年龄</th>    <th>地址</th>  </tr>  #{list items:listitems, as:'user'}  <tr>    <td>${user.userName}</td>    <td>${user.userAge}</td>    <td>${user.userAddress}</td>  </tr>  #{/list}</table>       <a href="@{Application.index()}">Back</a> 

显示效果:


注意:Application.java里面的System.out.println打印的消息并没有打印在myeclipse的控制台上,而是在dos窗口里面:



原创粉丝点击