mysql - 使用playframework和Form<T>删除MYSQL中的一条记录

标签 mysql playframework

您好,我是 Play 框架的新手。我想在 Play 框架中使用 MYSQL 数据库实现 CRUD 操作。

我能够成功删除、更新整个表,但无法成功删除单个记录。我想从 html 传递值。

index.scala.html

@(message: String)

@main("Welcome to Play") {

 <ul id="bars">

    </ul>

<form action="@routes.Application.addBar()" method="post">
    <label for="name"> Enter Your name</label>  <input name="name"/> <br>
    <label for="place"> Enter Your place</label>  <input name="place"/> <br>
    <input type="submit"/>
</form>

<form action="@routes.Application.getBars()" method="get">
    <label for="retrieve"> Retrieve the details from table </label>
      <input type="submit"/>
</form>

<form action="@routes.Application.deleteBar()" method="get">
<label for="name"> Enter Your name to be deleted</label>  <input name="name"/> <br>
<input type="submit" value="Delete single record"/>
</form>

<form action="@routes.Application.updateBar()" method="post">
    <label for="name"> Enter Your name</label>  <input  name="name"/> <br>
    <label for="place"> Enter Your place</label>  <input name="place"/> <br>
    <input type="submit"/>
</form>
}

应用程序.java

package controllers;

import com.avaje.ebean.Ebean;
import com.avaje.ebean.SqlUpdate;
import java.util.List;
import models.Bar;
import play.*;
import play.data.Form;
import play.db.ebean.Model;
import play.mvc.*;
import play.twirl.api.Content;
import views.html.*;
import play.libs.Json;
public class Application extends Controller {

    public static Result index() {
        int rowCount1 = Bar.find.findRowCount();

        return ok(index.render("Your new application is ready."));
    }

    public static Result addBar() {
        Bar bar = Form.form(Bar.class).bindFromRequest().get();
        bar.save();
        return redirect(routes.Application.index());
    }

    public static Result Login() { 
        Bar bar = Form.form(Bar.class).bindFromRequest().get();
        bar.save();
        return redirect(routes.Application.index());
    }
    public static Result getBars(){
        List<Bar> bars = new Model.Finder(String.class, Bar.class).all();
        return ok(Json.toJson(bars));
    }

 public static Result deleteBar(String name) {

    SqlUpdate down = Ebean.createSqlUpdate("DELETE FROM bar WHERE name = :param1 ");
    down.setParameter("param1", bar.name);
    int deletedCount = down.execute();
    return ok("Deleted " + deletedCount + " record(s) " + bar.name);
}

}

路线如下:

GET     /                           controllers.Application.index()
POST    /bars2                      controllers.Application.addBar()
GET     /bars                       controllers.Application.getBars()
GET     /bars1                      controllers.Application.deleteBars()
GET     /updateBar1/                controllers.Application.Login()

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

我想做的是:

  1. 我正在使用直接 SQL 查询进行 DELETE,但我想知道如何实现相同的效果 用于映射模型的表单类 - 它也有助于数据验证。请提供伪代码...我经历了以下内容,但没有运气

Form class link

最佳答案

您不需要使用表单来删除记录 - 有何用处?您所需要的只是要搜索的标识符或参数,您有两种方法 - 第一种是使用 SqlUpdate 显示,第二种是使用 Ebean 的方法:

List<Bar> bars = Bar.find.where().eq("name", name).findList();
for (Bar bar : bars) {
    bar.delete();
}

如果您想通过其 @Id 字段删除单个记录,您可以这样做(如果您确定具有此 ID 的 Bar 存在):

Bar.find.ref(barId).delete();

关于mysql - 使用playframework和Form<T>删除MYSQL中的一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30230956/

相关文章:

php - LIKE 运算符的 MySQL 注入(inject)

php mysql 如何分解10 :30 with php mathematings

php - 从 MySQL 获取数组到 android

scala - 理解 Scala 中的隐式

playframework - 在 Play 中导入 CRUD 模块! 1.2.3

java - Play 框架中文件下载完成时的通知

php - Elasticsearch AND/BOOL 条件 + PHP

php - 检查数组中有多少值大于 x

Scala (2.11.1) 和 play Framework (2.x) if 语句在 Flash 范围内包含变量

java - 运行play framework项目时VM初始化出错