使用playframework连接MySql

在web项目中,Playframework允许连接任何JDBC兼容的数据库,包括MySQL。要连接MySQL,需将驱动添加到项目库中,并在`conf/application.conf`配置文件中设定JDBC参数。示例配置包括数据库URL、驱动、用户名和密码。应用启动后,实体类如`User`可以通过Play框架与数据库进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

db.url=jdbc:mysql://localhost:端口号/库名
db.driver=com.mysql.jdbc.Driver
db.user=root
db.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窗口里面:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值