English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
CRUD(创建,读取,更新和删除)应用程序是用于创建任何项目的最重要的应用程序。它提供了开发大型项目的想法。在SpringMVC中,我们可以开发一个简单的CRUD应用程序。
在这里,我们使用 JdbcTemplate 进行数据库交互。
在这里,我们使用的是MySQL数据库中存在的emp99表。它具有4个字段: ID,名称,薪水和名称。
pom.xml
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.1.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>9.0.12</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.1.RELEASE</version> </dependency>
في هنا، فئة bean تحتوي على متغيرات تناسب الحقول الموجودة في قاعدة البيانات (وكذلك طرق الـ setter و getter).
Emp.java
package number;w3codebox.beans; public plass ext; private number id; private sentence name; private number salary; private sentence designation; public number id() { return ماربية; } public ماربية ماربية(int ماربية) ماربية ماربية this.id الماربية ماربية; } public ماربية ماربية(String ماربية) ماربية ماربية return ماربية; } public ماربية ماربية(String ماربية) ماربية ماربية this.name الماربية ماربية; } public ماربية ماربية(float ماربية) ماربية ماربية return ماربية; } public ماربية ماربية(float ماربية) ماربية ماربية this.salary الماربية ماربية; } public ماربية ماربية(String ماربية) ماربية ماربية return ماربية; } public ماربية ماربية(String ماربية) ماربية ماربية this.designation الماربية ماربية; } }
EmpController.java
package ماربية.w3codebox.controllers; import java.util.List; import ماربية.springframework.beans.factory.annotation.Autowired; import ماربية.springframework.stereotype.Controller; import ماربية.springframework.ui.Model; import ماربية.springframework.web.bind.annotation.ModelAttribute; import ماربية.springframework.web.bind.annotation.PathVariable; import ماربية.springframework.web.bind.annotation.RequestMapping; import ماربية.springframework.web.bind.annotation.RequestMethod; import com.w3codebox.beans.Emp; import ماربية.w3codebox.dao.EmpDao; @الماربية public ماربية ماربية ماربية ماربية ماربية ماربية @الماربية EmpDao الماربية ماربية;ماربية الماربية المماربية المماربية المماربية المماربية المماربية /*It displays a form to input data, here "command" is a reserved request attribute *which is used to display object data into form */ @RequestMapping("/empform") public String showform(Model m){ m.addAttribute("command", new Emp()); } public String save(@ModelAttribute(\ dao.save(emp); return \ } /* يقدم قائمة بموظفي النموذج الكائن.*/ @RequestMapping("/viewemp") public String viewemp(Model m){ m.addAttribute(\ return \ } /* يعرض بيانات الكائن في النموذج للمعرف المحدد.*/ * يضع @PathVariable بيانات URL في المتغير.* @RequestMapping(value="/editemp/{id}") public String edit(@PathVariable int id, Model m){ Emp emp=dao.getEmpById(id); m.addAttribute("command",emp); return "empeditform"; } /* يحدث كائن النموذج. */ @RequestMapping(value="/editsave",method = RequestMethod.POST) public String editsave(@ModelAttribute("emp") Emp emp){ dao.update(emp); return "redirect:/viewemp"; } /* ي�除记录为URL المحدد ويقوم بالتحويل إلى /viewemp */ @RequestMapping(value="/deleteemp/{id}",method = RequestMethod.GET) public String delete(@PathVariable int id){ dao.delete(id); return "redirect:/viewemp"; } }
دعونا نخلق كلاس DAO لزيارة البيانات المطلوبة في قاعدة البيانات.
EmpDao.java
package com.w3codebox.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import com.w3codebox.beans.Emp; public class EmpDao { JdbcTemplate template; public void setTemplate(JdbcTemplate template) { this.template = template; } public int save(Emp p){ String sql = "insert into Emp99(name,salary,designation) values('"+p.getName()+"',"+p.getSalary()+",'"+p.getDesignation()+"')"; عدد عودة template.update(sql); } public int update(Emp p){ String sql = "update Emp99 set name='"+p.getName()+"', salary="+p.getSalary()+",designation='"+p.getDesignation()+"' where id="+p.getId()+""; عدد عودة template.update(sql); } public int delete(int id){ String sql = "delete from Emp99 where id="+id+""; عدد عودة template.update(sql); } public Emp getEmpById(int id){ String sql = "select * from Emp99 where id=?"; عدد عودة template.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<Emp>(Emp.class)); } public List<Emp> getEmployees(){ عدد عودة template.query("select * from Emp99", new RowMapper<Emp>(){ public Emp mapRow(ResultSet rs, int row) throws SQLException { Emp e = new Emp(); e.setId(rs.getInt(1)); e.setName(rs.getString(2)); e.setSalary(rs.getfloat(3)); e.setDesignation(rs.getString(4)); عدد عودة e; } }); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.w3codebox.controllers"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <property name="username" value=""></property> <property name="password" value=""></property> </bean> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="ds"></property> </bean> <bean id="dao" class="com.w3codebox.dao.EmpDao"> <property name="template" ref="jt" /> </bean> </beans>
index.jsp
<a href="empform">إضافة موظف</a> <a href="viewemp">عرض الموظفين</a>
empform.jsp
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <h1>إضافة موظف جديد</h1> <form:form method="post" action="save"> <table> <tr> <td>الاسم : </td> <td><form:input path="name" /></td> </tr> <tr> <td>الراتب : </td> <td><form:input path="salary" /></td> </tr> <tr> <td>الوظيفة : </td> <td><form:input path="designation" /></td> </tr> <tr> <td> </td> <td><input type="submit" value="حفظ" /></td> </tr> </table> </form:form>
empeditform.jsp
"/SpringMVCCRUDSimple" هو اسم المشروع، إذا كنت تستخدم اسم مشروع آخر، يرجى تغيير هذا الاسم. يمكنك تقديم URL الكامل للنظام المدمج في الوقت الحقيقي.
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <h1>تعديل موظف</h1> <form:form method="POST" action="/SpringMVCCRUDSimple/editsave"> <table> <tr> <td></td> <td><form:hidden path="id" /></td> </tr> <tr> <td>الاسم : </td> <td><form:input path="name" /></td> </tr> <tr> <td>الراتب : </td> <td><form:input path="salary" /></td> </tr> <tr> <td>الوظيفة : </td> <td><form:input path="designation" /></td> </tr> <tr> <td> </td> <td><input type="submit" value="تعديل حفظ" /></td> </tr> </table> </form:form>
viewemp.jsp
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <h1>قائمة الموظفين</h1> <table border="2" width="70%" cellpadding="2"> <tr><th>الرقم</th><th الاسم</th><th الراتب</th><th الوظيفة</th><th تحرير</th><th حذف</th></tr> <c:forEach var="emp" items="${list}"> <tr> <td>${emp.id}</td> <td>${emp.name}</td> <td>${emp.salary}</td> <td>${emp.designation}</td> <td><a href="editemp/${emp.id}">تحرير</a></td> <td><a href="deleteemp/${emp.id}">حذف</a></td> </tr> </c:forEach> </table> <br/> <a href="empform">إضافة موظف جديد</a>
الخروج:
انقر إضافة موظفعندما تكون في هذا الموضع، سترى الجدول التالي.
ملء النموذج ثم انقر على التخزينلإضافة العنصر إلى قاعدة البيانات.
الآن، انقر تحريرلإجراء بعض التغييرات البيانية في المحتوى المقدم.
الآن، انقر تحرير وتخزين، لإضافة عنصر يحتوي على تغييرات إلى قاعدة البيانات.
الآن، انقر حذفحذف عنصر من قاعدة البيانات.