import java.util.concurrent.ConcurrentHashMap; //导入方法依赖的package包/类

/**

* 生成更新Sql

* @param entity

* @param parameter

* @return

*/

protected SqlParmeter generateUpdateSql(T entity, HeaMap parameter) {

initEntityInfo(this.entityType);

String entityName = getEntityName();

Entity entityInfo = entityMap.get(entityName);

String tableName = entityInfo.getTableName();

SqlParmeter sqlParmeter = new SqlParmeter();

if (null == parameter) {

parameter = new HeaMap();

}

if (parameter.size() == 0) {

throw new RuntimeException("必须传人参数!");

}

List params = new ArrayList();

ConcurrentHashMap aliasMap = new ConcurrentHashMap();

StringBuffer whereSql = new StringBuffer();// 包含where后面的sql语局

String link = "where";// 第一个默认连接是where

boolean firstQueryFlag = true;// 是否是第一个需查项

List groupSqlList = new ArrayList();

for (Entry entry : parameter.entrySet()) {

String key = entry.getKey();

Object value = entry.getValue();

key = filterKey(key);

if (key.startsWith(HeaConstant.Instruction.ADDGROUP)) {

groupSqlList = getOrder(groupSqlList, value);

continue;

}

ColumnCondition columnCondition = new ColumnCondition();

columnCondition = analyzeKey(columnCondition, key, value);

if (!columnCondition.getIfQuery()) {

continue;

}

if (!firstQueryFlag) {

link = columnCondition.getAndOr();

}

whereSql.append(HStringUtils.format(" {0} {1}", link, columnCondition.getSqlFragment()));

if (null != columnCondition.getCookedValue()) {

params.addAll(columnCondition.getCookedValue());

}

firstQueryFlag = false;

}

String whereSqlStr = whereSql.toString();

String groupSql = "";

if (groupSqlList.size() > 0) {

groupSql = " group by " + HStringUtils.StrList(groupSqlList, ",");

}

String tempStr = HStringUtils.addStr(whereSqlStr, groupSql);

aliasMap.putAll(HOrmUtil.getAliasFromSql(tempStr));

// 分析得到joinSql

String joinSql = "";

if (!aliasMap.isEmpty()) {

HHashMap joinSqlMap = new HHashMap();

analyzeAliasMap(aliasMap, joinSqlMap);

joinSql = getJoinSql(joinSqlMap);

}

String tableSqlStr = HStringUtils.format("{0} t {1}", tableName, joinSql);

Map viewParams = parameter.getViewParams();

TableSql tableSql = getTableSql(tableSqlStr, viewParams);

tableSqlStr = tableSql.getTargetTableSql();

List tableParams = tableSql.getParams();

// 获得setSql

SqlFragment setSqlEntity = getUpdateSetSql(entity, entityInfo, parameter.getUpdateNullMap());

// 0:tableSql 1:setSql 2:where

String sql = HStringUtils.format("update {0} set {1} {2}", tableSqlStr, setSqlEntity.getSql(), whereSqlStr);

// String sql = StringUtils.format("delete t from {0} {1}",

// tableSqlStr, whereSqlStr);

sqlParmeter.setSql(sql);

tableParams.addAll(setSqlEntity.getParams());// set

tableParams.addAll(params);

sqlParmeter.setParameters(tableParams.toArray());

return sqlParmeter;

}

java hashmap putall_Java ConcurrentHashMap.putAll方法代码示例相关推荐

  1. cdate在java中_Java Calendar.add方法代码示例

    本文整理汇总了Java中java.util.Calendar.add方法的典型用法代码示例.如果您正苦于以下问题:Java Calendar.add方法的具体用法?Java Calendar.add怎 ...

  2. javacurrentmap_Java ConcurrentHashMap.forEach方法代码示例

    import java.util.concurrent.ConcurrentHashMap; //导入方法依赖的package包/类 public static void main(String[] ...

  3. java中setattribute_Java Files.setAttribute方法代码示例

    import java.nio.file.Files; //导入方法依赖的package包/类 @Override public void setFileHiddenAttribute( String ...

  4. java putall实现,Java JsonObject.putAll方法代码示例

    import org.json.simple.JsonObject; //导入方法依赖的package包/类 static JSONObject unconfirmedTransaction(Tran ...

  5. java default locale_Java JSON.defaultLocale方法代码示例

    import com.alibaba.fastjson.JSON; //导入方法依赖的package包/类 public void test_time() throws Exception { lon ...

  6. java feature get_Java ShapeFeature.getLocations方法代码示例

    import de.fhpotsdam.unfolding.data.ShapeFeature; //导入方法依赖的package包/类 public void setup() { // settin ...

  7. java sql xml_Java ResultSet.getSQLXML方法代码示例

    import java.sql.ResultSet; //导入方法依赖的package包/类 protected Object processColumn(ResultSet rs, int inde ...

  8. java get timestamp_Java Timestamp.getTime方法代码示例

    import java.sql.Timestamp; //导入方法依赖的package包/类 /** * Tests fix for BUG#5874, timezone correction goe ...

  9. java font.createfont_Java Workbook.createFont方法代码示例

    import org.apache.poi.ss.usermodel.Workbook; //导入方法依赖的package包/类 /** * 创建表格样式 * @param wb 工作薄对象 * @r ...

最新文章

  1. RecyclerView + SnapHelper实现炫酷ViewPager效果
  2. 因为有了这个画图工具集,老师同学都说我画的图有特色(Processon,draw.io,Xmind)
  3. Java教程分享:JVM垃圾回收机制之对象回收算法
  4. 期货与期权(part8)--市场报价
  5. dhcp服务器能为客户端提供哪些信息,为DHCP客户端提供DHCP服务器的MAC [关闭]
  6. 游戏笔记本计算机购买,2021大学生买电脑,容易犯的七种错误!游戏本和轻薄本买哪个?...
  7. Pandas DataFrame索引和列属性
  8. 127.自己开发一个 PHP 框架
  9. 【Python】Python爬取小说标题及内容——晋江文学网
  10. IEEE 802.2 LLC协议
  11. 怎么对文件夹名称进行编号排序
  12. 根据ip查经纬度软件_根据地址查询经纬度IP(百度地图)
  13. 基于Docker部署OpenLDAP,同时集成第三方系统(GitLab、JIRA、Nexus、Harbor)
  14. 网络对抗技术——实验四:恶意代码技术
  15. 【ae遮罩】混合模式:模板alpha,轮廓alpha
  16. 图像处理 - 平滑处理(cvSmooth)
  17. 写给通信年轻人的27个忠告
  18. 镜头随人物而动,视频编辑服务让用户稳站C位
  19. Opencv调整运行窗口图片的大小
  20. C++函数 【鸡】 坤坤带你拿下

热门文章

  1. java 中的scanner_java 中的Scanner
  2. mysql benchmark 测试工具_BenchmarkSQL数据库基准测试工具
  3. dubbo provider异步_Dubbo相关面试题
  4. Win8下80端口被System占用,造成Apache不能启动的解决办法
  5. Web Api 中使用 PCM TO WAV 的语音操作
  6. JS中,如何判断一个被转换的数是否是NaN
  7. ECMAScript 6 之 let 和 const 命令
  8. sqlmap简单用法
  9. Silverlight Code Samples
  10. 递归——黑白棋子的移动(洛谷 P1259)