Hibernate--使用离线查询DetachedCriteria完成对列表的筛选

User表:

在这里插入图片描述

User类:
package pers.zhang.domain;

public class User {
	
	private Long user_id;
	private String user_code;
	private String user_name;
	private String user_password;
	private String user_state;
	public Long getUser_id() {
		return user_id;
	}
	public void setUser_id(Long user_id) {
		this.user_id = user_id;
	}
	public String getUser_code() {
		return user_code;
	}
	public void setUser_code(String user_code) {
		this.user_code = user_code;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	public String getUser_password() {
		return user_password;
	}
	public void setUser_password(String user_password) {
		this.user_password = user_password;
	}
	public String getUser_state() {
		return user_state;
	}
	public void setUser_state(String user_state) {
		this.user_state = user_state;
	}
}
ORM元数据:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="pers.zhang.domain" >
	<class name="User" table="sys_user" >
		<id name="user_id"  >
			<generator class="identity"></generator>
		</id>
		<property name="user_code" column="user_code" ></property>
		<property name="user_name" column="user_name" ></property>
		<property name="user_password" column="user_password" ></property>
		<property name="user_state" column="user_state" ></property>
	</class>
</hibernate-mapping>
控制层:
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		//获得查询参数
		String userIdStr = request.getParameter("userId");
		String userName = request.getParameter("userName");
		//获得离线查询对象
		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);
		//拼装查询条件
		if(userIdStr != null && !"".equals(userIdStr)) {
			Long userId = (long) Integer.parseInt(userIdStr);
			detachedCriteria.add(Restrictions.eq("user_id", userId));
		}
		if(userName != null && !"".equals(userName)) {
			detachedCriteria.add(Restrictions.like("user_name", userName, MatchMode.ANYWHERE));
		}
		
		//作为参数传递给service层
		UserService userService = new UserService();
		List<User> list = userService.findUserByCondition(detachedCriteria);
		
		request.setAttribute("userList", list);
		request.getRequestDispatcher("list2.jsp").forward(request, response);
	}
Service层:
	public List<User> findUserByCondition(DetachedCriteria detachedCriteria) {
		//传递给Dao层
		UserDao userDao = new UserDao();
		return userDao.findUserByCondition(detachedCriteria);
	}
Dao层:
	public List<User> findUserByCondition(DetachedCriteria detachedCriteria) {
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		
		//关联session
		Criteria criteria = detachedCriteria.getExecutableCriteria(session);
		//查询
		List<User> list = criteria.list();
		return list;
		
	}
前端页面:

忘记写查询数据回显了…

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
		<script type="text/javascript" src="js/bootstrap.min.js" ></script>
		<link rel="stylesheet" href="css/bootstrap.css" />
	</head>
	<body>
		<form class="form-inline" role="form" method="post" action="${pageContext.request.contextPath }/findUserByCondition">
		  <div class="form-group">
		    <input type="text" class="form-control" id="exampleInputEmail2" placeholder="用户ID" name="userId">
		  </div>
		  <div class="form-group">
		    <input type="text" class="form-control" id="exampleInputPassword2" placeholder="用户名" name="userName">
		  </div>
		  <button type="submit" class="btn btn-default">筛选</button>
		</form>
	
		<div style="text-align: center; width: 600px;">
		<table class="table table-hover">
		  <tr><td>编号</td><td>用戶ID</td><td>用户名</td><td>昵称</td><td>密码</td></tr>
		  <!-- 显示数据 -->
		  <c:forEach items="${userList }" var="list">
		  	<tr><td>${list.user_id }</td><td>${list.user_code }</td><td>${list.user_name }</td><td>${list.user_password }</td><td>${list.user_state }</td></tr>
		  </c:forEach>
		</table>
	</div>


	</body>
</html>
测试:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值