Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
Y
yzg-util
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YZG
yzg-util
Commits
d738a26b
Commit
d738a26b
authored
Mar 21, 2019
by
yanzg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
颜佐光工具类
parent
89a50d84
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
394 additions
and
512 deletions
+394
-512
InitDao.java
...l-base/src/main/java/com/yanzuoguang/util/vo/InitDao.java
+11
-0
BaseDao.java
...l-db/src/main/java/com/yanzuoguang/db/db/dao/BaseDao.java
+0
-9
DaoConst.java
...-db/src/main/java/com/yanzuoguang/db/db/dao/DaoConst.java
+5
-1
BaseDaoImpl.java
...main/java/com/yanzuoguang/db/db/dao/Impl/BaseDaoImpl.java
+377
-502
TableStruct.java
...main/java/com/yanzuoguang/db/db/dao/Impl/TableStruct.java
+1
-0
No files found.
yzg-util-base/src/main/java/com/yanzuoguang/util/vo/InitDao.java
0 → 100644
View file @
d738a26b
package
com
.
yanzuoguang
.
util
.
vo
;
/**
* 初始化Dao数据
*/
public
interface
InitDao
{
/**
* 初始化数据,去掉空值
*/
void
init
();
}
yzg-util-db/src/main/java/com/yanzuoguang/db/db/dao/BaseDao.java
View file @
d738a26b
...
...
@@ -49,13 +49,4 @@ public interface BaseDao {
* @return 需要返回的数据
*/
<
T
extends
Object
>
T
load
(
Object
model
,
Class
<
T
>
cls
);
/**
* 写入当前表的日志
*
* @param logType 日志类型,参照LogModel中的常量
* @param id 操作的当前表的主键编号
* @param data 需要处理的数据
*/
void
writeLog
(
int
logType
,
String
id
,
Object
data
);
}
yzg-util-db/src/main/java/com/yanzuoguang/db/db/dao/
Impl/
DaoConst.java
→
yzg-util-db/src/main/java/com/yanzuoguang/db/db/dao/DaoConst.java
View file @
d738a26b
package
com
.
yanzuoguang
.
db
.
db
.
dao
.
Impl
;
package
com
.
yanzuoguang
.
db
.
db
.
dao
;
/**
* created by yanzu on 2017/5/30.
*/
public
class
DaoConst
{
public
static
final
int
OperatorTypeCreate
=
0
;
public
static
final
int
OperatorTypeUpdate
=
1
;
public
static
final
int
OperatorTypeRemove
=
2
;
public
static
final
int
OperatorTypeLoad
=
3
;
/**
* 创建
...
...
yzg-util-db/src/main/java/com/yanzuoguang/db/db/dao/Impl/BaseDaoImpl.java
View file @
d738a26b
//package com.yanzuoguang.db.db.dao.Impl;
//
//import com.tourbida.sys.core.ILogin;
//import com.tourbida.sys.core.LoginCenter;
//import com.tourbida.sys.core.dao.log.Impl.LogFilterImpl;
//import com.tourbida.sys.core.dao.log.LogDao;
//import com.tourbida.sys.core.plan.PlanCenterFrom;
//import com.tourbida.sys.core.pojo.ICreateDeveiceVO;
//import com.tourbida.sys.core.pojo.ICreateProjectVO;
//import com.tourbida.sys.core.pojo.ICreateVO;
//import com.tourbida.sys.core.pojo.IInitVO;
//import com.tourbida.sys.core.pojo.log.LogVO;
//import com.tourbida.sys.core.util.ObjectHelper;
//import com.tourbida.sys.core.util.StringHelper;
//import com.tourbida.sys.exception.CodeException;
//import com.yanzuoguang.db.db.dao.BaseDao;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import javax.annotation.Resource;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 数据库操作的基本工具类
// * created by yanzu on 2017/5/30.
// */
//public abstract class BaseDaoImpl extends BaseDaoSql implements BaseDao {
//
// public static final int OperatorTypeCreate = 0;
// public static final int OperatorTypeUpdate = 1;
// public static final int OperatorTypeRemove = 2;
// public static final int OperatorTypeLoad = 3;
//
// /**
// * 数据库执行类
// */
// @Autowired
// protected PlanCenterFrom planCenterFrom;
//
// /**
// * 登录中心
// */
// @Autowired
// protected LoginCenter loginCenter;
//
// /**
// * 日志操作类
// */
// @Resource
// private LogDao logDao;
//
// @Autowired
// private LogFilterImpl logFilterImpl;
//
// /**
// * 写入到数据操作类
// *
// * @param logType 日志类型
// * @param id 操作编号
// * @param data 数据
// */
// public void writeLog(int logType, String id, Object data) {
// String tableName = this.Table.Table.getName();
// if (StringHelper.IsEmpty(id)) {
// return;
// }
// // 判断是否需要过滤
// if (logFilterImpl.isFilter(tableName, LogFilterImpl.TypeLog, logType, data)) {
// return;
// }
// ILogin login = loginCenter.getCurrent(false);
// LogVO log = new LogVO();
// log.LogTable = tableName;
// log.LogType = logType;
// log.LogKey = id;
// log.LogDate = StringHelper.GetNow();
// if (login != null) {
// log.RequestID = login.get("RequestID");
// log.SessionID = login.get("SessionID");
// }
// logDao.create(log);
// }
//
// private String getIdentity() {
// return StringHelper.GetString(this.db.queryCell("SELECT @@IDENTITY"));
// }
//
// /**
// * 获取主键名称
// *
// * @return 获取主键名称
// */
// protected String getKey() {
// if (this.Table == null) {
// throw new CodeException("类" + this.getClass().getName() + "未发现表结构");
// }
// return this.Table.Table.getKeyName();
// }
//
// /**
// * 获取主键值
// *
// * @param model 需要获取主键的实体
// * @return
// */
// protected String getKeyString(Object model) {
// String keyField = this.getKey();
// Object key = ObjectHelper.GetValue(model, keyField);
// if (StringHelper.IsEmpty(key)) {
// return "";
// }
// String keyString = key.toString();
// if ("0".equals(keyString)) {
// keyString = "";
// }
// return keyString;
// }
//
// /**
// * 设置主键值
// *
// * @param model 需要设置的实体
// * @param key 需要设置的主键值
// */
// protected void setKeyString(Object model, String key) {
// String keyField = this.getKey();
// ObjectHelper.Set(model, keyField, key);
// }
//
// /**
// * 根据输入参数来获取主键
// *
// * @param from 可以为实体或字符串。为实体时必须包含 主键 字段 或者 id 字段。
// * @return
// */
// protected String getInputKey(Object from) {
// String key;
// if (from != null && from.getClass() == String.class) {
// key = StringHelper.GetString(from);
// } else {
// key = this.getKeyString(from);
// }
// if (StringHelper.IsEmpty(key)) {
// key = StringHelper.GetString(ObjectHelper.GetValue(from, "id"));
// }
// if (StringHelper.IsEmpty(key)) {
// key = "";
// }
// return key;
// }
//
// /**
// * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。
// *
// * @param model 需要创建的数据
// * @return 创建的主键编号, 创建成功,返回主键,否则为空
// */
// public String create(Object model) {
// // 判断主键是字符串和需要生成主键
// boolean isKeyString = this.Table.Table.getKeyType() == String.class;
// String keyString = this.getKeyString(model);
//
// // 生成主键
// if (StringHelper.IsEmpty(keyString) && isKeyString) {
// keyString = StringHelper.GetNewID();
// this.setKeyString(model, keyString);
// }
//
// // 检测数据合法性
// this.check(model, OperatorTypeCreate, keyString);
// this.initData(model);
//
// // 执行创建的SQL语句
// int ret = updateSql(DaoConst.Create, model);
//
// // 判断是否需要获取自增编号(主键为整形)
// if (StringHelper.IsEmpty(keyString) && !isKeyString) {
// keyString = this.getIdentity();
// this.setKeyString(model, keyString);
// }
//
// // 写入日志,写入到 Log_TablePlanFrom表用作计划任务
// if (!StringHelper.IsEmpty(keyString)) {
// writeLog(LogVO.CREATE, keyString, model);
// if (ret > 0) {
// planCenterFrom.WriteFrom(this.Table.Table.getName(), keyString);
// }
// }
//
// // 最终处理
// this.created(model);
//
// // 返回执行结果
// String retVal = ret > 0 ? keyString : "";
// return retVal;
// }
//
//
// /**
// * 修改数据
// *
// * @param model 需要修改的数据
// * @return 删除的主键编号
// */
// public String update(Object model) {
// String keyString = this.getKeyString(model);
// if (StringHelper.IsEmpty(keyString)) {
// throw new CodeException("表" + this.Table.Table.getName() + "主键值为空时不能更新");
// }
// this.initData(model);
// this.check(model, OperatorTypeUpdate, keyString);
// writeLog(LogVO.UPDATE, keyString, model);
// SqlData sqlData = this.getSql(DaoConst.Update);
// int ret = updateSql(sqlData, model);
// String retVal = ret > 0 ? keyString : "";
// return retVal;
// }
//
// /**
// * 初始化数据
// *
// * @param model
// */
// protected void initData(Object model) {
// if (model instanceof IInitVO) {
// IInitVO to = (IInitVO) model;
// to.init();
// }
// }
//
// /**
// * 检测数据
// *
// * @param model 需要检测的数据
// * @param operatorType 操作方法类型
// * @param keyString 主键
// */
// protected void check(Object model, int operatorType, String keyString) {
// this.check(model, operatorType, keyString, false);
// }
//
// /**
// * 检测数据
// *
// * @param model 需要检测的数据
// * @param operatorType 操作方法类型
// * @param isCheckLogin 检测是否已经登录
// */
// protected void check(Object model, int operatorType, String keyString, boolean isCheckLogin) {
// if (operatorType == OperatorTypeCreate) {
// ILogin login = loginCenter.getCurrent(isCheckLogin);
// String userID = "";
// String deveiceID = "";
// String sessionID = "";
// String projectID = "";
// if (login != null) {
// userID = login.get("UserID");
// deveiceID = login.get("DeveiceID");
// sessionID = login.get("SessionID");
// projectID = login.get("ProjectID");
// }
//
// if (model instanceof ICreateVO) {
// ICreateVO to = (ICreateVO) model;
// to.setCreateUserID(userID);
// to.setCreateDate(StringHelper.GetNow());
// }
//
// if (model instanceof ICreateDeveiceVO) {
// ICreateDeveiceVO to = (ICreateDeveiceVO) model;
// to.setCreateDeveiceID(deveiceID);
// to.setCreateSessionID(sessionID);
// }
//
// if (model instanceof ICreateProjectVO) {
// ICreateProjectVO to = (ICreateProjectVO) model;
// to.setCreateProjectID(projectID);
// }
// }
// }
//
// /**
// * 保存数据
// *
// * @param model 需要保存的数据
// * @return 保存的主键编号
// */
// public String save(Object model) {
// String id = this.getKeyString(model);
// if (StringHelper.IsEmpty(id)) {
// return create(model);
// } else {
// return update(model);
// }
// }
//
// /**
// * 删除数据
// *
// * @param model 需要删除的数据
// * @return 删除的主键编号
// */
// public String remove(Object model) {
// Object from = model;
// // 获取来源主键
// String keyString = getInputKey(from);
//
// if (StringHelper.IsEmpty(keyString)) {
// MapRow to = new MapRow();
// ObjectHelper.WriteWithFromClass(to, model);
// from = this.queryFirst(MapRow.class, DaoConst.Load, from);
// if (from == null) {
// return "";
// }
// keyString = this.getKeyString(from);
// }
//
// // 当主键存在时,只通过主键加载
// if (!StringHelper.IsEmpty(keyString)) {
// from = new HashMap<String, Object>();
// this.setKeyString(from, keyString);
// }
//
// this.initData(from);
// this.check(from, OperatorTypeRemove, keyString);
//
// writeLog(LogVO.REMOVE, keyString, from);
// SqlData sqlData = this.getSql(DaoConst.Remove);
// int ret = updateSql(sqlData, from);
// String retVal = ret > 0 ? keyString : "";
// return retVal;
// }
//
// /**
// * 加载数据
// *
// * @param model 加载数据的请求参数
// * @param cls 需要加载的数据的类型
// * @param <T> 返回数据的类型
// * @return 需要返回的数据
// */
// public <T extends Object> T load(Object model, Class<T> cls) {
// // 获取来源主键
// Object from = model;
// String key = this.getInputKey(from);
//
// // 当主键存在时,只通过主键加载
// if (!StringHelper.IsEmpty(key)) {
// from = new HashMap<String, Object>();
// this.setKeyString(from, key);
// }
//
// // 通过传入数据进行加载
// T to = this.queryFirst(cls, DaoConst.Load, from);
// if (to == null) {
// return to;
// }
//
// // 判断来源主键是否存在,不存在则获取加载后的主键
// if (StringHelper.IsEmpty(key)) {
// key = this.getKeyString(to);
// }
//
// check(to, OperatorTypeLoad, key);
//
// // 写入到日志
// writeLog(LogVO.LOAD, key, to);
// return to;
// }
//
// /**
// * 添加统计数据
// *
// * @param cls 类型
// * @param model 实体
// * @param <T> 泛型类型
// * @return 增加统计的数据编号
// */
// public <T extends Object> String addGroup(Class<T> cls, T model) {
// // 判断前台实体
// if (model == null) {
// return "";
// }
//
// // 获取前台分组的MD5标识
// String md5 = this.getMd5(DaoConst.GroupQuery, model);
// if (!StringHelper.IsEmpty(this.Table.Table.getMD5KeyName())) {
// ObjectHelper.Set(model, this.Table.Table.getMD5KeyName(), md5);
// }
//
// // 获取标识的实体
// T from;
// if (this.Table.Table.getKeyType() == String.class) {
// from = model;
// this.setKeyString(model, md5);
// } else if (!StringHelper.IsEmpty(this.Table.Table.getMD5KeyName())) {
// Map<String, Object> map = new HashMap<String, Object>();
// map.put(this.Table.Table.getMD5KeyName(), md5);
// from = this.load(map, cls);
// } else {
// from = this.queryFirst(cls, DaoConst.GroupQuery, model);
// }
//
// // 当没有存在,则创建,否则 UpdateAdd
// if (from == null) {
// return this.create(model);
// } else {
// // 获取后台的编号,并写入到前台传入的数据上面
// String keyField = this.getKey();
// Object key = ObjectHelper.GetValue(from, keyField);
// ObjectHelper.Set(model, keyField, key);
//
// // 执行更新SQL语句
// SqlData sqlData = this.getSql(DaoConst.GroupAdd);
// int ret = this.updateSql(sqlData, model);
// if (ret < 1) {
// return this.create(model);
// } else {
// return key.toString();
// }
// }
// }
//
// /**
// * 根据SQL语句名称和实体获取MD5值
// *
// * @param model
// * @param sqlName
// * @param <T>
// * @return
// */
// protected <T extends Object> String getMd5(String sqlName, T model) {
// SqlData sql = this.getSql(sqlName);
// StringBuilder sb = new StringBuilder();
// for (SqlDataField field : sql.sqlDataFields) {
// if (sb.length() > 0) {
// sb.append(":");
// }
// Object item = ObjectHelper.GetValue(model, field.paraName);
// sb.append(item);
// }
// return StringHelper.GetMD5(sb.toString());
// }
//
// /**
// * 添加统计数据列表
// *
// * @param sqlName 需要执行的SQL语句名称
// * @param model 需要执行的SQL语句的实体
// * @return
// */
// protected int addGroupList(String sqlName, Object model) {
// this.updateSql(sqlName + "_GroupInit", model);
// return this.updateSql(sqlName + "_GroupAdd", model);
// }
//
// /***
// * 查询数据是否存在,当存在时修改,否则增加
// * @param cls 需要创建的实体的类型
// * @param sqlName 执行的SQL语句
// * @param request 前台参数,不能包含主键以及其他不需要修改的字段
// * @return 保存成功,返回保存的ID,保存失败,返回空值
// */
// public <T extends Object> String saveWith(Class<T> cls, String sqlName, Object request) {
// T from = this.queryFirst(cls, sqlName, request);
// if (from == null) {
// try {
// from = cls.newInstance();
// } catch (Exception ex) {
// throw new CodeException("创建对象" + cls.getName() + "出错", ex);
// }
// ObjectHelper.WriteWithFromClass(from, request);
// return this.create(from);
// } else {
// ObjectHelper.WriteWithFromClass(from, request);
// return this.update(from);
// }
// }
//
// /**
// * 创建成功后的处理
// *
// * @param model
// */
// protected void created(Object model) {
//
// }
//
// /**
// * 执行是否存在的SQL语句
// *
// * @param sqlName
// * @param model
// * @param msg
// */
// protected void checkExist(String sqlName, Object model, String msg) {
// MapRow row = this.queryFirst(sqlName, model);
// if (row != null) {
// throw new CodeException(msg);
// }
// }
//}
package
com
.
yanzuoguang
.
db
.
db
.
dao
.
Impl
;
import
com.yanzuoguang.db.db.dao.BaseDao
;
import
com.yanzuoguang.db.db.dao.DaoConst
;
import
com.yanzuoguang.util.exception.CodeException
;
import
com.yanzuoguang.util.helper.StringHelper
;
import
com.yanzuoguang.util.obj.ObjectHelper
;
import
com.yanzuoguang.util.vo.InitDao
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 数据库操作的基本工具类
* created by yanzu on 2017/5/30.
*/
public
abstract
class
BaseDaoImpl
extends
BaseDaoSql
implements
BaseDao
{
/**
* 获取当前主键
*
* @return
*/
private
String
getIdentity
()
{
return
StringHelper
.
toString
(
this
.
db
.
queryCell
(
"SELECT @@IDENTITY"
));
}
/**
* 获取主键名称
*
* @return 获取主键名称
*/
protected
String
getKey
()
{
if
(
this
.
Table
==
null
)
{
throw
new
CodeException
(
"类"
+
this
.
getClass
().
getName
()
+
"未发现表结构"
);
}
return
this
.
Table
.
Table
.
getKeyName
();
}
/**
* 获取主键值
*
* @param model 需要获取主键的实体
* @return
*/
protected
String
getKeyString
(
Object
model
)
{
String
keyField
=
this
.
getKey
();
Object
key
=
ObjectHelper
.
get
(
model
,
keyField
);
if
(
StringHelper
.
isEmpty
(
key
))
{
return
""
;
}
String
keyString
=
key
.
toString
();
if
(
"0"
.
equals
(
keyString
))
{
keyString
=
""
;
}
return
keyString
;
}
/**
* 设置主键值
*
* @param model 需要设置的实体
* @param key 需要设置的主键值
*/
protected
void
setKeyString
(
Object
model
,
String
key
)
{
String
keyField
=
this
.
getKey
();
ObjectHelper
.
set
(
model
,
keyField
,
key
);
}
/**
* 根据输入参数来获取主键
*
* @param from 可以为实体或字符串。为实体时必须包含 主键 字段 或者 id 字段。
* @return
*/
protected
String
getInputKey
(
Object
from
)
{
String
key
;
if
(
from
!=
null
&&
from
.
getClass
()
==
String
.
class
)
{
key
=
StringHelper
.
toString
(
from
);
}
else
{
key
=
this
.
getKeyString
(
from
);
}
if
(
StringHelper
.
isEmpty
(
key
))
{
key
=
StringHelper
.
toString
(
ObjectHelper
.
get
(
from
,
"id"
));
}
if
(
StringHelper
.
isEmpty
(
key
))
{
key
=
""
;
}
return
key
;
}
/**
* 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。
*
* @param model 需要创建的数据
* @return 创建的主键编号, 创建成功,返回主键,否则为空
*/
public
String
create
(
Object
model
)
{
// 判断主键是字符串和需要生成主键
boolean
isKeyString
=
this
.
Table
.
Table
.
getKeyType
()
==
String
.
class
;
String
keyString
=
this
.
getKeyString
(
model
);
// 生成主键
if
(
StringHelper
.
isEmpty
(
keyString
)
&&
isKeyString
)
{
keyString
=
StringHelper
.
getNewID
();
this
.
setKeyString
(
model
,
keyString
);
}
// 检测数据合法性
this
.
check
(
DaoConst
.
OperatorTypeCreate
,
keyString
,
model
);
// 执行创建的SQL语句
int
ret
=
updateSql
(
DaoConst
.
Create
,
model
);
// 判断是否需要获取自增编号(主键为整形)
if
(
StringHelper
.
isEmpty
(
keyString
)
&&
!
isKeyString
)
{
keyString
=
this
.
getIdentity
();
this
.
setKeyString
(
model
,
keyString
);
}
// 最终处理
this
.
created
(
model
);
// 返回执行结果
String
retVal
=
ret
>
0
?
keyString
:
""
;
return
retVal
;
}
/**
* 修改数据
*
* @param model 需要修改的数据
* @return 删除的主键编号
*/
public
String
update
(
Object
model
)
{
String
keyString
=
this
.
getKeyString
(
model
);
if
(
StringHelper
.
isEmpty
(
keyString
))
{
throw
new
CodeException
(
"表"
+
this
.
Table
.
Table
.
getName
()
+
"主键值为空时不能更新"
);
}
this
.
check
(
DaoConst
.
OperatorTypeUpdate
,
keyString
,
model
);
SqlData
sqlData
=
this
.
getSql
(
DaoConst
.
Update
);
int
ret
=
updateSql
(
sqlData
,
model
);
String
retVal
=
ret
>
0
?
keyString
:
""
;
return
retVal
;
}
/**
* 检测数据
*
* @param operatorType 操作方法类型
* @param keyString 主键
* @param model 需要检测的数据
*/
protected
void
check
(
int
operatorType
,
String
keyString
,
Object
model
)
{
if
(
model
instanceof
InitDao
)
{
InitDao
to
=
(
InitDao
)
model
;
to
.
init
();
}
}
/**
* 保存数据
*
* @param model 需要保存的数据
* @return 保存的主键编号
*/
public
String
save
(
Object
model
)
{
String
id
=
this
.
getKeyString
(
model
);
if
(
StringHelper
.
isEmpty
(
id
))
{
return
create
(
model
);
}
else
{
return
update
(
model
);
}
}
/**
* 删除数据
*
* @param model 需要删除的数据
* @return 删除的主键编号
*/
public
String
remove
(
Object
model
)
{
Object
from
=
model
;
// 获取来源主键
String
keyString
=
getInputKey
(
from
);
if
(
StringHelper
.
isEmpty
(
keyString
))
{
MapRow
to
=
new
MapRow
();
ObjectHelper
.
writeWithFrom
(
to
,
model
);
from
=
this
.
queryFirst
(
MapRow
.
class
,
DaoConst
.
Load
,
from
);
if
(
from
==
null
)
{
return
""
;
}
keyString
=
this
.
getKeyString
(
from
);
}
// 当主键存在时,只通过主键加载
if
(!
StringHelper
.
isEmpty
(
keyString
))
{
from
=
new
HashMap
<
String
,
Object
>();
this
.
setKeyString
(
from
,
keyString
);
}
this
.
check
(
DaoConst
.
OperatorTypeRemove
,
keyString
,
from
);
SqlData
sqlData
=
this
.
getSql
(
DaoConst
.
Remove
);
int
ret
=
updateSql
(
sqlData
,
from
);
String
retVal
=
ret
>
0
?
keyString
:
""
;
return
retVal
;
}
/**
* 加载数据
*
* @param model 加载数据的请求参数
* @param cls 需要加载的数据的类型
* @param <T> 返回数据的类型
* @return 需要返回的数据
*/
public
<
T
extends
Object
>
T
load
(
Object
model
,
Class
<
T
>
cls
)
{
// 获取来源主键
Object
from
=
model
;
String
key
=
this
.
getInputKey
(
from
);
// 当主键存在时,只通过主键加载
if
(!
StringHelper
.
isEmpty
(
key
))
{
from
=
new
HashMap
<
String
,
Object
>();
this
.
setKeyString
(
from
,
key
);
}
// 通过传入数据进行加载
T
to
=
this
.
queryFirst
(
cls
,
DaoConst
.
Load
,
from
);
if
(
to
==
null
)
{
return
to
;
}
// 判断来源主键是否存在,不存在则获取加载后的主键
if
(
StringHelper
.
isEmpty
(
key
))
{
key
=
this
.
getKeyString
(
to
);
}
check
(
DaoConst
.
OperatorTypeLoad
,
key
,
to
);
return
to
;
}
/**
* 添加统计数据
*
* @param cls 类型
* @param model 实体
* @param <T> 泛型类型
* @return 增加统计的数据编号
*/
public
<
T
extends
Object
>
String
addGroup
(
Class
<
T
>
cls
,
T
model
)
{
// 判断前台实体
if
(
model
==
null
)
{
return
""
;
}
// 获取前台分组的MD5标识
String
md5
=
this
.
getMd5
(
DaoConst
.
GroupQuery
,
model
);
if
(!
StringHelper
.
isEmpty
(
this
.
Table
.
Table
.
getMD5KeyName
()))
{
ObjectHelper
.
set
(
model
,
this
.
Table
.
Table
.
getMD5KeyName
(),
md5
);
}
// 获取标识的实体
T
from
;
if
(
this
.
Table
.
Table
.
getKeyType
()
==
String
.
class
)
{
from
=
model
;
this
.
setKeyString
(
model
,
md5
);
}
else
if
(!
StringHelper
.
isEmpty
(
this
.
Table
.
Table
.
getMD5KeyName
()))
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
map
.
put
(
this
.
Table
.
Table
.
getMD5KeyName
(),
md5
);
from
=
this
.
load
(
map
,
cls
);
}
else
{
from
=
this
.
queryFirst
(
cls
,
DaoConst
.
GroupQuery
,
model
);
}
// 当没有存在,则创建,否则 UpdateAdd
if
(
from
==
null
)
{
return
this
.
create
(
model
);
}
else
{
// 获取后台的编号,并写入到前台传入的数据上面
String
keyField
=
this
.
getKey
();
Object
key
=
ObjectHelper
.
get
(
from
,
keyField
);
ObjectHelper
.
set
(
model
,
keyField
,
key
);
// 执行更新SQL语句
SqlData
sqlData
=
this
.
getSql
(
DaoConst
.
GroupAdd
);
int
ret
=
this
.
updateSql
(
sqlData
,
model
);
if
(
ret
<
1
)
{
return
this
.
create
(
model
);
}
else
{
return
key
.
toString
();
}
}
}
/**
* 根据SQL语句名称和实体获取MD5值
*
* @param sqlName SQL语句名称
* @param model 获取加密之后的实体
* @param <T> 获取的类型
* @return 获取加密之后的值
*/
protected
<
T
extends
Object
>
String
getMd5
(
String
sqlName
,
T
model
)
{
SqlData
sql
=
this
.
getSql
(
sqlName
);
StringBuilder
sb
=
new
StringBuilder
();
for
(
SqlDataField
field
:
sql
.
sqlDataFields
)
{
if
(
sb
.
length
()
>
0
)
{
sb
.
append
(
":"
);
}
Object
item
=
ObjectHelper
.
get
(
model
,
field
.
paraName
);
sb
.
append
(
item
);
}
return
StringHelper
.
md5
(
sb
.
toString
());
}
/**
* 添加统计数据列表
*
* @param sqlName 需要执行的SQL语句名称
* @param model 需要执行的SQL语句的实体
* @return
*/
protected
int
addGroupList
(
String
sqlName
,
Object
model
)
{
this
.
updateSql
(
sqlName
+
"_GroupInit"
,
model
);
return
this
.
updateSql
(
sqlName
+
"_GroupAdd"
,
model
);
}
/***
* 查询数据是否存在,当存在时修改,否则增加
* @param cls 需要创建的实体的类型
* @param sqlName 执行的SQL语句
* @param request 前台参数,不能包含主键以及其他不需要修改的字段
* @return 保存成功,返回保存的ID,保存失败,返回空值
*/
public
<
T
extends
Object
>
String
saveWith
(
Class
<
T
>
cls
,
String
sqlName
,
Object
request
)
{
T
from
=
this
.
queryFirst
(
cls
,
sqlName
,
request
);
if
(
from
==
null
)
{
try
{
from
=
cls
.
newInstance
();
}
catch
(
Exception
ex
)
{
throw
new
CodeException
(
"创建对象"
+
cls
.
getName
()
+
"出错"
,
ex
);
}
ObjectHelper
.
writeWithFrom
(
from
,
request
);
return
this
.
create
(
from
);
}
else
{
ObjectHelper
.
writeWithFrom
(
from
,
request
);
return
this
.
update
(
from
);
}
}
/**
* 创建成功后的处理
*
* @param model 创建的实体数据
*/
protected
void
created
(
Object
model
)
{
}
/**
* 执行是否存在的SQL语句
*
* @param sqlName SQL语句名称
* @param model 实体
* @param msg 消息
*/
protected
void
checkExist
(
String
sqlName
,
Object
model
,
String
msg
)
{
MapRow
row
=
this
.
queryFirst
(
sqlName
,
model
);
if
(
row
!=
null
)
{
throw
new
CodeException
(
msg
);
}
}
}
yzg-util-db/src/main/java/com/yanzuoguang/db/db/dao/Impl/TableStruct.java
View file @
d738a26b
package
com
.
yanzuoguang
.
db
.
db
.
dao
.
Impl
;
import
com.yanzuoguang.db.db.dao.DaoConst
;
import
com.yanzuoguang.db.db.dao.TableAnnotation
;
import
com.yanzuoguang.util.helper.StringHelper
;
import
com.yanzuoguang.util.obj.MethodField
;
...
...
Write
Preview
Markdown
is supported
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