package com.spring.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
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.servlet.ModelAndView;
import com.spring.domain.TeacherInfo;
import com.spring.form.QueryForm;
import com.spring.manager.QueryManager;
@Controller
public class QueryController {
@Autowired
private QueryManager qureymanager;
@RequestMapping(value = "/query.do", method = RequestMethod.POST)
@ModelAttribute("QueryForm")
public ModelAndView query(QueryForm form, BindingResult result){
List<TeacherInfo> teacherinfo=this.qureymanager.qurey(form.getTeachername());
ModelAndView mv = new ModelAndView("queryresult");
mv.addObject("info", teacherinfo);
return mv;
}
}
package com.spring.manager;
import java.util.List;
import com.spring.domain.TeacherInfo;
public interface QueryManager {
public List<TeacherInfo> qurey(String teachername);
}
package com.spring.manager.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.spring.domain.TeacherInfo;
import com.spring.manager.QueryManager;
import com.spring.repository.impl.QueryRepositoryimpl;
@Service
public class QueryManagerImpl implements QueryManager {
@Autowired
private QueryRepositoryimpl queryrepositsory;
public List<TeacherInfo> qurey(String teachername) {
// TODO Auto-generated method stub
List<TeacherInfo> teacherinfo=queryrepositsory.qurey(teachername);
return teacherinfo;
}
}
package com.spring.repository;
import java.util.List;
import com.spring.domain.TeacherInfo;
public interface QueryRepository {
public List<TeacherInfo> qurey(String teachername);
}
package com.spring.repository.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import com.spring.domain.TeacherInfo;
import com.spring.repository.QueryRepository;
@Repository
public class QueryRepositoryimpl implements QueryRepository {
@PersistenceContext(unitName = "SPRING_JPA")
private EntityManager entityManager;
@Override
public List<TeacherInfo> qurey(String teachername) {
System.out.println("teachername"+teachername);
if (teachername !="") {
String hql = "select t from TeacherInfo t where teacherName=:teachername";
Query query = entityManager.createQuery(hql);
query.setParameter("teachername", teachername);
@SuppressWarnings("unchecked")
List<TeacherInfo> list = query.getResultList();
if (list.isEmpty())
System.out.print("empty");
return list;
}
else{
String hql = "select t from TeacherInfo t";
Query query = entityManager.createQuery(hql);
@SuppressWarnings("unchecked")
List<TeacherInfo> list = query.getResultList();
return list;
}
}
}
}
}
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!--
在web.xml 中配置了 springannomvc 的模块,根据spring的规范,需要在 springannomvc-servlet.xml 定义springMVC的具体配置
-->
<!-- 对 action 包中的所有 Controller 类进行扫描,以完成自动装载功能 -->
<context:component-scan base-package="com.spring.controller"></context:component-scan>
<!-- 启动springMVC的注解驱动 -->
<bean id="defaultAnnotationHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>text/xml</value>
<value>text/plain</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<!-- 模型视图的解析 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp"></property>
<property name="prefix" value="/"></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
</beans>
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.spring.*"/>
<aop:aspectj-autoproxy/>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="SPRING_JPA" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TestSpringMVCandJPA</display-name>
<filter>
<filter-name>jpaFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>jpaFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- spring 相关配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!-- spring 启动监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 处理请求的 servlet,它将加载 WEB-INF/dispatcherServlet.xml下的配置文件,以启动springMVC模块 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<!-- 持久化单元名为SPRING_JPA在spring配置文件中要对应起来,使用本地事务 -->
<persistence-unit name="SPRING_JPA" transaction-type="RESOURCE_LOCAL">
<!-- 声明JPA规范由hibernate实现持久化 -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update"/> <!-- update/none -->
</properties>
</persistence-unit>
</persistence>