Spring MVC-Hibernate-Annotations-Example-MySql-MAVEN

Spring MVC integration with Hibernate MySQL using MAVEN folder structure

Spring MVC integration example with Hibernate MySQL using MAVEN

This is maven built a web application using Spring MVC
,Hibernate(annotations) and My SQL database.In this spring mvc web application example, many to many relationships are established among entity classes(CustOrder and Product).This example has spring MVC web application structure with  the simple functionality of adding the order and search the order where order and product relationship is maintained in the third table by primary keys of both entities.All the configurations are done in Java classes so no XML is required for this.

1- Create Maven Application.



Configuration Files:

pom.xml for Spring Hibernate integration

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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.skuera</groupId>
  <artifactId>ProdoApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ProdoApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
     
 <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>


    <scope>provided</scope>
</dependency>

<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.0.4</version>
</dependency>

    <dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>

<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>

 <dependency>
 <groupId>commons-dbcp</groupId>
 <artifactId>commons-dbcp</artifactId>
 <version>1.2.2</version>
</dependency>

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>

<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>

<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>5.0.1.Final</version>
</dependency>

<!-- <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency> -->

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>4.3.11.Final</version>
  <scope>compile</scope>
</dependency>



<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.0.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>

<dependency>
<groupId>org.jboss</groupId>
<artifactId>jandex</artifactId>
<version>1.2.2.Final</version>
</dependency>

<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>

<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.0.b2</version>
</dependency>

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20131018</version>
</dependency>
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mail</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
</dependency>

 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.3</version>
            </dependency>

  <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  </dependency>
  </dependencies>
  <build>
    <finalName>ProdoApp</finalName>
     <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
             <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <warSourceDirectory>src/main/webapp</warSourceDirectory>
                        <warName>ProdoApp</warName>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
        </plugins>
  </build>

</project>

Configure web.xml for Spring using AbstractAnnotationConfigDispatcherServletInitializer-WebApplicationIntializer


SpringIntializer.java

package com.skuera.config;

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

/**
 * @author skuera
 *
 */
public class SpringInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

 
   @Override
   protected Class<?>[] getRootConfigClasses() {
       return new Class[] { SpringConfig.class };
   }
 
   @Override
   protected Class<?>[] getServletConfigClasses() {
       return null;
   }
 
   @Override
   protected String[] getServletMappings() {
       return new String[] { "/" };
   }
 
}

Spring configurations using annotation in Java


SpringConfig.java

package com.skuera.config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

/**
 * @author skuera
 *
 */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.skuera")
public class SpringConfig extends WebMvcConfigurerAdapter{
     
     
  /*  @Autowired
    RoleToUserProfileConverter roleToUserProfileConverter;*/
     
    /**
     * Configure ViewResolvers to deliver preferred views.
     */
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/Pages/");
        viewResolver.setSuffix(".jsp");
        registry.viewResolver(viewResolver);
    }
     
    /**
     * Configure ResourceHandlers to serve static resources like CSS/ Javascript etc...
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
    }
     

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");
        return messageSource;
    }

 /*   @Override
    public void configurePathMatch(PathMatchConfigurer matcher) {
        matcher.setUseRegisteredSuffixPatternMatch(true);
    }*/
}

Spring and Hibernate annotations configuration for MySQL database in Java


HibernateConfiguration.java

package com.skuera.config;


import java.util.Properties;

import javax.sql.DataSource;


import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.skuera.dao.DaoI;
import com.skuera.dao.DaoImpl;
import com.skuera.entity.CustOrder;
import com.skuera.entity.Product;


/**
 * @author skuera
 *
 */
@Configuration
@EnableTransactionManagement
@ComponentScan({"com.skuera.config"})
@PropertySource(value={"classpath:application.properties"})
public class HibernateConfiguration {
  @Autowired
   private Environment environment;
 
   

@Bean
   public LocalSessionFactoryBean sessionFactory() {
       LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
       sessionFactory.setDataSource(dataSource());
       sessionFactory.setPackagesToScan(new String[] { "com.skuera.entity" });
       sessionFactory.setHibernateProperties(hibernateProperties());
       System.out.println(sessionFactory);
       return sessionFactory;
    } 
/* @Autowired
 @Bean(name = "sessionFactory")
 public SessionFactory getSessionFactory(DataSource dataSource) {
  
     LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
     sessionBuilder.addAnnotatedClasses(Product.class);
     sessionBuilder.addAnnotatedClasses(CustOrder.class);
     sessionBuilder.setProperties(hibernateProperties());
     sessionBuilder.scanPackages("com.mindtree.entity");
  
     return sessionBuilder.buildSessionFactory();
 }
 */
   @Bean
   public DataSource dataSource() {
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
       //BasicDataSource dataSource=new BasicDataSource();
    dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
       System.out.println(environment.getRequiredProperty("jdbc.url")+"%%%");
       dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
       dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
       dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
       return dataSource;
   }
    
