Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
JeeSpringCloud
Commits
e9629e7a
Commit
e9629e7a
authored
Dec 13, 2018
by
Sun
Browse files
no commit message
parent
e4054436
Changes
411
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 411+
files are displayed.
Plain diff
Email patch
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/AbstractBaseEntity.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
java.util.Date
;
import
java.util.HashMap
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.jeespring.common.utils.IdGen
;
import
com.jeespring.modules.sys.entity.User
;
import
com.jeespring.modules.sys.utils.UserUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.hibernate.validator.constraints.Length
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
/**
* 数据Entity类
* @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
public
abstract
class
AbstractBaseEntity
<
T
>
extends
AbstractEntity
<
T
>
{
private
static
final
long
serialVersionUID
=
1L
;
protected
String
remarks
;
// 备注
protected
User
createBy
;
// 创建者
protected
Date
createDate
;
// 创建日期
protected
User
updateBy
;
// 更新者
protected
Date
updateDate
;
// 更新日期
protected
String
delFlag
;
// 删除标记(0:正常;1:删除;2:审核)
protected
HashMap
<
String
,
Object
>
extendMap
;
//HashMap对象的拓展属性
protected
JSONObject
jsonObject
;
//JSONObject对象的拓展属性
protected
Integer
totalCount
;
protected
String
totalDate
;
protected
String
totalType
;
public
void
setExtendMap
(
String
item
,
Object
object
)
{
if
(
extendMap
==
null
)
{
extendMap
=
new
HashMap
<
String
,
Object
>();
}
extendMap
.
put
(
item
,
object
);
}
public
HashMap
<
String
,
Object
>
getExtendMap
()
{
return
extendMap
;
}
public
JSONObject
setExtendObject
(
String
item
,
Object
object
){
if
(
jsonObject
==
null
)
{
jsonObject
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
this
));
}
jsonObject
.
put
(
item
,
object
);
return
jsonObject
;
}
public
AbstractBaseEntity
()
{
super
();
this
.
delFlag
=
DEL_FLAG_NORMAL
;
}
public
AbstractBaseEntity
(
String
id
)
{
super
(
id
);
}
/**
* 插入之前执行方法,需要手动调用
*/
@Override
public
void
preInsert
(){
// 不限制ID为UUID,调用setIsNewRecord()使用自定义ID
if
(!
this
.
isNewRecord
){
setId
(
IdGen
.
uuid
());
}
User
user
=
UserUtils
.
getUser
();
if
(
StringUtils
.
isNotBlank
(
user
.
getId
())){
this
.
updateBy
=
user
;
this
.
createBy
=
user
;
}
this
.
updateDate
=
new
Date
();
this
.
createDate
=
this
.
updateDate
;
}
/**
* 更新之前执行方法,需要手动调用
*/
@Override
public
void
preUpdate
(){
User
user
=
UserUtils
.
getUser
();
if
(
StringUtils
.
isNotBlank
(
user
.
getId
())){
this
.
updateBy
=
user
;
}
this
.
updateDate
=
new
Date
();
}
@Length
(
min
=
0
,
max
=
255
)
public
String
getRemarks
()
{
return
remarks
;
}
public
void
setRemarks
(
String
remarks
)
{
this
.
remarks
=
remarks
;
}
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
User
getCreateBy
()
{
return
createBy
;
}
public
void
setCreateBy
(
User
createBy
)
{
this
.
createBy
=
createBy
;
}
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
public
Date
getCreateDate
()
{
return
createDate
;
}
public
void
setCreateDate
(
Date
createDate
)
{
this
.
createDate
=
createDate
;
}
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
User
getUpdateBy
()
{
return
updateBy
;
}
public
void
setUpdateBy
(
User
updateBy
)
{
this
.
updateBy
=
updateBy
;
}
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
public
Date
getUpdateDate
()
{
return
updateDate
;
}
public
void
setUpdateDate
(
Date
updateDate
)
{
this
.
updateDate
=
updateDate
;
}
@JsonIgnore
@JSONField
(
serialize
=
false
)
@Length
(
min
=
1
,
max
=
1
)
public
String
getDelFlag
()
{
if
(
delFlag
==
null
)
{
delFlag
=
"0"
;
}
return
delFlag
;
}
public
void
setDelFlag
(
String
delFlag
)
{
this
.
delFlag
=
delFlag
;
}
public
Integer
getTotalCount
()
{
return
totalCount
;
}
public
void
setTotalCount
(
Integer
totalCount
)
{
this
.
totalCount
=
totalCount
;
}
public
String
getTotalDate
()
{
return
totalDate
;
}
public
void
setTotalDate
(
String
totalDate
)
{
this
.
totalDate
=
totalDate
;
}
public
String
getTotalType
()
{
return
totalType
;
}
public
void
setTotalType
(
String
totalType
)
{
this
.
totalType
=
totalType
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/AbstractEntity.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.google.common.collect.Maps
;
import
com.jeespring.common.config.Global
;
import
com.jeespring.common.utils.StringUtils
;
import
com.jeespring.modules.sys.entity.User
;
import
com.jeespring.modules.sys.utils.UserUtils
;
import
org.apache.commons.lang3.builder.ReflectionToStringBuilder
;
import
javax.xml.bind.annotation.XmlTransient
;
import
java.io.Serializable
;
import
java.util.Map
;
/**
* Entity支持类
*
* @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
//@SupTreeList
public
abstract
class
AbstractEntity
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 实体编号(唯一标识)
*/
protected
String
id
;
/**
* 当前用户
*/
protected
User
currentUser
;
/**
* 当前实体分页对象
*/
protected
Page
<
T
>
page
;
private
String
orderBy
=
""
;
// 标准查询有效, 实例: updatedate desc, name asc
private
String
groupBy
=
""
;
// 标准查询有效, 实例: updatedate desc, name asc
private
String
where
=
""
;
// 标准查询条件
protected
int
pageNo
=
1
;
// 当前页码
protected
int
pageSize
=
Integer
.
valueOf
(
Global
.
getConfig
(
"page.pageSize"
));
// 页面大小,设置为“-1”表示不进行分页(分页无效)
/**
* 自定义SQL(SQL标识,SQL内容)
*/
protected
Map
<
String
,
String
>
sqlMap
;
/**
* 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。
* 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。
*/
protected
boolean
isNewRecord
=
false
;
public
AbstractEntity
()
{
}
public
AbstractEntity
(
String
id
)
{
this
();
this
.
id
=
id
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
@JsonIgnore
@XmlTransient
@JSONField
(
serialize
=
false
)
public
User
getCurrentUser
()
{
if
(
currentUser
==
null
)
{
currentUser
=
UserUtils
.
getUser
();
}
return
currentUser
;
}
public
void
setCurrentUser
(
User
currentUser
)
{
this
.
currentUser
=
currentUser
;
}
@JsonIgnore
@XmlTransient
@JSONField
(
serialize
=
false
)
public
Page
<
T
>
getPage
()
{
if
(
page
==
null
)
{
page
=
new
Page
<
T
>();
}
return
page
;
}
public
Page
<
T
>
setPage
(
Page
<
T
>
page
)
{
this
.
page
=
page
;
return
page
;
}
@JsonIgnore
@XmlTransient
@JSONField
(
serialize
=
false
)
public
String
getWhere
()
{
return
where
;
}
public
void
setWhere
(
String
where
)
{
this
.
where
=
where
;
}
public
String
getOrderBy
()
{
return
orderBy
;
}
public
void
setOrderBy
(
String
orderBy
)
{
this
.
orderBy
=
orderBy
;
}
public
String
getGroupBy
()
{
return
groupBy
;
}
public
void
setGroupBy
(
String
groupBy
)
{
this
.
groupBy
=
groupBy
;
}
public
int
getPageNo
()
{
return
pageNo
;
}
public
void
setPageNo
(
int
pageNo
)
{
this
.
pageNo
=
pageNo
;
}
public
int
getPageSize
()
{
return
pageSize
;
}
public
void
setPageSize
(
int
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
@JsonIgnore
@XmlTransient
@JSONField
(
serialize
=
false
)
public
Map
<
String
,
String
>
getSqlMap
()
{
if
(
sqlMap
==
null
)
{
sqlMap
=
Maps
.
newHashMap
();
}
return
sqlMap
;
}
public
void
setSqlMap
(
Map
<
String
,
String
>
sqlMap
)
{
this
.
sqlMap
=
sqlMap
;
}
/**
* 插入之前执行方法,子类实现
*/
public
abstract
void
preInsert
();
/**
* 更新之前执行方法,子类实现
*/
public
abstract
void
preUpdate
();
/**
* 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。
* 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。
*
* @return
*/
public
boolean
getIsNewRecord
()
{
return
isNewRecord
||
StringUtils
.
isBlank
(
getId
());
}
/**
* 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。
* 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。
*/
public
void
setIsNewRecord
(
boolean
isNewRecord
)
{
this
.
isNewRecord
=
isNewRecord
;
}
/**
* 全局变量对象
*/
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
Global
getGlobal
()
{
return
new
Global
();
}
/**
* 获取数据库名称,该方法至关重要,在所有的mapper里面都是用
*/
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
String
getDbName
()
{
return
Global
.
getJdbcType
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
null
==
obj
)
{
return
false
;
}
if
(
this
==
obj
)
{
return
true
;
}
if
(!
getClass
().
equals
(
obj
.
getClass
()))
{
return
false
;
}
AbstractEntity
<?>
that
=
(
AbstractEntity
<?>)
obj
;
return
null
==
this
.
getId
()
?
false
:
this
.
getId
().
equals
(
that
.
getId
());
}
@Override
public
String
toString
()
{
return
ReflectionToStringBuilder
.
toString
(
this
);
}
/**
* 删除标记(0:正常;1:删除;2:审核;)
*/
public
static
final
String
DEL_FLAG_NORMAL
=
"0"
;
public
static
final
String
DEL_FLAG_DELETE
=
"1"
;
public
static
final
String
DEL_FLAG_AUDIT
=
"2"
;
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/ActEntity.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
java.io.Serializable
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.jeespring.modules.act.entity.Act
;
/**
* Activiti Entity类
* @author JeeSpring
* @version 2013-05-28
*/
public
abstract
class
ActEntity
<
T
>
extends
AbstractBaseEntity
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
protected
Act
act
;
// 流程任务对象
public
ActEntity
()
{
super
();
}
public
ActEntity
(
String
id
)
{
super
(
id
);
}
@JsonIgnore
public
Act
getAct
()
{
if
(
act
==
null
){
act
=
new
Act
();
}
return
act
;
}
public
void
setAct
(
Act
act
)
{
this
.
act
=
act
;
}
/**
* 获取流程实例ID
* @return
*/
public
String
getProcInsId
()
{
return
this
.
getAct
().
getProcInsId
();
}
/**
* 设置流程实例ID
* @param procInsId
*/
public
void
setProcInsId
(
String
procInsId
)
{
this
.
getAct
().
setProcInsId
(
procInsId
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/InterfaceBaseDao.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
/**
* DAO支持类实现
*
* @param <T>
* * * * @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
public
interface
InterfaceBaseDao
<
T
>
extends
InterfaceDao
{
/**
* 获取单条数据
*
* @param id
* @return
*/
T
get
(
String
id
);
/**
* 获取单条数据
*
* @param entity
* @return
*/
T
get
(
T
entity
);
/**
* 根据实体名称和字段名称和字段值获取唯一记录
*
* @param <T>
* @param entityClass
* @param propertyName
* @param value
* @return
*/
T
findUniqueByProperty
(
@Param
(
value
=
"propertyName"
)
String
propertyName
,
@Param
(
value
=
"value"
)
Object
value
);
/**
* 查询统计列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page<T>());
*
* @param entity
* @return
*/
List
<
T
>
total
(
T
entity
);
/**
* 查询数据列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page<T>());
*
* @param entity
* @return
*/
List
<
T
>
findList
(
T
entity
);
/**
* 查询所有数据列表
*
* @param entity
* @return
*/
List
<
T
>
findAllList
(
T
entity
);
/**
* 查询所有数据列表
*
* @return
* @see public List<T> findAllList(T entity)
*/
@Deprecated
List
<
T
>
findAllList
();
/**
* 插入数据
*
* @param entity
* @return
*/
int
insert
(
T
entity
);
/**
* 更新数据
*
* @param entity
* @return
*/
int
update
(
T
entity
);
/**
* 删除数据(一般为逻辑删除,更新del_flag字段为1)
*
* @param id
* @return
* @see public int delete(T entity)
*/
@Deprecated
int
delete
(
String
id
);
/**
* 删除数据(逻辑删除,更新del_flag字段为1,在表包含字段del_flag时,可以调用此方法,将数据隐藏)
* @param id
* @see public int delete(T entity)
* @return
*/
@Deprecated
int
deleteByLogic
(
String
id
);
/**
* 删除数据(一般为逻辑删除,更新del_flag字段为1)
*
* @param entity
* @return
*/
int
delete
(
T
entity
);
/**
* 删除数据(逻辑删除,更新del_flag字段为1,在表包含字段del_flag时,可以调用此方法,将数据隐藏)
* @param entity
* @return
*/
int
deleteByLogic
(
T
entity
);
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/InterfaceBaseService.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
com.jeespring.modules.server.entity.SysServer
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* DAO支持类实现
*
* @param <T>
* * * * @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
public
interface
InterfaceBaseService
<
T
>
{
/**
* 获取单条数据
*
* @param id
* @return
*/
T
get
(
String
id
);
/**
* 获取单条数据
*
* @param entity
* @return
*/
T
get
(
T
entity
);
T
getCache
(
String
id
);
List
<
T
>
totalCache
(
T
entity
);
/**
* 查询统计列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page<T>());
*
* @param entity
* @return
*/
List
<
T
>
total
(
T
entity
);
/**
* 查询数据列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page<T>());
*
* @param entity
* @return
*/
List
<
T
>
findList
(
T
entity
);
List
<
T
>
findAllList
(
T
entity
);
List
<
T
>
findListCache
(
T
entity
);
Page
<
T
>
findPage
(
Page
<
T
>
page
,
T
entity
);
Page
<
T
>
findPageCache
(
Page
<
T
>
page
,
T
entity
);
/**
* 插入数据
*
* @param entity
* @return
*/
void
save
(
T
entity
);
/**
* 删除数据(一般为逻辑删除,更新del_flag字段为1)
*
* @param entity
* @return
* @see public int delete(T entity)
* @Deprecated
*/
void
delete
(
T
entity
);
/**
* 删除数据(逻辑删除,更新del_flag字段为1,在表包含字段del_flag时,可以调用此方法,将数据隐藏)
* @param entity
* @see public int delete(T entity)
* @return
* @Deprecated
*/
void
deleteByLogic
(
T
entity
);
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/InterfaceDao.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
/**
* DAO支持类实现
* @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
public
interface
InterfaceDao
{
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/Page.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.regex.Pattern
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.jeespring.common.config.Global
;
import
org.apache.commons.lang3.StringUtils
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.jeespring.common.utils.CookieUtils
;
import
org.apache.commons.lang3.builder.ReflectionToStringBuilder
;
/**
* 分页类
* @author 黄炳桂 516821420@qq.com
* @version 2013-7-2
* @param <T>
*/
public
class
Page
<
T
>
implements
Serializable
{
protected
int
pageNo
=
1
;
// 当前页码
protected
int
pageSize
=
Integer
.
valueOf
(
Global
.
getConfig
(
"page.pageSize"
));
// 页面大小,设置为“-1”表示不进行分页(分页无效)
protected
long
count
;
// 总记录数,设置为“-1”表示不查询总数
protected
int
first
;
// 首页索引
protected
int
last
;
// 尾页索引
protected
int
prev
;
// 上一页索引
protected
int
next
;
// 下一页索引
private
boolean
firstPage
;
//是否是第一页
private
boolean
lastPage
;
//是否是最后一页
protected
int
length
=
8
;
// 显示页面长度
protected
int
slider
=
1
;
// 前后显示页面长度
private
List
<
T
>
list
=
new
ArrayList
<
T
>();
private
String
orderBy
=
""
;
// 标准查询有效, 实例: updatedate desc, name asc
protected
String
funcName
=
"page"
;
// 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。
protected
String
funcParam
=
""
;
// 函数的附加参数,第三个参数值。
private
String
message
=
""
;
// 设置提示消息,显示在“共n条”之后
public
Page
()
{
this
.
pageSize
=
-
1
;
}
/**
* 构造方法
* @param request 传递 repage 参数,来记住页码
* @param response 用于设置 Cookie,记住页码
*/
public
Page
(
HttpServletRequest
request
,
HttpServletResponse
response
){
this
(
request
,
response
,
-
2
);
}
public
Page
(
int
pageNo
,
int
pageSize
,
String
orderBy
){
this
(
pageNo
,
pageSize
,
0
);
this
.
orderBy
=
orderBy
;
}
/**
* 构造方法
* @param request 传递 repage 参数,来记住页码
* @param response 用于设置 Cookie,记住页码
* @param defaultPageSize 默认分页大小,如果传递 -1 则为不分页,返回所有数据
*/
public
Page
(
HttpServletRequest
request
,
HttpServletResponse
response
,
int
defaultPageSize
){
// 设置页码参数(传递repage参数,来记住页码)
String
no
=
request
.
getParameter
(
"pageNo"
);
if
(
StringUtils
.
isNumeric
(
no
)){
CookieUtils
.
setCookie
(
response
,
"pageNo"
,
no
);
this
.
setPageNo
(
Integer
.
parseInt
(
no
));
}
else
if
(
request
.
getParameter
(
"repage"
)!=
null
){
no
=
CookieUtils
.
getCookie
(
request
,
"pageNo"
);
if
(
StringUtils
.
isNumeric
(
no
)){
this
.
setPageNo
(
Integer
.
parseInt
(
no
));
}
}
// 设置页面大小参数(传递repage参数,来记住页码大小)
String
size
=
request
.
getParameter
(
"pageSize"
);
if
(
StringUtils
.
isNumeric
(
size
)){
CookieUtils
.
setCookie
(
response
,
"pageSize"
,
size
);
this
.
setPageSize
(
Integer
.
parseInt
(
size
));
}
else
if
(
request
.
getParameter
(
"repage"
)!=
null
){
no
=
CookieUtils
.
getCookie
(
request
,
"pageSize"
);
if
(
StringUtils
.
isNumeric
(
size
)){
this
.
setPageSize
(
Integer
.
parseInt
(
size
));
}
}
else
if
(
defaultPageSize
!=
-
2
){
this
.
pageSize
=
defaultPageSize
;
}
// 设置排序参数
String
orderBy
=
request
.
getParameter
(
"orderBy"
);
if
(
StringUtils
.
isNotBlank
(
orderBy
)){
this
.
setOrderBy
(
orderBy
);
}
}
/**
* 构造方法
* @param pageNo 当前页码
* @param pageSize 分页大小
*/
public
Page
(
int
pageNo
,
int
pageSize
)
{
this
(
pageNo
,
pageSize
,
0
);
}
/**
* 构造方法
* @param pageNo 当前页码
* @param pageSize 分页大小
* @param count 数据条数
*/
public
Page
(
int
pageNo
,
int
pageSize
,
long
count
)
{
this
(
pageNo
,
pageSize
,
count
,
new
ArrayList
<
T
>());
}
/**
* 构造方法
* @param pageNo 当前页码
* @param pageSize 分页大小
* @param count 数据条数
* @param list 本页数据对象列表
*/
public
Page
(
int
pageNo
,
int
pageSize
,
long
count
,
List
<
T
>
list
)
{
this
.
setCount
(
count
);
this
.
setPageNo
(
pageNo
);
this
.
pageSize
=
pageSize
;
this
.
list
=
list
;
}
/**
* 初始化参数
*/
public
void
initialize
(){
//1
this
.
first
=
1
;
this
.
last
=
(
int
)(
count
/
(
this
.
pageSize
<
1
?
20
:
this
.
pageSize
)
+
first
-
1
);
if
(
this
.
count
%
this
.
pageSize
!=
0
||
this
.
last
==
0
)
{
this
.
last
++;
}
if
(
this
.
last
<
this
.
first
)
{
this
.
last
=
this
.
first
;
}
if
(
this
.
pageNo
<=
1
)
{
this
.
pageNo
=
this
.
first
;
this
.
firstPage
=
true
;
}
if
(
this
.
pageNo
>=
this
.
last
)
{
this
.
pageNo
=
this
.
last
;
this
.
lastPage
=
true
;
}
if
(
this
.
pageNo
<
this
.
last
-
1
)
{
this
.
next
=
this
.
pageNo
+
1
;
}
else
{
this
.
next
=
this
.
last
;
}
if
(
this
.
pageNo
>
1
)
{
this
.
prev
=
this
.
pageNo
-
1
;
}
else
{
this
.
prev
=
this
.
first
;
}
//2
if
(
this
.
pageNo
<
this
.
first
)
{
// 如果当前页小于首页
this
.
pageNo
=
this
.
first
;
}
if
(
this
.
pageNo
>
this
.
last
)
{
// 如果当前页大于尾页
this
.
pageNo
=
this
.
last
;
}
}
@Override
public
String
toString
()
{
return
ReflectionToStringBuilder
.
toString
(
this
);
}
/**
* 默认输出当前分页标签
* <div class="page">${page}</div>
*/
public
String
toStringPage
()
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"<div class=\"fixed-table-pagination\" style=\"display: block;\">"
);
// sb.append("<div class=\"dataTables_info\">");
// sb.append("<li class=\"disabled controls\"><a href=\"javascript:\">当前 ");
// sb.append("<input type=\"text\" value=\""+pageNo+"\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
// sb.append(funcName+"(this.value,"+pageSize+",'"+funcParam+"');\" onclick=\"this.select();\"/> / ");
// sb.append("<input type=\"text\" value=\""+pageSize+"\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
// sb.append(funcName+"("+pageNo+",this.value,'"+funcParam+"');\" onclick=\"this.select();\"/> 条,");
// sb.append("共 " + count + " 条"+(message!=null?message:"")+"</a></li>\n");
// sb.append("</div>");
long
startIndex
=
(
pageNo
-
1
)*
pageSize
+
1
;
long
endIndex
=
pageNo
*
pageSize
<=
count
?
pageNo
*
pageSize:
count
;
sb
.
append
(
"<div class=\"pull-left pagination-detail\">"
);
sb
.
append
(
"<span class=\"pagination-info\">显示第 "
+
startIndex
+
" 到第 "
+
endIndex
+
" 条记录,总共 "
+
count
+
" 条记录</span>"
);
sb
.
append
(
"<span class=\"page-list\">每页显示 <span class=\"btn-group dropup\">"
);
sb
.
append
(
"<button type=\"button\" class=\"btn btn-sm btn-primary dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">"
);
sb
.
append
(
"<span class=\"page-size\">"
+
pageSize
+
"</span> <span class=\"caret\"></span>"
);
sb
.
append
(
"</button>"
);
sb
.
append
(
"<ul class=\"dropdown-menu\" role=\"menu\">"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
10
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",10,'"
+
funcParam
+
"');\">10</a></li>"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
25
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",25,'"
+
funcParam
+
"');\">25</a></li>"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
50
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",50,'"
+
funcParam
+
"');\">50</a></li>"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
100
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",100,'"
+
funcParam
+
"');\">100</a></li>"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
1000
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",1000,'"
+
funcParam
+
"');\">1000</a></li>"
);
sb
.
append
(
"<li class=\""
+
getSelected
(
pageSize
,
100000000
)+
"\"><a href=\"javascript:"
+
funcName
+
"("
+
pageNo
+
",100000000,'"
+
funcParam
+
"');\">全部</a></li>"
);
sb
.
append
(
"</ul>"
);
sb
.
append
(
"</span> 条记录</span>"
);
sb
.
append
(
"</div>"
);
// sb.append("<p>每页 <select onChange=\""+funcName+"("+pageNo+",this.value,'"+funcParam+"');\"" +"style=\"display:display !important;\" class=\"form-control m-b input-sm\">" +
// "<option value=\"10\" "+getSelected(pageSize,10)+ ">10</option>" +
// "<option value=\"25\" "+getSelected(pageSize,25)+ ">25</option>" +
// "<option value=\"50\" "+getSelected(pageSize,50)+ ">50</option>" +
// "<option value=\"100\" "+getSelected(pageSize,100)+ ">100</option>" +
// "</select> 条记录,显示 " +startIndex+ " 到 "+ endIndex +" 条,共 "+count+" 条</p>");
// sb.append("</div>");
// sb.append("</div>");
sb
.
append
(
"<div class=\"pull-right pagination-roll\">"
);
sb
.
append
(
"<ul class=\"pagination pagination-outline\">"
);
if
(
pageNo
==
first
)
{
// 如果是首页
sb
.
append
(
"<li class=\"paginate_button previous disabled\"><a href=\"javascript:\"><i class=\"fa fa-angle-double-left\"></i></a></li>\n"
);
sb
.
append
(
"<li class=\"paginate_button previous disabled\"><a href=\"javascript:\"><i class=\"fa fa-angle-left\"></i></a></li>\n"
);
}
else
{
sb
.
append
(
"<li class=\"paginate_button previous\"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
first
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\"><i class=\"fa fa-angle-double-left\"></i></a></li>\n"
);
sb
.
append
(
"<li class=\"paginate_button previous\"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
prev
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\"><i class=\"fa fa-angle-left\"></i></a></li>\n"
);
}
int
begin
=
pageNo
-
(
length
/
2
);
if
(
begin
<
first
)
{
begin
=
first
;
}
int
end
=
begin
+
length
-
1
;
if
(
end
>=
last
)
{
end
=
last
;
begin
=
end
-
length
+
1
;
if
(
begin
<
first
)
{
begin
=
first
;
}
}
if
(
begin
>
first
)
{
int
i
=
0
;
for
(
i
=
first
;
i
<
first
+
slider
&&
i
<
begin
;
i
++)
{
sb
.
append
(
"<li class=\"paginate_button \"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
if
(
i
<
begin
)
{
sb
.
append
(
"<li class=\"paginate_button disabled\"><a href=\"javascript:\">...</a></li>\n"
);
}
}
for
(
int
i
=
begin
;
i
<=
end
;
i
++)
{
if
(
i
==
pageNo
)
{
sb
.
append
(
"<li class=\"paginate_button active\"><a href=\"javascript:\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
else
{
sb
.
append
(
"<li class=\"paginate_button \"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
}
if
(
last
-
end
>
slider
)
{
sb
.
append
(
"<li class=\"paginate_button disabled\"><a href=\"javascript:\">...</a></li>\n"
);
end
=
last
-
slider
;
}
for
(
int
i
=
end
+
1
;
i
<=
last
;
i
++)
{
sb
.
append
(
"<li class=\"paginate_button \"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
if
(
pageNo
==
last
)
{
sb
.
append
(
"<li class=\"paginate_button next disabled\"><a href=\"javascript:\"><i class=\"fa fa-angle-right\"></i></a></li>\n"
);
sb
.
append
(
"<li class=\"paginate_button next disabled\"><a href=\"javascript:\"><i class=\"fa fa-angle-double-right\"></i></a></li>\n"
);
}
else
{
sb
.
append
(
"<li class=\"paginate_button next\"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
next
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
"<i class=\"fa fa-angle-right\"></i></a></li>\n"
);
sb
.
append
(
"<li class=\"paginate_button next\"><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
last
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
"<i class=\"fa fa-angle-double-right\"></i></a></li>\n"
);
}
sb
.
append
(
"</ul>"
);
sb
.
append
(
"</div>"
);
sb
.
append
(
"</div>"
);
// sb.insert(0,"<ul>\n").append("</ul>\n");
// sb.append("<div style=\"clear:both;\"></div>");
// sb.insert(0,"<div class=\"page\">\n").append("</div>\n");
return
sb
.
toString
();
}
/**
* 默认输出当前分页标签
* <div class="page">${page}</div>
*/
public
String
getPageHtml
()
{
StringBuilder
sb
=
new
StringBuilder
();
if
(
pageNo
==
first
)
{
// 如果是首页
sb
.
append
(
"<li class=\"disabled\"><a href=\"javascript:\">« 上一页</a></li>\n"
);
}
else
{
sb
.
append
(
"<li><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
prev
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">« 上一页</a></li>\n"
);
}
int
begin
=
pageNo
-
(
length
/
2
);
if
(
begin
<
first
)
{
begin
=
first
;
}
int
end
=
begin
+
length
-
1
;
if
(
end
>=
last
)
{
end
=
last
;
begin
=
end
-
length
+
1
;
if
(
begin
<
first
)
{
begin
=
first
;
}
}
if
(
begin
>
first
)
{
int
i
=
0
;
for
(
i
=
first
;
i
<
first
+
slider
&&
i
<
begin
;
i
++)
{
sb
.
append
(
"<li><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
if
(
i
<
begin
)
{
sb
.
append
(
"<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n"
);
}
}
for
(
int
i
=
begin
;
i
<=
end
;
i
++)
{
if
(
i
==
pageNo
)
{
sb
.
append
(
"<li class=\"active\"><a href=\"javascript:\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
else
{
sb
.
append
(
"<li><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
}
if
(
last
-
end
>
slider
)
{
sb
.
append
(
"<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n"
);
end
=
last
-
slider
;
}
for
(
int
i
=
end
+
1
;
i
<=
last
;
i
++)
{
sb
.
append
(
"<li><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
i
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
(
i
+
1
-
first
)
+
"</a></li>\n"
);
}
if
(
pageNo
==
last
)
{
sb
.
append
(
"<li class=\"disabled\"><a href=\"javascript:\">下一页 »</a></li>\n"
);
}
else
{
sb
.
append
(
"<li><a href=\"javascript:\" onclick=\""
+
funcName
+
"("
+
next
+
","
+
pageSize
+
",'"
+
funcParam
+
"');\">"
+
"下一页 »</a></li>\n"
);
}
sb
.
append
(
"<li class=\"disabled controls\"><a href=\"javascript:\">当前 "
);
sb
.
append
(
"<input type=\"text\" value=\""
+
pageNo
+
"\" onkeypress=\"var e=window.event||event;var c=e.keyCode||e.which;if(c==13)"
);
sb
.
append
(
funcName
+
"(this.value,"
+
pageSize
+
",'"
+
funcParam
+
"');\" onclick=\"this.select();\"/> / "
);
sb
.
append
(
"<input type=\"text\" value=\""
+
pageSize
+
"\" onkeypress=\"var e=window.event||event;var c=e.keyCode||e.which;if(c==13)"
);
sb
.
append
(
funcName
+
"("
+
pageNo
+
",this.value,'"
+
funcParam
+
"');\" onclick=\"this.select();\"/> 条,"
);
sb
.
append
(
"共 "
+
count
+
" 条"
+(
message
!=
null
?
message:
""
)+
"</a></li>\n"
);
sb
.
insert
(
0
,
"<ul>\n"
).
append
(
"</ul>\n"
);
sb
.
append
(
"<div style=\"clear:both;\"></div>"
);
// sb.insert(0,"<div class=\"page\">\n").append("</div>\n");
return
sb
.
toString
();
}
protected
String
getSelected
(
int
pageNo
,
int
selectedPageNo
){
if
(
pageNo
==
selectedPageNo
){
//return "selected";
return
"active"
;
}
else
{
return
""
;
}
}
/**
* 获取分页HTML代码
* @return
*/
//@JsonIgnore
public
String
getHtml
(){
return
toStringPage
();
}
// public static void main(String[] args) {
// Page<String> p = new Page<String>(3, 3);
// System.out.println(p);
// System.out.println("首页:"+p.getFirst());
// System.out.println("尾页:"+p.getLast());
// System.out.println("上页:"+p.getPrev());
// System.out.println("下页:"+p.getNext());
// }
/**
* 获取设置总数
* @return
*/
public
long
getCount
()
{
return
count
;
}
/**
* 设置数据总数
* @param count
*/
public
void
setCount
(
long
count
)
{
this
.
count
=
count
;
if
(
pageSize
>=
count
){
pageNo
=
1
;
}
}
/**
* 获取当前页码
* @return
*/
public
int
getPageNo
()
{
return
pageNo
;
}
/**
* 设置当前页码
* @param pageNo
*/
public
void
setPageNo
(
int
pageNo
)
{
this
.
pageNo
=
pageNo
;
}
/**
* 获取页面大小
* @return
*/
public
int
getPageSize
()
{
return
pageSize
;
}
/**
* 设置页面大小(最大500)
* @param pageSize
*/
public
void
setPageSize
(
int
pageSize
)
{
this
.
pageSize
=
pageSize
<=
0
?
10
:
pageSize
;
// > 500 ? 500 : pageSize;
}
/**
* 首页索引
* @return
*/
@JsonIgnore
public
int
getFirst
()
{
return
first
;
}
/**
* 尾页索引
* @return
*/
@JsonIgnore
public
int
getLast
()
{
return
last
;
}
/**
* 获取页面总数
* @return getLast();
*/
@JsonIgnore
public
int
getTotalPage
()
{
return
getLast
();
}
/**
* 是否为第一页
* @return
*/
@JsonIgnore
public
boolean
isFirstPage
()
{
return
firstPage
;
}
/**
* 是否为最后一页
* @return
*/
@JsonIgnore
public
boolean
isLastPage
()
{
return
lastPage
;
}
/**
* 上一页索引值
* @return
*/
@JsonIgnore
public
int
getPrev
()
{
if
(
isFirstPage
())
{
return
pageNo
;
}
else
{
return
pageNo
-
1
;
}
}
/**
* 下一页索引值
* @return
*/
@JsonIgnore
public
int
getNext
()
{
if
(
isLastPage
())
{
return
pageNo
;
}
else
{
return
pageNo
+
1
;
}
}
/**
* 获取本页数据对象列表
* @return List<T>
*/
public
List
<
T
>
getList
()
{
return
list
;
}
/**
* 设置本页数据对象列表
* @param list
*/
public
Page
<
T
>
setList
(
List
<
T
>
list
)
{
this
.
list
=
list
;
initialize
();
return
this
;
}
/**
* 获取查询排序字符串
* @return
*/
@JsonIgnore
public
String
getOrderBy
()
{
// SQL过滤,防止注入
String
reg
=
"(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|"
+
"(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b)"
;
Pattern
sqlPattern
=
Pattern
.
compile
(
reg
,
Pattern
.
CASE_INSENSITIVE
);
if
(
sqlPattern
.
matcher
(
orderBy
).
find
())
{
return
""
;
}
return
orderBy
;
}
/**
* 设置查询排序,标准查询有效, 实例: updatedate desc, name asc
*/
public
void
setOrderBy
(
String
orderBy
)
{
this
.
orderBy
=
orderBy
;
}
/**
* 获取点击页码调用的js函数名称
* function ${page.funcName}(pageNo){location="${ctx}/list-${category.id}${urlSuffix}?pageNo="+i;}
* @return
*/
@JsonIgnore
public
String
getFuncName
()
{
return
funcName
;
}
/**
* 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。
* @param funcName 默认为page
*/
public
void
setFuncName
(
String
funcName
)
{
this
.
funcName
=
funcName
;
}
/**
* 获取分页函数的附加参数
* @return
*/
@JsonIgnore
public
String
getFuncParam
()
{
return
funcParam
;
}
/**
* 设置分页函数的附加参数
* @return
*/
public
void
setFuncParam
(
String
funcParam
)
{
this
.
funcParam
=
funcParam
;
}
/**
* 设置提示消息,显示在“共n条”之后
* @param message
*/
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
/**
* 分页是否有效
* @return this.pageSize==-1
*/
@JsonIgnore
public
boolean
isDisabled
()
{
return
this
.
pageSize
==-
1
;
}
/**
* 是否进行总数统计
* @return this.count==-1
*/
@JsonIgnore
public
boolean
isNotCount
()
{
return
this
.
count
==-
1
;
}
/**
* 获取 Hibernate FirstResult
*/
public
int
getFirstResult
(){
int
firstResult
=
(
getPageNo
()
-
1
)
*
getPageSize
();
if
(
firstResult
>=
getCount
())
{
firstResult
=
0
;
}
return
firstResult
;
}
/**
* 获取 Hibernate MaxResults
*/
public
int
getMaxResults
(){
return
getPageSize
();
}
// /**
// * 获取 Spring data JPA 分页对象
// */
// public Pageable getSpringPage(){
// List<Order> orders = new ArrayList<Order>();
// if (orderBy!=null){
// for (String order : StringUtils.split(orderBy, ",")){
// String[] o = StringUtils.split(order, " ");
// if (o.length==1){
// orders.add(new Order(Direction.ASC, o[0]));
// }else if (o.length==2){
// if ("DESC".equals(o[1].toUpperCase())){
// orders.add(new Order(Direction.DESC, o[0]));
// }else{
// orders.add(new Order(Direction.ASC, o[0]));
// }
// }
// }
// }
// return new PageRequest(this.pageNo - 1, this.pageSize, new Sort(orders));
// }
//
// /**
// * 设置 Spring data JPA 分页对象,转换为本系统分页对象
// */
// public void setSpringPage(org.springframework.data.domain.Page<T> page){
// this.pageNo = page.getNumber();
// this.pageSize = page.getSize();
// this.count = page.getTotalElements();
// this.list = page.getContent();
// }
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/TreeDao.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
java.util.List
;
/**
* DAO支持类实现
* @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
* @param <T>
*/
public
interface
TreeDao
<
T
extends
TreeEntity
<
T
>>
extends
InterfaceBaseDao
<
T
>
{
/**
* 找到所有子节点
* @param entity
* @return
*/
List
<
T
>
findByParentIdsLike
(
T
entity
);
/**
* 更新所有父节点字段
* @param entity
* @return
*/
int
updateParentIds
(
T
entity
);
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/TreeEntity.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence
;
import
javax.validation.constraints.NotNull
;
import
org.hibernate.validator.constraints.Length
;
import
com.fasterxml.jackson.annotation.JsonBackReference
;
import
com.jeespring.common.utils.Reflections
;
import
com.jeespring.common.utils.StringUtils
;
/**
* 数据Entity类
* * * * @author 黄炳桂 516821420@qq.com
* @version 2014-05-16
*/
public
abstract
class
TreeEntity
<
T
>
extends
AbstractBaseEntity
<
T
>
{
private
static
final
long
serialVersionUID
=
1L
;
protected
T
parent
;
// 父级编号
protected
String
parentIds
;
// 所有父级编号
protected
String
name
;
// 机构名称
protected
Integer
sort
;
// 排序
public
TreeEntity
()
{
super
();
this
.
sort
=
30
;
}
public
TreeEntity
(
String
id
)
{
super
(
id
);
}
/**
* 父对象,只能通过子类实现,父类实现mybatis无法读取
* @return
*/
@JsonBackReference
@NotNull
public
abstract
T
getParent
();
/**
* 父对象,只能通过子类实现,父类实现mybatis无法读取
* @return
*/
public
abstract
void
setParent
(
T
parent
);
@Length
(
min
=
1
,
max
=
2000
)
public
String
getParentIds
()
{
return
parentIds
;
}
public
void
setParentIds
(
String
parentIds
)
{
this
.
parentIds
=
parentIds
;
}
@Length
(
min
=
1
,
max
=
100
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
void
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
}
public
String
getParentId
()
{
String
id
=
null
;
if
(
parent
!=
null
){
id
=
(
String
)
Reflections
.
getFieldValue
(
parent
,
"id"
);
}
return
StringUtils
.
isNotBlank
(
id
)
?
id
:
"0"
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/annotation/MyBatisDao.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.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
;
import
org.springframework.stereotype.Component
;
/**
* 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。
* @author 黄炳桂 516821420@qq.com
* @version 2013-8-28
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
TYPE
)
@Documented
@Component
public
@interface
MyBatisDao
{
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any
*/
String
value
()
default
""
;
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/DB2Dialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* DB2的分页数据库方言实现
*
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
DB2Dialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
private
static
String
getRowNumber
(
String
sql
)
{
StringBuilder
rownumber
=
new
StringBuilder
(
50
)
.
append
(
"rownumber() over("
);
int
orderByIndex
=
sql
.
toLowerCase
().
indexOf
(
"order by"
);
if
(
orderByIndex
>
0
&&
!
hasDistinct
(
sql
))
{
rownumber
.
append
(
sql
.
substring
(
orderByIndex
));
}
rownumber
.
append
(
") as rownumber_,"
);
return
rownumber
.
toString
();
}
private
static
boolean
hasDistinct
(
String
sql
)
{
return
sql
.
toLowerCase
().
contains
(
"select distinct"
);
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
Integer
.
toString
(
limit
));
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
String
limitPlaceholder
)
{
int
startOfSelect
=
sql
.
toLowerCase
().
indexOf
(
"select"
);
StringBuilder
pagingSelect
=
new
StringBuilder
(
sql
.
length
()
+
100
)
.
append
(
sql
.
substring
(
0
,
startOfSelect
))
//add the comment
.
append
(
"select * from ( select "
)
//nest the main query in an outer select
.
append
(
getRowNumber
(
sql
));
//add the rownnumber bit into the outer query select list
if
(
hasDistinct
(
sql
))
{
pagingSelect
.
append
(
" row_.* from ( "
)
//add another (inner) nested select
.
append
(
sql
.
substring
(
startOfSelect
))
//add the main query
.
append
(
" ) as row_"
);
//close off the inner nested select
}
else
{
pagingSelect
.
append
(
sql
.
substring
(
startOfSelect
+
6
));
//add the main query
}
pagingSelect
.
append
(
" ) as temp_ where rownumber_ "
);
//add the restriction to the outer select
if
(
offset
>
0
)
{
// int end = offset + limit;
String
endString
=
offsetPlaceholder
+
"+"
+
limitPlaceholder
;
pagingSelect
.
append
(
"between "
).
append
(
offsetPlaceholder
)
.
append
(
"+1 and "
).
append
(
endString
);
}
else
{
pagingSelect
.
append
(
"<= "
).
append
(
limitPlaceholder
);
}
return
pagingSelect
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/DerbyDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
DerbyDialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
false
;
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
// return getLimitString(sql,offset,Integer.toString(offset),limit,Integer.toString(limit));
throw
new
UnsupportedOperationException
(
"paged queries not supported"
);
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limit 分页每页显示纪录条数
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
int
limit
,
String
limitPlaceholder
)
{
throw
new
UnsupportedOperationException
(
"paged queries not supported"
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/Dialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
/**
* 类似hibernate的Dialect,但只精简出分页部分
*
* @author poplar.yfyang
* @version 1.0 2011-11-18 下午12:31
* @since JDK 1.5
*/
public
interface
Dialect
{
/**
* 数据库本身是否支持分页当前的分页查询方式
* 如果数据库不支持的话,则不进行数据库分页
*
* @return true:支持当前的分页查询方式
*/
boolean
supportsLimit
();
/**
* 将sql转换为分页SQL,分别调用分页sql
*
* @param sql SQL语句
* @param offset 开始条数
* @param limit 每页显示多少纪录条数
* @return 分页查询的sql
*/
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
);
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/H2Dialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* A dialect compatible with the H2 database.
*
* @author JeeSpring
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
H2Dialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limit 分页每页显示纪录条数
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
private
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
int
limit
,
String
limitPlaceholder
)
{
return
sql
+
((
offset
>
0
)
?
" limit "
+
limitPlaceholder
+
" offset "
+
offsetPlaceholder
:
" limit "
+
limitPlaceholder
);
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
limit
,
Integer
.
toString
(
limit
));
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/HSQLDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* Dialect for HSQLDB
*
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
HSQLDialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
Integer
.
toString
(
limit
));
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
String
limitPlaceholder
)
{
boolean
hasOffset
=
offset
>
0
;
return
new
StringBuffer
(
sql
.
length
()
+
10
)
.
append
(
sql
)
.
insert
(
sql
.
toLowerCase
().
indexOf
(
"select"
)
+
6
,
hasOffset
?
" limit "
+
offsetPlaceholder
+
" "
+
limitPlaceholder
:
" top "
+
limitPlaceholder
)
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/MySQLDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* Mysql方言的实现
*
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
MySQLDialect
implements
Dialect
{
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
Integer
.
toString
(
limit
));
}
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
String
limitPlaceholder
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
(
sql
);
stringBuilder
.
append
(
" limit "
);
if
(
offset
>
0
)
{
stringBuilder
.
append
(
offsetPlaceholder
).
append
(
","
).
append
(
limitPlaceholder
);
}
else
{
stringBuilder
.
append
(
limitPlaceholder
);
}
return
stringBuilder
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/OracleDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
/**
* Oracle的方言实现
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
OracleDialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
Integer
.
toString
(
limit
));
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
String
limitPlaceholder
)
{
sql
=
sql
.
trim
();
boolean
isForUpdate
=
false
;
if
(
sql
.
toLowerCase
().
endsWith
(
" for update"
))
{
sql
=
sql
.
substring
(
0
,
sql
.
length
()
-
11
);
isForUpdate
=
true
;
}
StringBuilder
pagingSelect
=
new
StringBuilder
(
sql
.
length
()
+
100
);
if
(
offset
>
0
)
{
pagingSelect
.
append
(
"select * from ( select row_.*, rownum rownum_ from ( "
);
}
else
{
pagingSelect
.
append
(
"select * from ( "
);
}
pagingSelect
.
append
(
sql
);
if
(
offset
>
0
)
{
String
endString
=
offsetPlaceholder
+
"+"
+
limitPlaceholder
;
pagingSelect
.
append
(
" ) row_ where rownum <= "
+
endString
+
") where rownum_ > "
).
append
(
offsetPlaceholder
);
}
else
{
pagingSelect
.
append
(
" ) where rownum <= "
+
limitPlaceholder
);
}
if
(
isForUpdate
)
{
pagingSelect
.
append
(
" for update"
);
}
return
pagingSelect
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/PostgreSQLDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* Postgre Sql的方言实现
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
PostgreSQLDialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
Integer
.
toString
(
offset
),
Integer
.
toString
(
limit
));
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param offsetPlaceholder 分页开始纪录条数-占位符号
* @param limitPlaceholder 分页纪录条数占位符号
* @return 包含占位符的分页sql
*/
public
String
getLimitString
(
String
sql
,
int
offset
,
String
offsetPlaceholder
,
String
limitPlaceholder
)
{
StringBuilder
pageSql
=
new
StringBuilder
().
append
(
sql
);
pageSql
=
offset
<=
0
?
pageSql
.
append
(
" limit "
).
append
(
limitPlaceholder
)
:
pageSql
.
append
(
" limit "
).
append
(
limitPlaceholder
).
append
(
" offset "
).
append
(
offsetPlaceholder
);
return
pageSql
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/SQLServer2005Dialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
org.apache.commons.lang3.StringUtils
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* Sql 2005的方言实现
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
SQLServer2005Dialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimitString
(
sql
,
offset
,
limit
,
Integer
.
toString
(
limit
));
}
/**
* Add a LIMIT clause to the given SQL SELECT
* <p/>
* The LIMIT SQL will look like:
* <p/>
* WITH query AS
* (SELECT TOP 100 percent ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __row_number__, * from table_name)
* SELECT *
* FROM query
* WHERE __row_number__ BETWEEN :offset and :lastRows
* ORDER BY __row_number__
*
* @param querySqlString The SQL statement to base the limit query off of.
* @param offset Offset of the first row to be returned by the query (zero-based)
* @param limit Maximum number of rows to be returned by the query
* @param limitPlaceholder limitPlaceholder
* @return A new SQL statement with the LIMIT clause applied.
*/
private
String
getLimitString
(
String
querySqlString
,
int
offset
,
int
limit
,
String
limitPlaceholder
)
{
StringBuilder
pagingBuilder
=
new
StringBuilder
();
String
orderby
=
getOrderByPart
(
querySqlString
);
String
distinctStr
=
""
;
String
loweredString
=
querySqlString
.
toLowerCase
();
String
sqlPartString
=
querySqlString
;
if
(
loweredString
.
trim
().
startsWith
(
"select"
))
{
int
index
=
6
;
if
(
loweredString
.
startsWith
(
"select distinct"
))
{
distinctStr
=
"DISTINCT "
;
index
=
15
;
}
sqlPartString
=
sqlPartString
.
substring
(
index
);
}
pagingBuilder
.
append
(
sqlPartString
);
// if no ORDER BY is specified use fake ORDER BY field to avoid errors
if
(
StringUtils
.
isEmpty
(
orderby
))
{
orderby
=
"ORDER BY CURRENT_TIMESTAMP"
;
}
StringBuilder
result
=
new
StringBuilder
();
result
.
append
(
"WITH query AS (SELECT "
)
.
append
(
distinctStr
)
.
append
(
"TOP 100 PERCENT "
)
.
append
(
" ROW_NUMBER() OVER ("
)
.
append
(
orderby
)
.
append
(
") as __row_number__, "
)
.
append
(
pagingBuilder
)
.
append
(
") SELECT * FROM query WHERE __row_number__ BETWEEN "
)
.
append
(
offset
+
1
).
append
(
" AND "
).
append
(
offset
+
limit
)
.
append
(
" ORDER BY __row_number__"
);
return
result
.
toString
();
}
static
String
getOrderByPart
(
String
sql
)
{
String
loweredString
=
sql
.
toLowerCase
();
int
orderByIndex
=
loweredString
.
indexOf
(
"order by"
);
if
(
orderByIndex
!=
-
1
)
{
// if we find a new "order by" then we need to ignore
// the previous one since it was probably used for a subquery
return
sql
.
substring
(
orderByIndex
);
}
else
{
return
""
;
}
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/persistence/dialect/SQLServerDialect.java
deleted
100644 → 0
View file @
e4054436
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.persistence.dialect
;
import
com.jeespring.common.persistence.dialect.Dialect
;
/**
* MSSQLServer 数据库实现分页方言
*
* @author poplar.yfyang
* @version 1.0 2010-10-10 下午12:31
* @since JDK 1.5
*/
public
class
SQLServerDialect
implements
Dialect
{
@Override
public
boolean
supportsLimit
()
{
return
true
;
}
static
int
getAfterSelectInsertPoint
(
String
sql
)
{
int
selectIndex
=
sql
.
toLowerCase
().
indexOf
(
"select"
);
final
int
selectDistinctIndex
=
sql
.
toLowerCase
().
indexOf
(
"select distinct"
);
return
selectIndex
+
(
selectDistinctIndex
==
selectIndex
?
15
:
6
);
}
@Override
public
String
getLimitString
(
String
sql
,
int
offset
,
int
limit
)
{
return
getLimit
(
sql
,
offset
,
limit
);
}
/**
* 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换.
* <pre>
* 如mysql
* dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
* select * from user limit :offset,:limit
* </pre>
*
* @param sql 实际SQL语句
* @param offset 分页开始纪录条数
* @param limit 分页每页显示纪录条数
* @return 包含占位符的分页sql
*/
public
String
getLimit
(
String
sql
,
int
offset
,
int
limit
)
{
if
(
offset
>
0
)
{
throw
new
UnsupportedOperationException
(
"sql server has no offset"
);
}
return
new
StringBuffer
(
sql
.
length
()
+
8
)
.
append
(
sql
)
.
insert
(
getAfterSelectInsertPoint
(
sql
),
" top "
+
limit
)
.
toString
();
}
}
Prev
1
…
5
6
7
8
9
10
11
12
13
…
21
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment