追求卓越一诺千金

蓝蓝设计,2011年成立,主创清华团队,专注软件和互联网ui设计开发。擅长企业信息化管理、监控、大数据软件UIUE咨询和设计开发服务。立足UI,好好学习,天天进步!


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

2019-9-29 释然 前端及开发文章及欣赏


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);
}
1
2
3
4
5
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>

测试:

蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计  cs界面设计  ipad界面设计  包装设计  图标定制  用户体验 、交互设计、 网站建设 平面设计服务
标签: Hibernate--使用离线查询DetachedCriteria完成对列表的筛选 « JS基础知识整理06-函数 | 聊聊那些拥有“边际效应”的产品»


订阅Rss