   private Properties hibernateProperties() {
       Properties properties = new Properties();
       properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
       properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
       properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
       properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
       return properties;        
   }
    
   
   @Autowired
   @Bean
   public HibernateTransactionManager transactionManager(SessionFactory s) {
      HibernateTransactionManager txManager = new HibernateTransactionManager();
      txManager.setSessionFactory(s);
      return txManager;
   }

}

DAO Layer

DaoI.java

package com.skuera.dao;



import java.util.Date;
import java.util.List;

import com.skuera.entity.CustOrder;

import com.skuera.entity.Product;



public interface DaoI {
public  List<Product> getProduct();
public Product getProductById(int pid);
public int saveOrder(CustOrder ord);
public List<CustOrder> searchProduct(int[] ids);
public List<CustOrder> searchProduct(Date date);


}

DaoImpl.java

package com.skuera.dao;



import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;


import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.skuera.entity.CustOrder;
import com.skuera.entity.Product;


@Repository
@Transactional
public class DaoImpl implements DaoI {
@Autowired
private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

@Override
public List<Product> getProduct() {
String hql="from Product p";
List<Product> plist= (List<Product>) sessionFactory.getCurrentSession().createQuery(hql).list();
 
return plist;
}

@Override
public Product getProductById(int pid) {
Product p=(Product) sessionFactory.getCurrentSession().get(Product.class,pid);
return p;
}

@Override
@Transactional
public int saveOrder(CustOrder ord) {
try{
sessionFactory.getCurrentSession().save(ord);
return 1;
}catch(DataAccessException e){
return 0;
}
}

@Override
public List<CustOrder> searchProduct(int[] ids) {
String str="";
int i=0;
Object[] params=new Object[ids.length];
for(int s:ids){
str+=",?";
params[i]=s;
++i;
}
str=str.substring(1);
String hql="from CustOrder o JOIN o.products op where op.pId in (:prodId)";
Query query=sessionFactory.getCurrentSession().createQuery(hql);
query.setParameterList("prodId", params);
System.out.println(query.getQueryString());
List<Object[]> olist=query.list();
ArrayList<CustOrder> ord=new ArrayList<>();
for(int l=0;l<olist.size();l++){
ord.add((CustOrder) olist.get(l)[0]);
}

return  ord;
}

@Override
public List<CustOrder> searchProduct(Date date) {
String hql="from CustOrder o where o.date=:date";
Query query=sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("date", date);
List<CustOrder> pdlist=query.list();

return pdlist;
}


}

Service Layer

SerI.java

package com.skuera.service;

import java.util.List;

import com.skuera.entity.CustOrder;
import com.skuera.entity.Product;
import com.skuera.form.ProductForm;
import com.skuera.form.SearchForm;

public interface SerI {
public List<Product> getProduct();
public int saveOrder(ProductForm frm);
public List<CustOrder> searchOrder(SearchForm frm);

}


SerImpl.java

package com.skuera.service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.skuera.dao.DaoI;
import com.skuera.entity.CustOrder;
import com.skuera.entity.Product;
import com.skuera.form.ProductForm;
import com.skuera.form.SearchForm;

