SpringMVC整合Hibernate实现增删改查之按条件查询
更多精彩文章欢迎关注公众号“Java之康庄大道”

首先我贴出我项目的结构,只完成了条件查询的相关代码,增删改没有写。

1.新建一个动态Web工程,导入相应jar包,编写web.xml配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.配置springmvc.xml
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.tideway.springmvc"></context:component-scan> <mvc:annotation-driven/> <!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
hibernate配置文件:hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.tideway.springmvc.entity.User"/>
</session-factory>
</hibernate-configuration>
配置数据源,连接池c3p0, spring-common.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" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/attendance" />
<property name="user" value="root" />
<property name="password" value="密码" />
</bean> <!-- 配置SessionFactory 通过spring提供的LocalSessionFactoryBean进行配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 配置一个事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 添加一个通知取别名,然后决定管理哪一个事务管理器,***只是查询的话用不到事物 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* com.tideway.springmvc.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config> </beans>
3.创建实体类User.java
package com.tideway.springmvc.entity; import java.util.Date; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="t_attendance")
public class User {
private int id;
private int enID;
private String name;
private Date datetime; @Id
@GenericGenerator(name="id",strategy="identity")
@GeneratedValue(generator="id")
@Column(name="id",unique=true,nullable=false)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="EnID")
public int getEnID() {
return enID;
}
public void setEnID(int enID) {
this.enID = enID;
}
@Column(name="Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="DateTime")
public Date getDatetime() {
return datetime;
}
public void setDatetime(Date datetime) {
this.datetime = datetime;
} }
4.dao层接口
package com.tideway.springmvc.dao;
import java.util.List;
import com.tideway.springmvc.entity.User;
public interface UserDao {
/**
* dao层接口
* 查询打卡记录
* @param EnID 工号
* @param dateafter 起止日期
* @param datebefore 截至日期
* @return
*/
public List<User> getUser(String EnID,String dateafter,String datebefore);
}
5.dao层接口实现类
package com.tideway.springmvc.daoimpl; import java.util.List;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.tideway.springmvc.dao.UserDao;
import com.tideway.springmvc.entity.User; //@Repository用于标注数据访问组件,即DAO组件
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory; /**
* 查询dao层接口实现类
* 进行动态拼接查询,拼接hql语句进行多条件查询
*/
public List<User> getUser(String EnID, String dateafter, String datebefore) {
String hql = "from User where 1=1";
if(EnID!=null&&!("").equals(EnID)){
hql=hql+" and EnID='"+EnID+"'";
}
if(dateafter!=null&&!("").equals(dateafter)){
hql=hql+" and datetime>='"+dateafter+"'";
}
if(datebefore!=null&&!("").equals(datebefore)){
hql=hql+" and datetime<='"+datebefore+"'";
}
Query query = sessionFactory.getCurrentSession().createQuery(hql);
List<User> list=query.list();
return list;
} }
6.service层接口
package com.tideway.springmvc.service;
import java.util.List;
import com.tideway.springmvc.entity.User;
public interface UserService {
/**
* 查询的Service层接口
* @param EnID 工号
* @param dateafter 起止日期
* @param datebefore 截至日期
* @return
*/
public List<User> getUser(String EnID,String dateafter,String datebefore);
}
7.service层接口实现类
package com.tideway.springmvc.serviceimpl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.tideway.springmvc.dao.UserDao;
import com.tideway.springmvc.entity.User;
import com.tideway.springmvc.service.UserService; @Service
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao; /**
* 查询Service层接口实现类
*/
public List<User> getUser(String EnID,String dateafter, String datebefore){
return userDao.getUser(EnID, dateafter, datebefore);
} }
8.controller层
package com.tideway.springmvc.controller; import java.util.ArrayList;
import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import com.tideway.springmvc.entity.User;
import com.tideway.springmvc.service.UserService; @Controller
public class UserController { @Autowired
private UserService userService;
/**
* 控制器
* @param EnID 工号
* @param dateafter 起止日期
* @param datebefore 截至日期
* @param model 返回的数据
* @return
*/
@RequestMapping(value="/user/getuser.do",method=RequestMethod.GET)
public String getUser(String EnID,String dateafter, String datebefore,Model model){
try {
List<User> list=new ArrayList<User>();
list=userService.getUser(EnID, dateafter, datebefore);
model.addAttribute("lists", list);
// System.out.println("list.size="+list.size());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "list";
} }
9.index.jsp查询条件表单提交
<body>
<form action="/SpringMVC04/user/getuser.do">
工号:<input type="text" name="EnID" />
起止日期:<input type="date"name="dateafter" />
截止日期:<input type="date"name="datebefore" />
<input type="submit" value="查询" />
</form>
</body>
10.显示查询结果页面list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <!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=UTF-8">
<title>Insert title here</title>
</head>
<body> <table border="1" style="width: 50%">
<tr>
<th>ID</th>
<th>工号</th>
<th>名字</th>
<th>签到时间</th>
<th>操作</th>
</tr>
<c:forEach var="item" items="${lists}">
<tr>
<td>${item.id}</td>
<td>${item.enID}</td>
<td>${item.name}</td>
<td>${item.datetime}</td>
<td><a href="">编辑</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
SpringMVC整合Hibernate实现增删改查之按条件查询的更多相关文章
- JavaWeb系统(增删改查、多条件查询功能)
该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...
- PHP-----练习-------租房子-----增删改查,多条件查询
练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- SpringMVC之简单的增删改查示例(SSM整合)
本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...
- ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查
三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...
- SpringMVC,MyBatis商品的增删改查
一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...
- 基于SpringMVC的文件(增删改查)上传、下载、更新、删除
一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...
- EasyUI + Spring MVC + hibernate实现增删改查导入导出
(这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...
- SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)
前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...
随机推荐
- .NET 农码一生
农码一生博文索引 http://www.cnblogs.com/zhaopei/p/Indexes.html 那些年搞不懂的术语.概念:协变.逆变.不变体 http://www.cnblogs.com ...
- 最详细易懂的CRC-16校验原理(附源程序)
from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html 最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码( ...
- HDU5942 : Just a Math Problem
\[\begin{eqnarray*}ans&=&\sum_{i=1}^ng(i)\\&=&\sum_{i=1}^n\sum_{d|i}\mu^2(d)\\&= ...
- Python for Informatics 第11章 正则表达式四(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.3 组合查询和抽取 如果我 ...
- Sublime Text 2配置文件详解
Sublime Text 2是那种让人会一眼就爱上的编辑器,不仅GUI让人眼前一亮,功能更是没的说,拓展性目前来说也完全够用了,网上介绍软件的文章和推荐插件的文章也不少,而且很不错,大家可以去找找自己 ...
- java中接口的定义和接口的实现
1.接口的定义 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interfa ...
- Java虚拟机各内存区域的位置及功能的介绍
Java虚拟机运行时数据区: 相关区域介绍: 程序计数器: 功能:当前线程所执行字节码的行号指示器.若是Java方法记录指令地址,若为Native方法,则不记录 隔离性:线程隔离 Error:无 Ja ...
- scala shuffle
val arr = (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 val a_shuffle ...
- centos建立回收站
linux下的回收站在每一个当前用户目录./local/share/Trash中. 也可以给linux添加一个回收站. mkdir /tmp/trash_tmp 建立一个回收站目录 vi /bin/t ...
- ES6 ( 三 ) 字符串扩展
一.字符Unicode表示方法 ES6中可以使用以下6种方法表示字符 '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // tru ...