2. CRUD using java and mysql databsase

CRUD USING JAVA ON ECLIPSE
=====================================================================================================================
DATABASE
=====================================================================================================================


mysqldump --no-data --skip-comments --user=root --password=root --host=localhost test book > D:\vm\student.sql

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `book` (
  `book_id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(128) DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL,
  `image` longblob,
  PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;





=====================================================================================================================
MODEL
=====================================================================================================================
-------------------------------------------------------------------------------------------------------------
Student 
-------------------------------------------------------------------------------------------------------------


package org.websparrow.model;

public class Student {

// Generate Getter and Setters...
private int id;
private String name;
private String email;
private String course;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getCourse() {
return course;
}

public void setCourse(String course) {
this.course = course;
}

}

=====================================================================================================================
DAO
=====================================================================================================================

-------------------------------------------------------------------------------------------------------------
StudentDao 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.dao;

import java.util.List;

import org.websparrow.model.Student;

public interface StudentDao {

public int create(Student student);

public List<Student> read();

public List<Student> findStudentById(int studentId);

public int update(Student student);

public int delete(int studentId);

}


-------------------------------------------------------------------------------------------------------------
StudentDaoImpl 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.websparrow.model.Student;

public class StudentDaoImpl implements StudentDao {

private JdbcTemplate jdbcTemplate;

public StudentDaoImpl(DataSource dataSoruce) {
jdbcTemplate = new JdbcTemplate(dataSoruce);
}

@Override
public int create(Student student) {

String sql = "insert into student1(stu_name,stu_email,stu_course) values(?,?,?)";

try {

int counter = jdbcTemplate.update(sql,
new Object[] { student.getName(), student.getEmail(), student.getCourse() });

return counter;

} catch (Exception e) {
e.printStackTrace();
return 0;
}
}

@Override
public List<Student> read() {
List<Student> studentList = jdbcTemplate.query("SELECT * FROM STUDENT1", new RowMapper<Student>() {

@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
Student student = new Student();

student.setId(rs.getInt("stu_id"));
student.setName(rs.getString("stu_name"));
student.setEmail(rs.getString("stu_email"));
student.setCourse(rs.getString("stu_course"));

return student;
}

});

return studentList;
}

@Override
public List<Student> findStudentById(int studentId) {

List<Student> studentList = jdbcTemplate.query("SELECT * FROM STUDENT1 where stu_id=?",
new Object[] { studentId }, new RowMapper<Student>() {

@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
Student student = new Student();

student.setId(rs.getInt("stu_id"));
student.setName(rs.getString("stu_name"));
student.setEmail(rs.getString("stu_email"));
student.setCourse(rs.getString("stu_course"));

return student;
}

});

return studentList;
}

@Override
public int update(Student student) {
String sql = "update  student1 set stu_name=?, stu_email=?, stu_course=? where stu_id=?";

try {

int counter = jdbcTemplate.update(sql,
new Object[] { student.getName(), student.getEmail(), student.getCourse(), student.getId() });

return counter;

} catch (Exception e) {
e.printStackTrace();
return 0;
}
}

@Override
public int delete(int studentId) {
String sql = "delete from student1 where stu_id=?";

try {

int counter = jdbcTemplate.update(sql, new Object[] { studentId });

return counter;

} catch (Exception e) {
e.printStackTrace();
return 0;
}
}

}

=====================================================================================================================
CONTROLLER
=====================================================================================================================

-------------------------------------------------------------------------------------------------------------
CreateController 
-------------------------------------------------------------------------------------------------------------
package org.websparrow.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.StudentDao;
import org.websparrow.model.Student;

@Controller
public class CreateController {

@Autowired
private StudentDao studentDao;

@RequestMapping(value = "/create", method = RequestMethod.POST)
public ModelAndView createStudent(@RequestParam("name") String name, @RequestParam("email") String email,
@RequestParam("course") String course, ModelAndView mv) {

Student student = new Student();
student.setName(name);
student.setEmail(email);
student.setCourse(course);

int counter = studentDao.create(student);

if (counter > 0) {
mv.addObject("msg", "Student registration successful.");
} else {
mv.addObject("msg", "Error- check the console log.");
}

mv.setViewName("create");

return mv;
}
}
-------------------------------------------------------------------------------------------------------------
DeleteController 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.controller;

import java.io.IOException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.StudentDao;

@Controller
public class DeleteController {

@Autowired
private StudentDao studentDao;

@RequestMapping(value = "/delete/{studentId}")
public ModelAndView deleteStudentById(ModelAndView mv, @PathVariable("studentId") int studentId)
throws IOException {

int counter = studentDao.delete(studentId);

if (counter > 0) {
mv.addObject("msg", "Student records deleted against student id: " + studentId);
} else {
mv.addObject("msg", "Error- check the console log.");
}

mv.setViewName("delete");

return mv;
}

}
-------------------------------------------------------------------------------------------------------------
ReadController 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.controller;

import java.io.IOException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.StudentDao;
import org.websparrow.model.Student;

@Controller
public class ReadController {

@Autowired
private StudentDao studentDao;

@RequestMapping(value = "/read")
public ModelAndView readStudent(ModelAndView model) throws IOException {

List<Student> listStudent = studentDao.read();
model.addObject("listStudent", listStudent);
model.setViewName("read");

return model;
}
}

-------------------------------------------------------------------------------------------------------------
UpdateController 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.controller;

import java.io.IOException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.StudentDao;
import org.websparrow.model.Student;

@Controller
public class UpdateController {

@Autowired
private StudentDao studentDao;

@RequestMapping(value = "/update/{studentId}")
public ModelAndView findStudentById(ModelAndView model, @PathVariable("studentId") int studentId)
throws IOException {

List<Student> listStudent = studentDao.findStudentById(studentId);
model.addObject("listStudent", listStudent);
model.setViewName("update");

return model;
}

@RequestMapping(value = "/update", method = RequestMethod.POST)
public ModelAndView updateStudent(@RequestParam("id") int id, @RequestParam("name") String name,
@RequestParam("email") String email, @RequestParam("course") String course, ModelAndView mv) {

Student student = new Student();
student.setId(id);
student.setName(name);
student.setEmail(email);
student.setCourse(course);

int counter = studentDao.update(student);

if (counter > 0) {
mv.addObject("msg", "Student records updated against student id: " + student.getId());
} else {
mv.addObject("msg", "Error- check the console log.");
}

mv.setViewName("update");

return mv;
}
}


=====================================================================================================================
CONFIG
=====================================================================================================================

-------------------------------------------------------------------------------------------------------------
FrontControllerConfig 
-------------------------------------------------------------------------------------------------------------

package org.websparrow.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class FrontControllerConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {

return new Class[] { WebMvcConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {

return null;
}

@Override
protected String[] getServletMappings() {

return new String[] { "/" };
}

}

-------------------------------------------------------------------------------------------------------------
WebMvcConfig 
-------------------------------------------------------------------------------------------------------------


package org.websparrow.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.websparrow.dao.StudentDao;
import org.websparrow.dao.StudentDaoImpl;

@Configuration
@EnableWebMvc
@ComponentScan("org.websparrow")
public class WebMvcConfig {

@Bean
InternalResourceViewResolver viewResolver() {

InternalResourceViewResolver vr = new InternalResourceViewResolver();

vr.setPrefix("/");
vr.setSuffix(".jsp");
return vr;
}

@Bean
DriverManagerDataSource getDataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=latin1");
ds.setUsername("root");
ds.setPassword("root");

return ds;
}

@Bean
public StudentDao getUserDao() {
return new StudentDaoImpl(getDataSource());
}
}


=====================================================================================================================
VIEW
=====================================================================================================================

-------------------------------------------------------------------------------------------------------------
create.jsp
-------------------------------------------------------------------------------------------------------------

<html>
<head>
<title>Create</title>
</head>
<body>
<h2>Spring MVC Create, Read, Update and Delete (CRUD) Example</h2>
<form action="create" method="post">
<pre>
    <strong>Create Here | <a href="./read">Click for Read</a></strong>
Name: <input type="text" name="name" />
Email: <input type="text" name="email" />
Course: <input type="text" name="course" />

<input type="submit" value="Create" />
</pre>
</form>
${msg}
</body>
</html>

-------------------------------------------------------------------------------------------------------------
Delete.jsp
-------------------------------------------------------------------------------------------------------------


<html>
<head>
<title>Delete</title>
</head>
<body>
<h2>Spring MVC Create, Read, Update and Delete (CRUD) Example</h2>

<p><strong><a href="../read">Click for Read</a></strong></p>
${msg}
</body>
</html>

-------------------------------------------------------------------------------------------------------------
read.jsp
-------------------------------------------------------------------------------------------------------------

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Read</title>
</head>
<body>
<h2>Spring MVC Create, Read, Update and Delete (CRUD) Example</h2>
<p><strong>Student List is Here | <a href="create.jsp">Click for Create</a></strong></p>
<table border="1">
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
<th>Course</th>
<th>Action</th>
</tr>
<c:forEach var="student" items="${listStudent}">
<tr>
<td>${student.id}</td>
<td>${student.name}</td>
<td>${student.email}</td>
<td>${student.course}</td>
<td><a href="update/<c:out value='${student.id}'/>">Update</a> | <a
href="delete/<c:out value='${student.id}'/>">Delete</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
-------------------------------------------------------------------------------------------------------------
update.jsp
-------------------------------------------------------------------------------------------------------------
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Update</title>
</head>
<body>
<h2>Spring MVC Create, Read, Update and Delete (CRUD) Example</h2>
<p><strong>Update Here | <a href="../read">Click for Read</a></strong></p>
<form action="../update" method="post">
<pre>
<c:forEach var="student" items="${listStudent}">
Id:    <input type="text" name="dispId" value="${student.id}" disabled="disabled"/>
<input type="hidden" name="id" value="${student.id}"/>
Name:  <input type="text" name="name" value="${student.name}" />
Email: <input type="text" name="email" value="${student.email}" />
    
Course: <input type="text" name="course" value="${student.course}" />
    
        <input type="submit" value="Update" />
</c:forEach>
</pre>
</form>
${msg}
</body>
</html>


=====================================================================================================================
pom.xml
=====================================================================================================================


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.websparrow</groupId>
<artifactId>spring-mvc-crud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- spring mvc dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- spring jdbc dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- mysql databse connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!-- jstl library -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>


No comments:

Post a Comment