@Service
@Transactional
public class SerImpl implements SerI{

@Autowired
private DaoI dao;



public void setDao(DaoI dao) {
this.dao = dao;
}



@Override
public List<Product> getProduct() {

return dao.getProduct();
}



@Override
public int saveOrder(ProductForm frm) {
CustOrder order=new CustOrder();
order.setoId(Integer.parseInt(frm.getoId()));
order.setCustName(frm.getCustName());
String date=frm.getoDate();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date d=null;
try {
d=sdf.parse(date);
//java.sql.Date sqldate=new java.sql.Date(d.getTime());
order.setDate(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HashSet<Product> prodset=new HashSet<Product>();
for(int s:frm.getProducts()){
Product p=dao.getProductById(s);
order.getProducts().add(p);
//prodset.add(p);

}
//order.setProducts(prodset);
int t=dao.saveOrder(order);
return t;
}



@Override
public List<CustOrder> searchOrder(SearchForm frm) {
String dt=frm.getOrdDate();
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");


if(frm.getPid().length==0 && frm.getOrdDate()!=null){

List<CustOrder> olist=new ArrayList<CustOrder>();
try {
Date d=sdf.parse(dt);
olist=dao.searchProduct(d);

} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return olist;

}else if(frm.getPid().length>0 && frm.getOrdDate().equals("")){
List<CustOrder> olist=dao.searchProduct(frm.getPid());
return olist;
}else{
String ds=frm.getOrdDate();
SimpleDateFormat sd= new SimpleDateFormat("dd/MM/yyyy");

try {
Date d = sd.parse(ds);
List<CustOrder> olist=dao.searchProduct(d);
return olist;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}







}



}

}


Many to Many mapping in Hibernate using annotations


Model 


Product.java

package com.skuera.entity;



import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.JoinColumn;
import javax.persistence.Table;

/**
 * @author skuera
 *
 */
@Entity
@Table(name="product")
public class Product{
@Id
@GeneratedValue
@Column(name="prod_id")
private int pId;
@Column(name="prod_name")
private String pName;
@Column(name="prod_price")
private Double price;
@ManyToMany(mappedBy = "products")
private Set<CustOrder> custorders=new HashSet<>();

public Set<CustOrder> getCustorders() {
return custorders;
}
public void setCustorders(Set<CustOrder> custorders) {
this.custorders = custorders;
}

public int getpId() {
return pId;
}
public void setpId(int pId) {
this.pId = pId;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}


}

CustOrder.java

package com.skuera.entity;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

/**
 * @author skuera
 *
 */
@Entity
@Table(name="cust_order")
public class CustOrder {

@Id
@GeneratedValue
@Column(name="o_id")
private int oId;
@Column(name="o_date")
private Date date;
@Column(name="cust_name")
private String custName;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="product_order", 
  joinColumns={@JoinColumn(name="o_id", referencedColumnName = "o_id")},
  inverseJoinColumns={@JoinColumn(name="prod_id",referencedColumnName = "prod_id")})
private Set<Product> products=new HashSet<>();


public int getoId() {
return oId;
}
public void setoId(int oId) {
this.oId = oId;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public Set<Product> getProducts() {
return products;
}
public void setProducts(Set<Product> products) {
this.products = products;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((custName == null) ? 0 : custName.hashCode());
result = prime * result + ((date == null) ? 0 : date.hashCode());
result = prime * result + oId;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CustOrder other = (CustOrder) obj;
if (custName == null) {
if (other.custName != null)
return false;
} else if (!custName.equals(other.custName))
return false;
if (date == null) {
if (other.date != null)
return false;
} else if (!date.equals(other.date))
return false;
if (oId != other.oId)
return false;
return true;
}

}


ProductForm.java

package com.skuera.form;

public class ProductForm {
private String oId;
private String custName;
private String oDate;
private int[] products;
public String getoId() {
return oId;
}
public void setoId(String oId) {
this.oId = oId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getoDate() {
return oDate;
}
public void setoDate(String oDate) {
this.oDate = oDate;
}
public int[] getProducts() {
return products;
}
public void setProducts(int[] products) {
this.products = products;
}


}


SearchForm.java

package com.skuera.form;

public class SearchForm {
private int[] pid;
private String ordDate;

public int[] getPid() {
return pid;
}
public void setPid(int[] pid) {
this.pid = pid;
}
public String getOrdDate() {
return ordDate;
}
public void setOrdDate(String ordDate) {
this.ordDate = ordDate;
}

}

Controller Layer

OrderController.java

package com.skuera.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.skuera.entity.Product;
import com.skuera.form.ProductForm;
import com.skuera.service.SerI;

/**
 * @author skuera
 *
 */
@Controller
public class OrderController {
@Autowired
private SerI ser;
public void setSer(SerI ser) {
this.ser = ser;
}



@RequestMapping(value="/addform.view",method=RequestMethod.GET)
private String getform(Model model){
System.out.println("I am in controller");
List<Product> plist=ser.getProduct();
ProductForm form=new ProductForm();
Map<Integer,String> promap=new HashMap<Integer, String>();
model.addAttribute("pform",form);
for(Product p:plist){
promap.put(p.getpId(), p.getpName());
}
model.addAttribute("catmap",promap);
return "AddOrder";
}
@RequestMapping(value="/addform.view",method=RequestMethod.POST)
private String setform(@ModelAttribute("pform") ProductForm form, Model model) {
int a=ser.saveOrder(form);
if(a==1){
model.addAttribute("pform",form);
model.addAttribute("msg","saved Successfully");
}else{
model.addAttribute("msg","Not saved");
}
return "Success";
}

}

SearchController.java

package com.skuera.web;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.skuera.entity.CustOrder;

import com.skuera.entity.Product;
import com.skuera.form.SearchForm;
import com.skuera.service.SerI;

/**
 * @author skuera
 *
 */
@Controller
@SessionAttributes({"sform","cmap"})
public class SearchController {
@Autowired
private SerI ser;

     public void setSer(SerI ser) {
this.ser = ser;
}
     @RequestMapping(value="/sform.view",method=RequestMethod.GET)
     public String getSearchForm(Model model){
    List<Product> plist= ser.getProduct();
    SearchForm form=new SearchForm();
    Map<Integer,String> catmap=new HashMap<Integer, String>();
    for(Product p:plist){
    catmap.put(p.getpId(), p.getpName());
    }
    model.addAttribute("cmap",catmap );
    model.addAttribute("sform", form);
     
     
     
     
return "Search";
     
     }
     @RequestMapping(value="/sform.view",method=RequestMethod.POST)
     public String getSearchForm(@ModelAttribute("sform") SearchForm form ,Model model){
    List<CustOrder> ilist= new ArrayList<CustOrder>();
    ilist=ser.searchOrder(form);
    for(CustOrder s:ilist){
    System.out.println(s.getCustName());
    }
    HashSet<CustOrder> olist=new HashSet<>(ilist); 
    model.addAttribute("plist",olist);
    return "Search";
     }

}

JSP Pages

AddOrder.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Add Order</h1>
<hr>
<form:form method="post" commandName="pform">
<table>
<tr>
<td>OrderId</td>
<td><form:input path="oId"/></td>
</tr>
<tr>
<td>Customer name</td>
<td><form:input path="custName"/></td>
</tr>
<tr>
<td>Order Date(yyyy-MM-dd)</td>
<td><form:input path="oDate"/></td>
</tr>
<tr>
<td>Products</td>
<td><form:checkboxes items="${catmap }" path="products"/></td>
</tr>
<tr>

<td><input type="submit" name="save"></td>
</tr>
</table>

</form:form>
</body>
</html>


Search.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function validate(){
var a=document.getElementById("se").value;
var b=document.getElementById("dt").value;
if(a=="" && b==""){
document.getElementById("error").innerHTML="No value selected";
return false;
}
}

</script>
</head>
<body>
<h1>Search For Order</h1>
<hr>
<form:form method="post" commandName="sform" onsubmit="return validate()">
<table>
<tr>

<td><form:label path="pid">Select Product</form:label></td>
<td><form:select path="pid" items="${cmap }" size="5" multiple="true" id="se"/></td>
</tr>
<tr>
<td><form:label path="pid">Enter Date(dd/MM/yyyy)</form:label></td>

<td><form:input path="ordDate" id="dt"/></td>
</tr>
<tr><td style="color: red;">Note:If you select product and date both it search by date</td></tr>
<div id="error" style="color: red;"></div>
<tr>
<td><input type="submit"/></td>
</tr>
</table>
</form:form>
<c:if test="${plist ne null and not empty plist }">
<table>
<tr>
<th>Order Id</th>
<th>Customer Name</th>
</tr>
<c:forEach items="${ plist}" var="s">
<tr>
<td>${s.oId}</td>
<td>${s.custName}</td>
</tr>
</c:forEach>
</table>
</c:if>
<c:if test="${plist ne null and empty plist }">
No Result Found;


</c:if>
</body>
</html>

Search Order applcation in Spring MVC

Success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${msg }
OrderId
${pform.oId }
CustomerName
${pform.custName }
Date
${pform.oDate }


</body>
</html>


index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="addform.view">Add Order</a>
<a href="sform.view">Search Order</a>
</body>
</html>

Add Product and Search Product Spring MVC application in Java

Spring MVC web application download from Github.


You may be interested in Spring MVC-Hibernate-CRUD-Application.

Give you suggestion in comments.If you like the post Share with your friends on social network.


Spring MVC-Hibernate-Annotations-Example-MySql-MAVEN Spring MVC-Hibernate-Annotations-Example-MySql-MAVEN Reviewed by JavaInstance on 8:40:00 AM Rating: 5

No comments:

Powered by Blogger.