@Entity
public class Employee extends XXXObject {
//...
/**
* 最近復職日期
*/
private Date lastReinstatementDate;
/**
* 核薪資料者
*/
private Set<BaseCheckSalary> baseCheckSalary = new HashSet<BaseCheckSalary>();
@OneToMany(mappedBy = "employee", fetch = FetchType.LAZY)
@Cascade(value = { org.hibernate.annotations.CascadeType.ALL,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
public Set<BaseCheckSalary> getBaseCheckSalary() {
return baseCheckSalary;
}
public void setBaseCheckSalary(Set<BaseCheckSalary> baseCheckSalary) {
this.baseCheckSalary = baseCheckSalary;
}
//...
}
@Entity
public class BaseCheckSalary extends XXXObject {
//...
private Employee employee;
private Date startDate;
@ManyToOne(fetch = FetchType.LAZY)
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
//...
}
@Name("baseCheckSalaryQuery")
@Scope(ScopeType.CONVERSATION)
public class BaseCheckSalaryQuery extends EntityQuery<Employee> {
/**
*
*/
private static final long serialVersionUID = 1L;
//未核薪員工查詢語句
private static final String UNCHECKED_EMPLOYEE = "select e from Employee e where e not in " +
"(select b.employee from BaseCheckSalary b) or " +
"(e.lastReinstatementDate is not null and e.lastReinstatementDate > " +
"(select max(b.startDate) from BaseCheckSalary b where b.employee = e ))";
//已核薪員工查詢語句
private static final String CHECKED_EMPLOYEE = "select e from Employee e where e not in " +
"(select emp from Employee emp where emp not in (select b.employee from BaseCheckSalary b) or " +
"(e.lastReinstatementDate is not null and emp.lastReinstatementDate > " +
"(select max(b.startDate) from BaseCheckSalary b where b.employee = emp )))";
//所有員工查詢語句
private static final String ALL_EMPLOYEE = "from Employee e";
public BaseCheckSalaryQuery() {
super.setEjbql(UNCHECKED_EMPLOYEE);
super.setOrder("e.employeeNumber");
super.setMaxResults(20);
}
/**
* 查詢所有員工
*
* @return
*/
public List<Employee> queryAllEmployee() {
super.setEjbql(ALL_EMPLOYEE);
return super.getResultList();
}
/**
* 查詢已核薪員工
*
* @return
*/
public List<Employee> queryCheckedEmployee() {
super.setEjbql(CHECKED_EMPLOYEE);
return super.getResultList();
}
/**
* 查詢未核薪員工
*
* @return
*/
public List<Employee> queryUnCheckedEmployee() {
super.setEjbql(UNCHECKED_EMPLOYEE);
return super.getResultList();
}
}
@Name("baseCheckSalaryHome")
@Scope(ScopeType.CONVERSATION)
public class BaseCheckSalaryAction {
//...
private static final Integer MAXRESULTS = 15;// 分頁查詢每頁顯示行數
@RequestParameter
private Integer firstResult = 0;// 分頁查詢開始頁
@In(required = false, create = true)
@Out(required = false, scope = ScopeType.CONVERSATION)
private ControlBean controlBean;// 注入控制類
/**
* 根據核薪狀態查詢符合條件的員工列表
*/
@Factory("employeeList")
public void getEmployeeList() {
baseCheckSalaryQuery.setFirstResult(firstResult);
baseCheckSalaryQuery.setMaxResults(MAXRESULTS);
if (queryStatus.equals("false")) {
employeeList = baseCheckSalaryQuery.queryUnCheckedEmployee();
} else if (queryStatus.equals("true")) {
employeeList = baseCheckSalaryQuery.queryCheckedEmployee();
} else {
employeeList = baseCheckSalaryQuery.queryAllEmployee();
}
controlBean.setPreviousExists(baseCheckSalaryQuery.isPreviousExists());
controlBean.setNextExists(baseCheckSalaryQuery.isNextExists());
}
//...
}
<rich:dataTable
id="empList" value="#{employeeList}" var="bcsl" width="90%"
onRowMouseOver="this.style.backgroundColor='#666666'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
<a4j:support event="onRowClick"
action="#{baseCheckSalaryHome.getBaseCheckSalaryDetail}"
reRender="empInfo,rsb,otherItemtable">
</a4j:support>
<h:column>
<f:facet name="header">
<h:outputText value="員工工號" />
</f:facet>
<h:outputText value="#{bcsl.employeeNumber}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="員工姓名" />
</f:facet>
<h:outputText value="#{bcsl.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="核薪樣板" />
</f:facet>
<h:outputText
value="#{baseCheckSalaryHome.getSalaryModelName(bcsl)}" />
</h:column>
<f:facet name="footer">
<h:panelGrid columns="4" >
<f:subview id="s_firstPage_y"
rendered="#{controlBean.previousExists}">
<a4j:commandLink action="#{baseCheckSalaryHome.getEmployeeList}"
value="<<第一頁" rendered="#{controlBean.previousExists}"
reRender="empList">
<f:param name="firstResult" value="0" />
</a4j:commandLink>
</f:subview>
<f:subview id="s_firstPage_n"
rendered="#{!controlBean.previousExists}">
<h:outputText value="<<第一頁" />
</f:subview>
<f:subview id="s_previousPage_y"
rendered="#{controlBean.previousExists}">
<a4j:commandLink action="#{baseCheckSalaryHome.getEmployeeList}"
value="< 上一頁" rendered="#{controlBean.previousExists}"
reRender="empList">
<f:param name="firstResult"
value="#{baseCheckSalaryQuery.previousFirstResult}" />
</a4j:commandLink>
</f:subview>
<f:subview id="s_previousPage_n"
rendered="#{!controlBean.previousExists}">
<h:outputText value="< 上一頁" />
</f:subview>
<f:subview id="s_nextPage_y" rendered="#{controlBean.nextExists}">
<a4j:commandLink action="#{baseCheckSalaryHome.getEmployeeList}"
value="下一頁>" rendered="#{controlBean.nextExists}"
reRender="empList">
<f:param name="firstResult"
value="#{baseCheckSalaryQuery.nextFirstResult}" />
</a4j:commandLink>
</f:subview>
<f:subview id="s_nextPage_n"
rendered="#{!controlBean.nextExists}">
<h:outputText value="下一頁>" />
</f:subview>
<f:subview id="s_lastPage_y" rendered="#{controlBean.nextExists}">
<a4j:commandLink action="#{baseCheckSalaryHome.getEmployeeList}"
value="最后頁>>" rendered="#{controlBean.nextExists}"
reRender="empList">
<f:param name="firstResult"
value="#{baseCheckSalaryQuery.lastFirstResult}" />
</a4j:commandLink>
</f:subview>
<f:subview id="s_lastPage_n"
rendered="#{!controlBean.nextExists}">
<h:outputText value="最后頁>>" />
</f:subview>
</h:panelGrid>
</f:facet>
</rich:dataTable>
分享到:
相关推荐
项目主体结构是dao+db+filter+pojo+servlet, 使用技术Servlet转发,代码中有注释帮助学者理解,数据库为MySQL资源...实现的数据库内容分页,查询分页,对初学者难点是根据get请求的中的url地址进行查询后的分页效果。
可以很好的实现页面的模糊查询+分页,我们在前台实现简单的增删改查,很好的实现页面功能。
在本项目中,我们主要探讨的是如何利用Spring MVC和MyBatis两大流行框架构建一个具有分页查询功能的Web应用。Spring MVC作为控制层,负责处理HTTP请求和响应,而MyBatis则作为数据访问层,用于处理数据库交互。下面...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织应用程序结构和控制流程的方式。在高级查询的实现中,Struts2主要负责处理HTTP请求,将用户的查询参数从视图层(通常是HTML...
在JavaWeb开发中,"JavaWeb+JSP+Servlet+JDBC分页查询和查询后分页界面优化"是一个常见的需求,特别是在构建大型的、数据密集型的学生管理系统中。这个主题涵盖了许多关键知识点,让我们逐一深入探讨。 首先,...
在本文中,我们将深入探讨如何使用JSP、Servlet和MyBatis这三种技术来实现一个分页查询的功能。这是一个常见的需求,在许多Web应用程序中,为了提高用户体验,通常需要将大量数据分批次展示,而不是一次性加载所有...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
在"SSH+模糊查询+分页+增删改查"这个主题中,我们将深入探讨这些关键概念以及它们在实际应用中的结合。 首先,让我们来了解SSH框架的核心组件: 1. **Struts2**:这是一个基于MVC设计模式的开源框架,用于构建动态...
本文将深入探讨如何利用Ajax实现无刷新分页和模糊查询功能。 一、Ajax基础 Ajax的核心是JavaScript对象XMLHttpRequest,它允许JavaScript在后台与服务器进行通信。通过创建XMLHttpRequest实例,发送HTTP请求,并...
实现分页通常涉及以下几个步骤: 1. **计算总页数**:根据数据库中的记录总数和每页显示的记录数,计算出总页数。 2. **获取当前页数据**:通过SQL查询语句,结合当前页码和每页记录数,获取当前页的数据。 3. **...
以下是一个简单的示例,展示如何在Spring和Hibernate中实现组合查询和分页: ```java @Service public class UserService { @Autowired private SessionFactory sessionFactory; public Page<User> ...
"基于存储过程+分页控件+分页类的无敌分页模式"是一个高效的数据查询和展示策略,它结合了数据库优化、前端界面控制以及后端数据处理的最佳实践。下面将详细解析这一模式的关键知识点。 首先,**存储过程(Stored ...
这个项目以"SSM+分页展示查询项目"为标题,旨在通过集成这三个框架,实现一个能够进行分页查询的功能。在这个项目中,开发者运用了PageHelper插件来帮助处理数据库的分页查询,提高了代码的可维护性和效率。 1. **...
这个“完整thinkPHP增删改查+分页+模糊查询+Ajax登录+注册”项目涵盖了几个核心的Web开发知识点,下面将逐一详细解释。 1. **增删改查(CRUD)**:CRUD代表创建(Create)、读取(Read)、更新(Update)和删除...
php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax...