Смотрите следующие фрагменты кода для выполнения CRUD в хранилище данных GAE, используя Объекты данных Java (JDO) . Просто аннотируйте Клиента с помощью аннотации JDO и выполните CRUD через PersistenceManager .
Добавь
Customer c = new Customer(); c.setName(name); PersistenceManager pm = PMF.get().getPersistenceManager(); try { pm.makePersistent(c); } finally { pm.close(); }
Поиск
Найдите “Клиент”, где имя.
PersistenceManager pm = PMF.get().getPersistenceManager(); Query q = pm.newQuery(Customer.class); q.setFilter("name == nameParameter"); q.setOrdering("date desc"); q.declareParameters("String nameParameter"); try { Listresults = (List ) q.execute("mkyong"); //... } finally { q.closeAll(); pm.close(); }
Найдите “Клиент”, где имя и адрес электронной почты.
Query q = pm.newQuery(Customer.class); q.setOrdering("date desc"); q.setFilter("name == nameParameter && email == emailParameter"); q.declareParameters("String nameParameter, String emailParameter"); try { Listresults = (List ) q.execute("mkyong", "test@gmail.com"); //... } finally { q.closeAll(); pm.close(); }
Возвращаемый список записей клиентов.
PersistenceManager pm = PMF.get().getPersistenceManager(); Query q = pm.newQuery(Customer.class); q.setOrdering("date desc"); Listresults = null; try { results = (List ) q.execute(); if (!results.isEmpty()) { // good for listing } } finally { q.closeAll(); pm.close(); }
Обновление
Чтобы обновить, получите существующий объект и измените его.
PersistenceManager pm = PMF.get().getPersistenceManager(); try { Customer c = pm.getObjectById(Customer.class, key); c.setName(name); c.setEmail(email); c.setDate(new Date()); } finally { pm.close(); }
Удалить
PersistenceManager pm = PMF.get().getPersistenceManager(); try { Customer c = pm.getObjectById(Customer.class, key); pm.deletePersistent(c); } finally { pm.close(); }
Пример GAE + Spring MVC + CRUD
Хорошо, теперь мы покажем вам простое веб-приложение, разработанное с использованием Spring MVC в стиле REST, с использованием JDO для хранения данных в хранилище данных.
- Google App Engine Java SDK 1.6.3.1, JDO 2.3
- Пружина 3.1.1
- JDK 1.6
- Eclipse 3.7 + Плагин Google для Eclipse
P.S Используйте плагин Google для Eclipse для создания шаблона проекта веб-приложения, он создаст и настроит P.S Используйте плагин Google для Eclipse для создания шаблона проекта веб-приложения, он создаст и настроит для вас автоматически.
1. Покупатель
Аннотируйте объект клиента аннотацией JDO.
package com.mkyong.model; import java.util.Date; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; import com.google.appengine.api.datastore.Key; @PersistenceCapable public class Customer { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private String name; @Persistent private String email; @Persistent private Date date; //getter and setter methods }
2. Менеджер сохраняемости
Создайте одноэлементный класс PersistenceManager.
package com.mkyong; import javax.jdo.JDOHelper; import javax.jdo.PersistenceManagerFactory; public final class PMF { private static final PersistenceManagerFactory pmfInstance = JDOHelper .getPersistenceManagerFactory("transactions-optional"); private PMF() { } public static PersistenceManagerFactory get() { return pmfInstance; } }
3. Пружинный Контроллер
Пружинный контроллер, стиль ОТДЫХА, выполняет операцию CRUD. Код должен быть понятен сам по себе.
Файл: CustomerController.java
package com.mkyong.controller; import java.util.Date; import java.util.List; import javax.jdo.PersistenceManager; import javax.jdo.Query; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.mkyong.PMF; import com.mkyong.model.Customer; @Controller @RequestMapping("/customer") public class CustomerController { @RequestMapping(value = "/add", method = RequestMethod.GET) public String getAddCustomerPage(ModelMap model) { return "add"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public ModelAndView add(HttpServletRequest request, ModelMap model) { String name = request.getParameter("name"); String email = request.getParameter("email"); Customer c = new Customer(); c.setName(name); c.setEmail(email); c.setDate(new Date()); PersistenceManager pm = PMF.get().getPersistenceManager(); try { pm.makePersistent(c); } finally { pm.close(); } return new ModelAndView("redirect:list"); } @RequestMapping(value = "/update/{name}", method = RequestMethod.GET) public String getUpdateCustomerPage(@PathVariable String name, HttpServletRequest request, ModelMap model) { PersistenceManager pm = PMF.get().getPersistenceManager(); Query q = pm.newQuery(Customer.class); q.setFilter("name == nameParameter"); q.setOrdering("date desc"); q.declareParameters("String nameParameter"); try { Listresults = (List ) q.execute(name); if (results.isEmpty()) { model.addAttribute("customer", null); } else { model.addAttribute("customer", results.get(0)); } } finally { q.closeAll(); pm.close(); } return "update"; } @RequestMapping(value = "/update", method = RequestMethod.POST) public ModelAndView update(HttpServletRequest request, ModelMap model) { String name = request.getParameter("name"); String email = request.getParameter("email"); String key = request.getParameter("key"); PersistenceManager pm = PMF.get().getPersistenceManager(); try { Customer c = pm.getObjectById(Customer.class, key); c.setName(name); c.setEmail(email); c.setDate(new Date()); } finally { pm.close(); } // return to list return new ModelAndView("redirect:list"); } @RequestMapping(value = "/delete/{key}", method = RequestMethod.GET) public ModelAndView delete(@PathVariable String key, HttpServletRequest request, ModelMap model) { PersistenceManager pm = PMF.get().getPersistenceManager(); try { Customer c = pm.getObjectById(Customer.class, key); pm.deletePersistent(c); } finally { pm.close(); } // return to list return new ModelAndView("redirect:../list"); } // get all customers @RequestMapping(value = "/list", method = RequestMethod.GET) public String listCustomer(ModelMap model) { PersistenceManager pm = PMF.get().getPersistenceManager(); Query q = pm.newQuery(Customer.class); q.setOrdering("date desc"); List results = null; try { results = (List ) q.execute(); if (results.isEmpty()) { model.addAttribute("customerList", null); } else { model.addAttribute("customerList", results); } } finally { q.closeAll(); pm.close(); } return "list"; } }
4. Страницы JSP
Страницы JSP для отображения клиента и выполнения добавления, обновления и удаления.
Файл: list.jsp
<%@ page import="java.util.List" %> <%@ page import="com.mkyong.model.Customer" %> <%@ page import="com.google.appengine.api.datastore.KeyFactory" %>GAE + Spring 3 MVC REST + CRUD Example with JDO
Function : Add Customer
All Customers
Name | Created Date | Action | |
<%=c.getName() %> | <%=c.getEmail() %> | <%=c.getDate() %> | Update | Delete |
Файл: add.jsp
Add Customer
Файл: update.jsp
<%@ page import="com.mkyong.model.Customer" %> <%@ page import="com.google.appengine.api.datastore.KeyFactory" %>Update Customer
<% Customer customer = new Customer(); if(request.getAttribute("customer")!=null){ customer = (Customer)request.getAttribute("customer"); } %>
5. Демонстрация
Готово, смотрите демонстрацию, чтобы показать вам рабочий процесс веб-приложения.
1. Страница со списком, на которой отображается список существующих клиентов.
URL-АДРЕС: http://localhost:8888/клиент/список
2. На странице объявления нажмите на ссылку “Добавить клиента”, чтобы открыть страницу добавления клиента, введите нового клиента, имя = ” mkyong “, адрес электронной почты = ” test@yahoo.com “и нажмите на кнопку “Добавить”.
URL-АДРЕС: http://localhost:8888/customer/add
3. Сохраненный клиент, он вернется обратно на страницу объявления.
URL-АДРЕС: http://localhost:8888/клиент/список
4. Попробуйте обновить ссылку, она отобразит данные выбранного клиента, обновите адрес электронной почты на ” mkyong@yahoo.com “, и нажмите на кнопку обновить.
URL-АДРЕС: http://localhost:8888/customer/update/mkyong
5. Электронное письмо обновляется и перенаправляется обратно на страницу со списком.
URL-АДРЕС: http://localhost:8888/клиент/список
6. Чтобы удалить клиента, просто нажмите на ссылку “удалить”.
Скачать Исходный Код
Из-за большого размера файла все банки Spring MVC и GAE исключены.
Рекомендации
- Объекты данных Java (JDO)
- ГАЕ: Использование JDO
- GAE: низкоуровневый api хранилища данных
- GAE: Операции CRUD с JDO и Spring MVC
Оригинал: “https://mkyong.com/google-app-engine/google-app-engine-jdo-spring-mvc-crud-example/”