Skip to content

Commit

Permalink
1.6.1 修复:Timestamp类型默认值问题
Browse files Browse the repository at this point in the history
增加:@OnUpdateCurrentTimestamp,是否自动更新时间戳-Date、Timestamp类型的字段有效
增加:PageInfo增加needTotalCount属性,用来是否查询总条数
  • Loading branch information
785160953 committed Feb 15, 2019
1 parent 6755369 commit 23e0116
Show file tree
Hide file tree
Showing 9 changed files with 148 additions and 72 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<dependency>
<groupId>xin.xihc</groupId>
<artifactId>spring-jba</artifactId>
<version>1.5.9</version>
<version>1.6.1</version>
</dependency>
```

Expand Down Expand Up @@ -42,7 +42,7 @@ https://gitee.com/leo_xi/SpringJbaDemo
3. order 索引内列顺序,默认0
4. remark (1.5.8+新增)索引的备注
```
5. `@OnUpdateCurrentTimestamp` (1.6.1+新增)该注解是声明表字段是否自动更新时间戳(Date/Timestamp)(支持继承关系,可以使用父类的属性)
----------
# 类型转换对应表
| `Java`类型(建议使用包装类) | `Mysql`类型 |
Expand Down Expand Up @@ -96,6 +96,9 @@ void doInit(JbaTemplate jbaTemplate);
@Autowired
private JbaTemplate jbaTemplate;
```
## 分页对象PageInfo中增加`needTotalCount`是否需要查询总数量
即可使用JbaTemplate的方法。。具体方法解析如下:
表对象(需要获取表名)-`model`,参数对象-`params`
Expand Down Expand Up @@ -133,4 +136,4 @@ private JbaTemplate jbaTemplate;
QQ群号:340654726
<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=161c33ee05b20185424556f09f488ddefb55ef0599c3695c3d59d64f876d4ccd"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="Spring-Jba交流群" title="Spring-Jba交流群"></a>
`更新时间:2019-02-03`
`更新时间:2019-02-15`
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>xin.xihc</groupId>
<artifactId>spring-jba</artifactId>
<version>1.6.0</version>
<version>1.6.1</version>
<name>spring-jba</name>
<description>java对象访问</description>
<url>https://gitee.com/leo_xi/spring-jba</url>
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/xin/xihc/jba/AnnotationScan.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import xin.xihc.jba.annotation.Column;
import xin.xihc.jba.annotation.Column.Policy;
import xin.xihc.jba.annotation.Index;
import xin.xihc.jba.annotation.OnUpdateCurrentTimestamp;
import xin.xihc.jba.annotation.Table;
import xin.xihc.jba.core.JbaTemplate;
import xin.xihc.jba.db.TableOperator;
Expand Down Expand Up @@ -116,6 +117,11 @@ public void start() {
colP.length(32);
}
}
// 是否自动更新时间戳
OnUpdateCurrentTimestamp onUpdateCurrentTimestamp = field.getAnnotation(OnUpdateCurrentTimestamp.class);
if (null != onUpdateCurrentTimestamp){
colP.setOnUpdateCurrentTimestamp(true);
}
// 记录索引
Index index = field.getAnnotation(Index.class);
if (null != index) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/xin/xihc/jba/annotation/EnableJBA.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Target(ElementType.FIELD)
@Component
@Import({SpringContextUtil.class, JbaTemplate.class, AnnotationScan.class})
public @interface EnableJBA {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
*
*/
package xin.xihc.jba.annotation;

import java.lang.annotation.*;

/**
* 是否自动更新时间戳
*
* @author Leo.Xi
* @date 2018年2月15日
* @since
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited
public @interface OnUpdateCurrentTimestamp {

}
18 changes: 10 additions & 8 deletions src/main/java/xin/xihc/jba/core/JbaTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ public <T> List<T> queryModelList(Object model, Class<T> clazz, PageInfo pageInf
}

sql_final = getNamedPageSql(sql, model, pageInfo);
if (null != pageInfo && pageInfo.getTotalCount() < 1) {
if (null != pageInfo && pageInfo.getNeedTotalCount() && pageInfo.getTotalCount() < 1) {
return new ArrayList<>(0);
}
long start = System.currentTimeMillis();// 记录开始时间戳
Expand All @@ -412,7 +412,7 @@ public <T> List<T> queryModelList(Object model, Class<T> clazz, PageInfo pageInf
public <T> List<T> queryMixModelList(final String sql, Object params, Class<T> clazz, PageInfo pageInfo) {
List<T> ret;
String sql_final = getNamedPageSql(sql, params, pageInfo);
if (null != pageInfo && pageInfo.getTotalCount() < 1) {
if (null != pageInfo && pageInfo.getNeedTotalCount() && pageInfo.getTotalCount() < 1) {
return new ArrayList<>(0);
}
long start = System.currentTimeMillis();// 记录开始时间戳
Expand Down Expand Up @@ -470,14 +470,16 @@ private void infoSql(final String sql, Object params, final long start) {
*/
private <T> String getNamedPageSql(final String sql, T params, PageInfo pageInfo) {
if (null != pageInfo) {
// 先查询总数
Integer totalCount = queryCount(sql, params);
if (totalCount < 1) { // 总数=0
if (pageInfo.getNeedTotalCount()) {
// 先查询总数
Integer totalCount = queryCount(sql, params);
if (totalCount < 1) { // 总数=0
pageInfo.setTotalCount(totalCount);
return sql;
}
// 计算总页数
pageInfo.setTotalCount(totalCount);
return sql;
}
// 计算总页数
pageInfo.setTotalCount(totalCount);
return SQLUtils.getPageSql(sql, pageInfo);
}
return sql;
Expand Down
132 changes: 77 additions & 55 deletions src/main/java/xin/xihc/jba/core/PageInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,70 +9,92 @@
*/
public class PageInfo {

private Integer pageNo = 1; // 当前页数
private Integer pageSize = 10;// 每页数量
private Integer totalCount = 0;// 总数量
private Integer totalPage = 0;// 总页数
private Integer pageNo = 1; // 当前页数
private Integer pageSize = 10;// 每页数量
private Integer totalCount = 0;// 总数量
private Integer totalPage = 0;// 总页数
private Boolean needTotalCount = true;// 是否需要查询总数量

/**
*
*/
public PageInfo() {
super();
}
/**
*
*/
public PageInfo() {
super();
}

/**
* 构造方法
*
* @param pageNo 页码
* @param pageSize 每页大小
*/
public PageInfo(Integer pageNo, Integer pageSize) {
super();
setPageNo(pageNo);
setPageSize(pageSize);
}
/**
* 构造方法
*
* @param pageNo 页码
* @param pageSize 每页大小
*/
public PageInfo(Integer pageNo, Integer pageSize) {
super();
setPageNo(pageNo);
setPageSize(pageSize);
}

public Integer getTotalCount() {
return totalCount;
}
/**
* 构造方法
*
* @param pageNo 页码
* @param pageSize 每页大小
* @param needTotalCount 是否需要查询总数量
*/
public PageInfo(Integer pageNo, Integer pageSize, boolean needTotalCount) {
super();
setPageNo(pageNo);
setPageSize(pageSize);
setNeedTotalCount(needTotalCount);
}

public void setTotalCount(Integer totalCount) {
if (this.pageSize < 1) {
this.pageSize = 10;
}
totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
this.totalCount = totalCount;
}
public Integer getTotalCount() {
return totalCount;
}

public Integer getTotalPage() {
return totalPage;
}
public void setTotalCount(Integer totalCount) {
if (this.pageSize < 1) {
this.pageSize = 10;
}
totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
this.totalCount = totalCount;
}

public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getTotalPage() {
return totalPage;
}

public Integer getPageNo() {
return pageNo;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}

public void setPageNo(Integer pageNo) {
if (null == pageNo || pageNo < 1) {
return;
}
this.pageNo = pageNo;
}
public Integer getPageNo() {
return pageNo;
}

public Integer getPageSize() {
return pageSize;
}
public void setPageNo(Integer pageNo) {
if (null == pageNo || pageNo < 1) {
return;
}
this.pageNo = pageNo;
}

public void setPageSize(Integer pageSize) {
if (null == pageSize || pageSize < 1) {
return;
}
this.pageSize = pageSize;
}
public Integer getPageSize() {
return pageSize;
}

public void setPageSize(Integer pageSize) {
if (null == pageSize || pageSize < 1) {
return;
}
this.pageSize = pageSize;
}

public Boolean getNeedTotalCount() {
return needTotalCount;
}

public void setNeedTotalCount(Boolean needTotalCount) {
this.needTotalCount = needTotalCount;
}
}
18 changes: 15 additions & 3 deletions src/main/java/xin/xihc/jba/db/DB_MySql_Opera.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import xin.xihc.utils.common.CommonUtil;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.*;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -146,7 +147,7 @@ private List<ColumnProperties> convert2ColumnProperties(List<MysqlColumnInfo> db
prop.notNull("NO".equals(item.getIs_nullable()));
if ("PRI".equals(item.getColumn_key())) { // 是主键
prop.primary(true);
if ("auto_increment".equals(item.getExtra())) { // 自增主键
if ("auto_increment".equalsIgnoreCase(item.getExtra())) { // 自增主键
prop.policy(Column.Policy.AUTO);
prop.length(item.getNumeric_precision());
prop.precision(item.getNumeric_scale());
Expand All @@ -165,6 +166,10 @@ private List<ColumnProperties> convert2ColumnProperties(List<MysqlColumnInfo> db
prop.length(item.getNumeric_precision());
prop.precision(item.getNumeric_scale());
}
// 是否自动更新时间戳
if ("on update CURRENT_TIMESTAMP".equalsIgnoreCase(item.getExtra())) {
prop.setOnUpdateCurrentTimestamp(prop.type().equals(Timestamp.class));
}
result.add(prop);
}
return result;
Expand Down Expand Up @@ -293,15 +298,22 @@ private String columnPro(ColumnProperties col, String after, boolean isCreate, C
if (CommonUtil.isNotNullEmpty(col.defaultValue())) {
if (Number.class.isAssignableFrom(col.type())) {
temp.append(" DEFAULT " + col.defaultValue());
} else if (col.type().equals(Date.class) && "CURRENT_TIMESTAMP".equalsIgnoreCase(col.defaultValue())) {
temp.append(" DEFAULT " + col.defaultValue());
} else if (col.type().equals(Date.class) || col.type().equals(Timestamp.class)) {
if ("CURRENT_TIMESTAMP".equalsIgnoreCase(col.defaultValue())) {
temp.append(" DEFAULT " + col.defaultValue());
}
} else {
temp.append(" DEFAULT '" + col.defaultValue() + "'");
}
} else if (!col.notNull()) {
temp.append(" DEFAULT null ");
}

// 是否自动更新时间戳
if (col.type().equals(Timestamp.class) && col.getOnUpdateCurrentTimestamp()) {
temp.append(" ON UPDATE CURRENT_TIMESTAMP ");
}

// 备注
if (CommonUtil.isNotNullEmpty(col.remark())) {
temp.append(" COMMENT '" + col.remark() + "'");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class ColumnProperties {
private Integer length = 0;// 列长度
private String remark;//列备注
private Integer precision = 4;//列精度
private Boolean onUpdateCurrentTimestamp = false;// 是否自动更新时间戳

/**
* 表的列的字符编码
Expand Down Expand Up @@ -149,6 +150,14 @@ public void charset(Column.TableCharset charset) {
this.charset = charset;
}

public Boolean getOnUpdateCurrentTimestamp() {
return onUpdateCurrentTimestamp;
}

public void setOnUpdateCurrentTimestamp(Boolean onUpdateCurrentTimestamp) {
this.onUpdateCurrentTimestamp = onUpdateCurrentTimestamp;
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand All @@ -161,7 +170,8 @@ public boolean equals(Object o) {
boolean equals = Objects.equals(defaultValue, that.defaultValue) && Objects
.equals(notNull, that.notNull) && Objects.equals(primary, that.primary) && Objects
.equals(length, that.length) && Objects.equals(remark, that.remark) && Objects
.equals(precision, that.precision) && Objects.equals(charset, that.charset);
.equals(precision, that.precision) && Objects.equals(charset, that.charset) && Objects
.equals(onUpdateCurrentTimestamp,that.onUpdateCurrentTimestamp);
return equals;
}
}

0 comments on commit 23e0116

Please sign in to comment.