更多精彩文章欢迎关注公众号“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实现增删改查之按条件查询的更多相关文章

  1. JavaWeb系统(增删改查、多条件查询功能)

    该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...

  2. PHP-----练习-------租房子-----增删改查,多条件查询

    练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...

  3. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  4. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

  5. ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查

    三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...

  6. SpringMVC,MyBatis商品的增删改查

    一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...

  7. 基于SpringMVC的文件(增删改查)上传、下载、更新、删除

    一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...

  8. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  9. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

随机推荐

  1. 校际联合Contest

    每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...

  2. iOS 遍历AutoLayout约束

    //遍历footerview约束(一般高,宽) NSArray* constrains = self.footerView.constraints; for (NSLayoutConstraint* ...

  3. HDU-1171 Big Event in HDU

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  4. php 正则 常用基础

    正则表达式 用来描述一串字符串的字符串 定界符 除了字母数字反斜线之外的所有字符都可以 / / (强制使用) | | !! 原子 在自然界中的最小单位 叫做原子 正则中的原子:可以打印的字母,数字,符 ...

  5. dedecms二级导航标签调用使用的方法

    <ul class="nav nav-pills blue"> <!--一级栏目下面有二级栏目的 --> {dede:channelartlist type ...

  6. 推荐Python Web开发测试驱动方法

    http://www.cnblogs.com/dkblog/archive/2013/06/14/3135914.html推荐 本人买的时候,京东打8.5折,现在降价啦,本书涵盖啦Django.Sel ...

  7. easyUI 表格

    1.创建 <table id ="ID"></table> 2.属性 dategrid: columns 列的定义的数组 URl:访问远程数据的数组 [“t ...

  8. JSP 简介

      160901   1. 一句话介绍什么是JSP? 和java相关的技术,可以开发出动态的,高性能的Web应用程序,的一门开发语言   2. 优点即特点,那么jsp的优点有哪些呢? JSP实现的We ...

  9. Unity学习疑问记录之查找

    unity中提供了获取对象的五种方法: 通过对象名称(Find方法) 通过标签获取单个游戏对象(FindWithTag方法) 通过标签获取多个游戏对象(FindGameObjectsWithTags方 ...

  10. myBatis oracle 与mysql自增问题

    mysql <insert id="insert" parameterType="Person" useGeneratedKeys="true& ...