玩转Play Framework的秘密武器:Ebean ORM带你解锁高效数据库操作新姿势,让你的代码从此飞起来!

简介: 【8月更文挑战第31天】Play Framework 以其简洁的 API 和高效开发体验著称,Ebean ORM 则是其推荐的对象关系映射(ORM)工具之一。Ebean 可将 Java 对象轻松映射到数据库表,简化数据库交互。本文将指导你在 Play Framework 中使用 Ebean ORM 进行数据库操作,涵盖项目创建、依赖引入、数据库配置、模型定义及 CRUD 操作,并通过示例代码展示实现过程。通过这些步骤,你将学会如何利用 Ebean 的丰富功能,如事务管理、查询构建等,提升 Web 应用的数据库交互能力。

Play Framework与数据库交互:Ebean ORM深度解析

Play Framework以其简洁的API和高效的开发体验而闻名,而Ebean ORM则是Play框架推荐使用的对象关系映射(Object-Relational Mapping, ORM)工具之一。通过Ebean,开发者可以方便地将Java对象映射到数据库表,并执行各种数据库操作,极大地简化了数据库交互的复杂度。本文将带领你深入探究如何在Play Framework中使用Ebean ORM进行数据库操作,并通过示例代码展示其实现过程。

首先,我们需要创建一个新的Play项目。如果你还没有创建过Play项目,可以通过sbt命令行工具快速生成:

sbt new playframework/play-scala-seed.g8

按照提示输入项目信息,创建完毕后进入项目目录。接下来,我们需要在项目中引入Ebean ORM的依赖。打开build.sbt文件,并在libraryDependencies中添加Ebean的依赖:

libraryDependencies ++= Seq(
  "io.ebean" % "ebean" % "13.7.1",
  "io.ebean" % "ebean-maven-plugin" % "13.7.1" % "provided"
)

保存更改后,sbt将会自动下载所需的依赖。

接下来,我们需要配置数据库连接。Play Framework使用application.conf文件来管理应用配置。打开conf/application.conf文件,并添加数据库配置:

# 数据库配置
db.default.driver=com.mysql.cj.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"
db.default.username=root
db.default.password=password

请根据实际情况修改数据库URL、用户名和密码。

在配置好数据库连接之后,我们可以开始定义模型类。Ebean ORM支持多种ORM风格,包括主动记录(Active Record)模式。我们以主动记录模式为例,创建一个简单的用户模型User

package models;

import io.ebean.Finder;
import io.ebean.Model;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "users")
public class User extends Model {
   

    @Id
    public Long id;

    public String name;

    public String email;

    public static Finder<Long, User> find = new Finder<>(User.class);

    public static User create(String name, String email) {
   
        User user = new User();
        user.name = name;
        user.email = email;
        user.save();
        return user;
    }

    public void save() {
   
        this.save();
    }

    public static User findById(Long id) {
   
        return find.byId(id);
    }

    public static void deleteById(Long id) {
   
        find.byId(id).delete();
    }
}

在这个模型类中,我们定义了基本的属性以及一些静态方法来执行常见的CRUD操作。Finder类提供了便捷的查询接口。

接下来,我们创建一个控制器来处理用户相关的HTTP请求。在app/controllers目录下创建一个名为UserController的类:

package controllers;

import models.User;
import play.mvc.Controller;
import play.mvc.Result;

import java.util.List;

public class UserController extends Controller {
   

    public Result index() {
   
        List<User> users = User.find.all();
        return ok(views.html.index.render(users));
    }

    public Result create() {
   
        String name = request().body().asFormUrlEncoded().get("name").get(0);
        String email = request().body().asFormUrlEncoded().get("email").get(0);
        User.create(name, email);
        return redirect(routes.UserController.index());
    }

    public Result delete(Long id) {
   
        User.deleteById(id);
        return redirect(routes.UserController.index());
    }
}

在这个控制器中,我们定义了三个方法:index用于列出所有用户,create用于创建新用户,delete用于删除用户。

最后,我们需要定义路由。打开conf/routes文件,并添加以下内容:

GET     /users                  controllers.UserController.index
POST    /users                  controllers.UserController.create
DELETE  /users/:id              controllers.UserController.delete(id: Long)

此外,还需要创建一个视图文件来显示用户列表。在app/views目录下创建一个名为index.scala.html的文件:

@(users: List[models.User])
<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
            @for(user <- users) {
    
                <tr>
                    <td>@user.name</td>
                    <td>@user.email</td>
                    <td><a href="@routes.UserController.delete(user.id)">Delete</a></td>
                </tr>
            }
        </tbody>
    </table>
    <form action="@routes.UserController.create" method="post">
        <input type="text" name="name" placeholder="Name">
        <input type="text" name="email" placeholder="Email">
        <button type="submit">Create User</button>
    </form>
</body>
</html>

至此,我们已经完成了使用Ebean ORM与数据库交互的基本设置。运行Play应用程序:

activator run

然后,通过访问http://localhost:9000/users,你可以查看用户列表,创建新用户,并删除现有用户。

通过以上步骤,你已经了解了如何在Play Framework中使用Ebean ORM进行数据库操作。Ebean提供了丰富的功能,包括事务管理、查询构建器、懒加载等,能够满足大多数Web应用的数据库交互需求。希望这篇指南能够帮助你更好地理解和应用Play Framework与Ebean ORM。

相关文章
|
3月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
4月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
449 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
4月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
286 14
|
4月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
395 4
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
19天前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
50 0
|
7月前
|
人工智能 前端开发 JavaScript
代码采纳率从 22% 到 33%,通义灵码辅助数据库智能编码实践
通义灵码本质上是一个AI agent,它已经进行了大量的优化。然而,为了更完美或有效地调用模型的潜在能力,我们在使用时仍需掌握一些技巧。通常,大多数人在使用通义灵码时会直接上手,这是 AI agent 的一个优势,即 zero shot 使用,无需任何上下文即可直接使用通义灵码的能力。
|
3月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
3月前
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
128 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发

热门文章

最新文章