分页功能
之前写分页功能时,网上的很多都不完整,不容易看明白,解释不清楚。现在自己实现了之歌功能,便详细写写,供大家参考。
注解层
用于自动定位到数据库进行数据的查找。
<关联表>
package cn.itsource.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
/*
* @Target表示当前注解的适用目标
* ElementType.TYPE 表示适用于类和接口
* ElementType.FIELD 表示适用于字段(成员变量)
* ElementType.METHOD 表示适用于方法
*/
@Target(ElementType.TYPE)
/*
* @Retention表示当前注解对象的生命周期
* RetentionPolicy.SOURCE 生命周期最短,仅在源码中有效
* RetentionPolicy.CLASS 生命周期居中, 在源码和编译后的字节码中有效
* RetentionPolicy.RUNTIME 生命周期最长,保留到代码运行时
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
//关联表名称或视图名称
String value();
}
<关联列>
package cn.itsource.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
//domain实体类属性关联的表或视图的列名称
String value();
//SQL语句的比较运算符 < <= > >= = != like等,默认值是“=”
String operation() default "=";
}
以Job对象为例
package cn.itsource.domain;
import java.io.Serializable;
import java.util.Date;
import cn.itsource.annotation.Column;
import cn.itsource.annotation.Table;
@Table("v_job")//select * from xxxx where 1=1
public class Job implements Serializable{
private Long id;
//职位名称 and jobName like '%+字段值+%'
@Column(value="jobName",operation="like")
private String jobName;
//外键,关联t_address表的主键
private Long addrId;
//招聘人数
private Integer number;
//薪资待遇
private Integer salary;
//职位描述
private String intro;
//任职要求
private String requires;
//1表示全职 0表示兼职 and jobType = 字段值
@Column("jobType")
private Integer jobType;
//是否启用 1表示启用 0表示禁用
@Column("isEnabled")
private Integer isEnabled;
//发布时间
private Date publishTime;
//工作地名
private String addrName;
//添加一个职位详情静态页面路径字段[后台]
private String detailsPath;
//添加一个职位详情静态页面路径字段[前台]
private String detailsPath2;
//薪资范围搜索
@Column(value="salary",operation=">=")
private Integer salary1;
@Column(value="salary",operation="<=")
private Integer salary2;
public Integer getSalary1() {
return salary1;
}
public void setSalary1(Integer salary1) {
this.salary1 = salary1;
}
public Integer getSalary2() {
return salary2;
}public void setSalary2(Integer salary2) {
this.salary2 = salary2;
}
public Strin