1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using MyTech.CodeGenerator.Utils; 6 7 class DaoImpl 8 { 9 public static string execute(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 10 { 11 string codeStr = ""; 12 codeStr += classHeader(appSettings, listColumnInfo) + " "; 13 codeStr += " "; 14 codeStr += xxxRowMapper(appSettings, listColumnInfo) + " "; 15 codeStr += " "; 16 codeStr += selectByPk(appSettings, listColumnInfo) + " "; 17 codeStr += " "; 18 codeStr += selectAll(appSettings, listColumnInfo) + " "; 19 codeStr += " "; 20 codeStr += selectList(appSettings, listColumnInfo) + " "; 21 codeStr += " "; 22 codeStr += count(appSettings, listColumnInfo) + " "; 23 codeStr += " "; 24 codeStr += selectPaging(appSettings, listColumnInfo) + " "; 25 codeStr += " "; 26 codeStr += insert(appSettings, listColumnInfo) + " "; 27 codeStr += " "; 28 codeStr += insertSelective(appSettings, listColumnInfo) + " "; 29 codeStr += " "; 30 codeStr += update(appSettings, listColumnInfo) + " "; 31 codeStr += " "; 32 codeStr += updateSelective(appSettings, listColumnInfo) + " "; 33 codeStr += " "; 34 codeStr += delete(appSettings, listColumnInfo) + " "; 35 codeStr += " "; 36 codeStr += delete__batch(appSettings, listColumnInfo) + " "; 37 38 codeStr += "}"; 39 40 //Console.WriteLine("Hello World, from internal!" + listColumnInfo.Count); 41 //for(int i=0; i<listColumnInfo.Count; i++) 42 //{ 43 // codeStr += TypeConverterForJava.SqlType2JavaDeclare(listColumnInfo[i].DataType) + " " + listColumnInfo[i].Name + "; "; 44 // 45 //} 46 47 48 49 return codeStr; 50 } 51 52 public static string classHeader(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 53 { 54 StringBuilder sb = new StringBuilder(); 55 56 sb.AppendLine("package " + appSettings.NamespaceString + ".dao.impl;"); 57 sb.AppendLine(""); 58 sb.AppendLine("import " + appSettings.NamespaceString + ".dao." + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix)+ "Dao;"); 59 sb.AppendLine("import " + appSettings.NamespaceString + ".model." + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + ";"); 60 sb.AppendLine("import com.ydtech.common.web.paging.PageResult;"); 61 sb.AppendLine("import com.github.drinkjava2.jdialects.Dialect;"); 62 sb.AppendLine("import org.springframework.beans.factory.annotation.Autowired;"); 63 sb.AppendLine("import org.springframework.jdbc.core.JdbcTemplate;"); 64 sb.AppendLine("import org.springframework.jdbc.core.PreparedStatementCreator;"); 65 sb.AppendLine("import org.springframework.jdbc.core.RowMapper;"); 66 sb.AppendLine("import org.springframework.jdbc.support.GeneratedKeyHolder;"); 67 sb.AppendLine("import org.springframework.jdbc.support.KeyHolder;"); 68 sb.AppendLine("import org.springframework.stereotype.Repository;"); 69 sb.AppendLine(""); 70 sb.AppendLine(""); 71 sb.AppendLine("import javax.sql.DataSource;"); 72 sb.AppendLine("import java.sql.Connection;"); 73 sb.AppendLine("import java.sql.PreparedStatement;"); 74 sb.AppendLine("import java.sql.ResultSet;"); 75 sb.AppendLine("import java.sql.SQLException;"); 76 sb.AppendLine(""); 77 sb.AppendLine("" + GetImports(listColumnInfo) + ""); 78 sb.AppendLine("import java.util.List;"); 79 sb.AppendLine("import java.util.ArrayList;"); 80 sb.AppendLine(""); 81 sb.AppendLine(""); 82 sb.AppendLine("@Repository"); 83 sb.AppendLine("public class " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "DaoImpl implements " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "Dao{"); 84 sb.AppendLine(""); 85 sb.AppendLine(" @Autowired"); 86 sb.AppendLine(" public DataSource dataSource;"); 87 88 89 return sb.ToString(); 90 } 91 92 public static string xxxRowMapper(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 93 { 94 StringBuilder sb = new StringBuilder(); 95 96 sb.AppendLine(" public static class " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "RowMapper implements RowMapper {"); 97 sb.AppendLine(" public " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " mapRow(ResultSet resultSet, int rowNum) throws SQLException {"); 98 sb.AppendLine(" " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " model = new " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " ();"); 99 sb.AppendLine(""); 100 sb.AppendLine(" " + GetSelectProcessRow(appSettings, listColumnInfo) + ";"); 101 sb.AppendLine(); 102 sb.AppendLine(" return model;"); 103 sb.AppendLine(" }"); 104 sb.AppendLine(" }"); 105 sb.AppendLine(" "); 106 107 return sb.ToString(); 108 } 109 110 public static string selectByPk(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 111 { 112 StringBuilder sb = new StringBuilder(); 113 114 sb.AppendLine(" @Override"); 115 sb.AppendLine(" public " + GetClassName(appSettings, listColumnInfo) + " selectByPk(" + GetSelectByPkFunctionSignature(appSettings, listColumnInfo) + "){"); 116 sb.AppendLine(" String sql = " select " + GetSelectFields(appSettings, listColumnInfo) + " where " +GetSelectByPkWhere(appSettings, listColumnInfo) + " " ;"); 117 sb.AppendLine(""); 118 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 119 sb.AppendLine(""); 120 sb.AppendLine(" List<" + GetClassName(appSettings, listColumnInfo) + "> ls = jdbcTemplate.query(sql, new Object[] { " + GetSelectByPkParams(appSettings, listColumnInfo) + " }, new " + GetClassName(appSettings, listColumnInfo) + "RowMapper()))"); 121 sb.AppendLine(""); 122 sb.AppendLine(" if(ls!=null && ls.size()>0){"); 123 sb.AppendLine(" return ls.get(0);"); 124 sb.AppendLine(" }"); 125 sb.AppendLine(""); 126 sb.AppendLine(" return null;"); 127 sb.AppendLine(" }"); 128 129 130 return sb.ToString(); 131 } 132 133 public static string selectAll(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 134 { 135 StringBuilder sb = new StringBuilder(); 136 137 sb.AppendLine(" @Override"); 138 sb.AppendLine(" public List<" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "> selectAll( ){"); 139 sb.AppendLine(" String sql = "select " + GetSelectFields(appSettings,listColumnInfo) + "";"); 140 sb.AppendLine(""); 141 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 142 sb.AppendLine(""); 143 sb.AppendLine(" return jdbcTemplate.query(sql, new " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix)+ "RowMapper());"); 144 sb.AppendLine(" }"); 145 146 return sb.ToString(); 147 } 148 149 public static string selectList(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 150 { 151 StringBuilder sb = new StringBuilder(); 152 153 sb.AppendLine(" public List<" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "> selectList(String whereCase, Object[] paramValues ){"); 154 sb.AppendLine(" String sql = "select " + GetSelectFields(appSettings, listColumnInfo) + " " + whereCase;"); 155 sb.AppendLine(""); 156 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 157 sb.AppendLine(""); 158 sb.AppendLine(" return jdbcTemplate.query(sql, paramValues, new " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "RowMapper());"); 159 sb.AppendLine(" }"); 160 161 162 return sb.ToString(); 163 } 164 165 public static string count(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 166 { 167 StringBuilder sb = new StringBuilder(); 168 169 sb.AppendLine(" public Integer count(String whereCase, Object[] paramValues){"); 170 sb.AppendLine(" String sql = "select count(1) from " + appSettings.ClassPrefix + " t " + whereCase;"); 171 sb.AppendLine(""); 172 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 173 sb.AppendLine(""); 174 sb.AppendLine(" return jdbcTemplate.queryForObject(sql, paramValues, Integer.class);"); 175 sb.AppendLine(" }"); 176 177 178 return sb.ToString(); 179 } 180 181 public static string selectPaging(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 182 { 183 StringBuilder sb = new StringBuilder(); 184 185 sb.AppendLine(" public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues){"); 186 sb.AppendLine(""); 187 sb.AppendLine(" Dialect dialect = Dialect.guessDialect(dataSource);"); 188 sb.AppendLine(" String sql = dialect.pagin(pageNumber,pageSize, "select " + GetSelectFields(appSettings, listColumnInfo) + " " + whereCase);"); 189 sb.AppendLine(""); 190 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 191 sb.AppendLine(" List<" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "> recordList = jdbcTemplate.query(sql, paramValues, new " + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "RowMapper());"); 192 sb.AppendLine(""); 193 sb.AppendLine(" int totalCount = count(whereCase, paramValues);"); 194 sb.AppendLine(""); 195 sb.AppendLine(" PageResult pageResult = new PageResult(pageNumber, pageSize, totalCount, recordList);"); 196 sb.AppendLine(""); 197 sb.AppendLine(" return pageResult;"); 198 sb.AppendLine(" }"); 199 200 201 return sb.ToString(); 202 } 203 204 public static string insert(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 205 { 206 StringBuilder sb = new StringBuilder(); 207 208 //sb.AppendLine("@*insert时,如果有自动生成的主键就生成返回该主键的函数;没有自动生成的主键,则返回true,false*@ "); 209 //sb.AppendLine("@{"); 210 if("NO" == HasAUTO_GENERATED_KEYS(listColumnInfo)){ 211 sb.AppendLine(" @Override"); 212 sb.AppendLine(" public Integer insert(" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix)+" model) {"); 213 sb.AppendLine(""); 214 sb.AppendLine(" String sql = "insert into "+appSettings.ClassPrefix+" ( "+GetInsertFields(appSettings, listColumnInfo)+" ";"); 215 sb.AppendLine(""); 216 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 217 sb.AppendLine(""); 218 sb.AppendLine(" Object[] params = new Object[] {"+GetInsertParams(appSettings, listColumnInfo)+"};"); 219 sb.AppendLine(""); 220 sb.AppendLine(" int out = jdbcTemplate.update(sql, params);"); 221 sb.AppendLine(""); 222 sb.AppendLine(" return out;"); 223 sb.AppendLine(" }"); 224 } 225 sb.AppendLine(""); 226 if("YES" == HasAUTO_GENERATED_KEYS(listColumnInfo)){ 227 sb.AppendLine(""); 228 sb.AppendLine(" @Override"); 229 sb.AppendLine(" public Integer insertReturnPk(" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix)+" model) {"); 230 sb.AppendLine(""); 231 sb.AppendLine(" String sql = "insert into "+appSettings.ClassPrefix+" ( "+GetInsertFields(appSettings, listColumnInfo)+" ";"); 232 sb.AppendLine(""); 233 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 234 sb.AppendLine(""); 235 sb.AppendLine(" KeyHolder keyHolder = new GeneratedKeyHolder();"); 236 sb.AppendLine(" jdbcTemplate.update(new PreparedStatementCreator() {"); 237 sb.AppendLine(" @Override"); 238 sb.AppendLine(" public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {"); 239 sb.AppendLine(" PreparedStatement ps = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);"); 240 sb.AppendLine(" " + GetInsertParamsReturnPk(appSettings,listColumnInfo)+""); 241 sb.AppendLine(" return ps;"); 242 sb.AppendLine(" }"); 243 sb.AppendLine(" }, keyHolder);"); 244 sb.AppendLine(" "); 245 sb.AppendLine(" return keyHolder.getKey().intValue();"); 246 sb.AppendLine(" }"); 247 sb.AppendLine("}"); 248 249 } 250 251 252 return sb.ToString(); 253 } 254 255 256 257 public static string insertSelective(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 258 { 259 StringBuilder sb = new StringBuilder(); 260 261 sb.AppendLine(""); 262 sb.AppendLine(" @Override"); 263 sb.AppendLine(" public Integer insertSelective(" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " model) {"); 264 sb.AppendLine(""); 265 sb.AppendLine(" StringBuffer sbSql = new StringBuffer();"); 266 sb.AppendLine(" StringBuffer sbParams = new StringBuffer();"); 267 sb.AppendLine(" ArrayList<Object> alParamsValues = new ArrayList<Object>();"); 268 sb.AppendLine(""); 269 sb.AppendLine(" String pre = "";"); 270 sb.AppendLine(" " + GetInsertSelectiveFields(appSettings, listColumnInfo)); 271 sb.AppendLine(" "); 272 sb.AppendLine(" String sql = "INSERT INTO "+appSettings.ClassPrefix+" (" + sbSql.toString() + ") VALUES (" + sbParams.toString() + ")";"); 273 sb.AppendLine(" "); 274 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 275 sb.AppendLine(""); 276 sb.AppendLine(" Object[] params = alParamsValues.toArray();"); 277 sb.AppendLine(""); 278 sb.AppendLine(" int out = jdbcTemplate.update(sql, params);"); 279 sb.AppendLine(""); 280 sb.AppendLine(" return out;"); 281 sb.AppendLine(" }"); 282 sb.AppendLine(" "); 283 284 285 286 return sb.ToString(); 287 } 288 289 public static string update(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 290 { 291 StringBuilder sb = new StringBuilder(); 292 293 294 sb.AppendLine(" @Override"); 295 sb.AppendLine(" public Integer update(" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " model) {"); 296 sb.AppendLine(""); 297 sb.AppendLine(" String sql = "update "+appSettings.ClassPrefix+" set " + GetUpdateFields(appSettings, listColumnInfo) + "";"); 298 sb.AppendLine(" "); 299 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 300 sb.AppendLine(" "); 301 sb.AppendLine(" Object[] params = new Object[] {" + GetUpdateParams(appSettings, listColumnInfo) +"};"); 302 sb.AppendLine(""); 303 sb.AppendLine(" return jdbcTemplate.update(sql, params);"); 304 sb.AppendLine(" }"); 305 sb.AppendLine(" "); 306 307 308 return sb.ToString(); 309 } 310 public static string updateSelective(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 311 { 312 StringBuilder sb = new StringBuilder(); 313 314 315 sb.AppendLine(" @Override"); 316 sb.AppendLine(" public Integer updateSelective(" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " model) {"); 317 sb.AppendLine(""); 318 sb.AppendLine(" StringBuffer sbSql = new StringBuffer();"); 319 sb.AppendLine(" StringBuffer sbParams = new StringBuffer();"); 320 sb.AppendLine(" ArrayList<Object> alParamsValues = new ArrayList<Object>();"); 321 sb.AppendLine(""); 322 sb.AppendLine(" String pre = "";"); 323 sb.AppendLine(" String preWhere = "";"); 324 sb.AppendLine(" " + GetUpdateSelectiveFields(appSettings, listColumnInfo) ); 325 sb.AppendLine(" "); 326 sb.AppendLine(" if(!sbSql.toString().equalsIgnoreCase("")){"); 327 sb.AppendLine(" String sql = "update "+appSettings.ClassPrefix+" set " + sbSql.toString() + " where " + sbParams.toString() ;"); 328 sb.AppendLine(" "); 329 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 330 sb.AppendLine(""); 331 sb.AppendLine(" Object[] params = alParamsValues.toArray();"); 332 sb.AppendLine(""); 333 sb.AppendLine(" return jdbcTemplate.update(sql, params);"); 334 sb.AppendLine(" }"); 335 sb.AppendLine(" "); 336 sb.AppendLine(" return 0;"); 337 sb.AppendLine(""); 338 sb.AppendLine(" }"); 339 340 341 return sb.ToString(); 342 } 343 public static string delete(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 344 { 345 StringBuilder sb = new StringBuilder(); 346 347 348 sb.AppendLine(" @Override"); 349 sb.AppendLine(" public Integer delete(" + GetDeleteFunctionSignature(appSettings, listColumnInfo) + ") {"); 350 sb.AppendLine(""); 351 sb.AppendLine(" String sql = "delete from "+appSettings.ClassPrefix+" where "+GetDeleteFields(appSettings, listColumnInfo)+"";"); 352 sb.AppendLine(" "); 353 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 354 sb.AppendLine(""); 355 sb.AppendLine(" return jdbcTemplate.update(sql, " + GetDeleteParams(appSettings, listColumnInfo) + ");"); 356 sb.AppendLine(" }"); 357 358 359 return sb.ToString(); 360 } 361 362 public static string delete__batch(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 363 { 364 StringBuilder sb = new StringBuilder(); 365 366 367 sb.AppendLine(" @Override"); 368 sb.AppendLine(" public Integer delete(List<" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + "> ls" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + " ){"); 369 sb.AppendLine(" String sql = "delete from "+ appSettings.ClassPrefix+" where " + GetDeleteFields(appSettings, listColumnInfo) + "";"); 370 sb.AppendLine(" "); 371 sb.AppendLine(" JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);"); 372 sb.AppendLine(""); 373 sb.AppendLine(" return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {"); 374 sb.AppendLine(" @Override"); 375 sb.AppendLine(" public void setValues(PreparedStatement preparedStatement, int i) throws SQLException { "); 376 sb.AppendLine(" " + GetDeleteFieldsValue(appSettings, listColumnInfo)); 377 sb.AppendLine(" }"); 378 sb.AppendLine(" "); 379 sb.AppendLine(" @Override"); 380 sb.AppendLine(" public int getBatchSize() {"); 381 sb.AppendLine(" return ls" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix)+".size();"); 382 sb.AppendLine(" }"); 383 sb.AppendLine(" }).length;"); 384 sb.AppendLine(" }"); 385 386 387 388 return sb.ToString(); 389 } 390 391 //以下为公共函数 392 public static string GetClassName(AppSettings appSettings, List<ColumnInfo> listColumnInfo){ 393 return UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix); 394 } 395 396 public static string GetSelectProcessRow(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 397 { 398 string result = ""; 399 string pre = ""; 400 401 foreach(ColumnInfo ci in listColumnInfo) 402 { 403 result += pre + "model.set" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) 404 + "(resultSet.get" + Get_GetJavaTypeFromSqlType(ci) + "("" + ci.Name.ToString() + ""))"; 405 pre = "; "; 406 } 407 408 return result; 409 } 410 411 public static string GetSelectByPkFunctionSignature(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 412 { 413 string result = ""; 414 string pre = ""; 415 416 foreach(ColumnInfo ci in listColumnInfo) 417 { 418 if(ci.IsPrimaryKey) 419 { 420 result += pre + GetJavaTypeFromSqlType(ci) + " " + UnderscoreCamelUtil.ToCamelCase(ci.Name.ToString()); 421 pre = ", "; 422 } 423 } 424 425 return result; 426 } 427 428 public static string GetSelectFields(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 429 { 430 string result = ""; 431 string where = ""; 432 string pre = ""; 433 string preWhere = ""; 434 string tableName = ""; 435 436 foreach(ColumnInfo ci in listColumnInfo) 437 { 438 //if(ci.IsPrimaryKey) 439 //{ 440 // where += preWhere + ci.Name.ToString(); 441 // where += "=?"; 442 // preWhere = ", "; 443 //} 444 445 result += pre + "t." + ci.Name.ToString(); 446 pre = ", "; 447 448 tableName= ci.TableName; 449 } 450 451 result += " from " + tableName + " t "; 452 453 return result; 454 } 455 456 public static string GetSelectByPkWhere(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 457 { 458 string where = ""; 459 string pre = ""; 460 string preWhere = ""; 461 string tableName = ""; 462 463 foreach(ColumnInfo ci in listColumnInfo) 464 { 465 if(ci.IsPrimaryKey) 466 { 467 where += preWhere + ci.Name.ToString(); 468 where += "=?"; 469 preWhere = ", "; 470 } 471 472 tableName= ci.TableName; 473 } 474 475 return where; 476 } 477 478 public static string GetSelectByPkParams(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 479 { 480 string result = ""; 481 string pre = ""; 482 483 foreach(ColumnInfo ci in listColumnInfo) 484 { 485 if(ci.IsPrimaryKey) 486 { 487 result += pre + UnderscoreCamelUtil.ToCamelCase(ci.Name.ToString()); 488 pre = ", "; 489 } 490 } 491 492 return result; 493 } 494 495 public static string GetInsertFields(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 496 { 497 string result = ""; 498 string values = ""; 499 string pre = ""; 500 501 foreach(ColumnInfo ci in listColumnInfo) 502 { 503 if(ci.IsAutoNumber) 504 { 505 } 506 else 507 { 508 result += pre + ci.Name.ToString(); 509 values += pre + "?"; 510 pre = ", "; 511 } 512 } 513 514 result += ") values ( " + values + ")"; 515 516 return result; 517 } 518 519 public static string GetInsertParams(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 520 { 521 string result = ""; 522 string pre = ""; 523 524 foreach(ColumnInfo ci in listColumnInfo) 525 { 526 if(ci.IsAutoNumber) 527 { 528 } 529 else 530 { 531 result += pre + "model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()"; 532 pre = ", "; 533 } 534 } 535 536 return result; 537 } 538 539 public static string GetInsertParamsReturnPk(AppSettings appSettings, List<ColumnInfo> listColumnInfo) 540 { 541 string result = ""; 542 string pre = ""; 543 544 int i = 1; 545 foreach(ColumnInfo ci in listColumnInfo) 546 { 547 if(ci.IsAutoNumber) 548 { 549 } 550 else 551 { 552 //result += pre + "ps.set" + @GetJavaTypeFromSqlType(ci) + "(" + i++ + ", model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "());"; 553 result += pre + "ps.setObject(" + i++ + ", model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "());"; 554 pre = " "; 555 } 556 } 557 558 return result; 559 } 560 561 562 public static string GetInsertSelectiveFields(AppSettings appSettings, List<ColumnInfo> columnInfoList) 563 { 564 string result = " "; 565 string values = ""; 566 string pre = ""; 567 568 foreach(ColumnInfo ci in columnInfoList) 569 { 570 if(ci.IsAutoNumber) 571 { 572 } 573 else 574 { 575 result += " if(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "() != null){ "; 576 result += " sbSql.append(pre + "" + ci.Name.ToString() + ""); "; 577 result += " sbParams.append(pre + "?"); "; 578 result += " alParamsValues.add(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()); "; 579 result += " pre = ","; "; 580 result += " } "; 581 pre = ", "; 582 } 583 } 584 585 return result; 586 } 587 588 589 public static string GetUpdateFields(AppSettings appSettings, List<ColumnInfo> columnInfoList) 590 { 591 string result = ""; 592 string where = ""; 593 string pre = ""; 594 string preWhere = ""; 595 596 foreach(ColumnInfo ci in columnInfoList) 597 { 598 if(ci.IsPrimaryKey) 599 { 600 where += preWhere + ci.Name.ToString(); 601 where += "=?"; 602 preWhere = ", "; 603 }else{ 604 result += pre + ci.Name.ToString(); 605 result += "=?"; 606 pre = ", "; 607 } 608 } 609 610 result = result + " where " + where; 611 612 return result; 613 } 614 615 616 public static string GetUpdateParams(AppSettings appSettings, List<ColumnInfo> columnInfoList) 617 { 618 string result = ""; 619 string where = ""; 620 string pre = ""; 621 string preWhere = ""; 622 623 foreach(ColumnInfo ci in columnInfoList) 624 { 625 if(ci.IsPrimaryKey) 626 { 627 where += preWhere + "model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()"; 628 preWhere = ", "; 629 }else{ 630 result += pre + "model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()"; 631 pre = ", "; 632 } 633 } 634 635 result = result + " , " + where; 636 637 return result; 638 } 639 640 public static string GetUpdateSelectiveFields(AppSettings appSettings, List<ColumnInfo> columnInfoList) 641 { 642 string result = " "; 643 string where = ""; 644 string values = ""; 645 string pre = ""; 646 string preWhere = ""; 647 648 foreach(ColumnInfo ci in columnInfoList) 649 { 650 if(ci.IsPrimaryKey) 651 { 652 } 653 else 654 { 655 result += " if(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "() != null){ "; 656 result += " sbSql.append(pre + "" + ci.Name.ToString() + "=?"); "; 657 //result += " sbParams.append(pre + "?"); "; 658 result += " alParamsValues.add(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()); "; 659 result += " pre = ","; "; 660 result += " } "; 661 pre = ", "; 662 } 663 } 664 665 foreach(ColumnInfo ci in columnInfoList) 666 { 667 if(ci.IsPrimaryKey) 668 { 669 where += " if(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "() != null){ "; 670 //where += " sbSql.append(pre + "" + pre + ci.Name.ToString() + "=?"); "; 671 where += " sbParams.append(preWhere + "" + preWhere + ci.Name.ToString() + "=?"); "; 672 where += " alParamsValues.add(model.get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "()); "; 673 where += " preWhere = ","; "; 674 where += " } "; 675 preWhere = ", "; 676 } 677 else 678 { 679 } 680 } 681 682 683 return result + where; 684 } 685 686 public static string GetDeleteFunctionSignature(AppSettings appSettings, List<ColumnInfo> columnInfoList) 687 { 688 string result = ""; 689 string pre = ""; 690 691 foreach(ColumnInfo ci in columnInfoList) 692 { 693 if(ci.IsPrimaryKey) 694 { 695 result += pre + GetJavaTypeFromSqlType(ci) + " " + UnderscoreCamelUtil.ToCamelCase(ci.Name.ToString()); 696 pre = ", "; 697 } 698 } 699 700 return result; 701 } 702 703 public static string GetDeleteFields(AppSettings appSettings, List<ColumnInfo> columnInfoList) 704 { 705 string result = ""; 706 string pre = ""; 707 708 foreach(ColumnInfo ci in columnInfoList) 709 { 710 if(ci.IsPrimaryKey) 711 { 712 result += pre + ci.Name.ToString() + "=?"; 713 pre = ", "; 714 } 715 } 716 717 return result; 718 } 719 720 721 public static string GetDeleteParams(AppSettings appSettings, List<ColumnInfo> columnInfoList) 722 { 723 string result = ""; 724 string pre = ""; 725 726 foreach(ColumnInfo ci in columnInfoList) 727 { 728 if(ci.IsPrimaryKey) 729 { 730 result += pre + UnderscoreCamelUtil.ToCamelCase(ci.Name.ToString()); 731 pre = ", "; 732 } 733 } 734 735 return result; 736 } 737 738 //preparedStatement.setString(1, ls@UnderscoreCamelUtil.ToPascalCase(@AppSetting.ClassPrefix).get(i).getId()); 739 public static string GetDeleteFieldsValue(AppSettings appSettings, List<ColumnInfo> columnInfoList) 740 { 741 string result = ""; 742 string pre = ""; 743 744 foreach(ColumnInfo ci in columnInfoList) 745 { 746 if(ci.IsPrimaryKey) 747 { 748 //result += pre + ci.Name.ToString() + "=?"; 749 result += pre + "preparedStatement.set" + GetJavaTypeFromSqlType(ci) + "(1, ls" + UnderscoreCamelUtil.ToPascalCase(appSettings.ClassPrefix) + ".get(i).get" + UnderscoreCamelUtil.ToPascalCase(ci.Name.ToString()) + "());"; 750 pre = ", "; 751 } 752 } 753 754 return result; 755 } 756 757 public static string GetImports(List<ColumnInfo> listColumnInfo) 758 { 759 string result = ""; 760 bool hasBigDecimal = false; 761 bool hasDate = false; 762 foreach(ColumnInfo ci in listColumnInfo) 763 { 764 if("BigDecimal" == GetJavaTypeFromSqlType(ci)) 765 { 766 hasBigDecimal = true; 767 } 768 if("Date" == GetJavaTypeFromSqlType(ci)) 769 { 770 hasDate = true; 771 } 772 } 773 774 if(hasBigDecimal) 775 { 776 result += "import java.math.BigDecimal; "; 777 } 778 if(hasDate) 779 { 780 result += "import java.util.Date;"; 781 } 782 783 return result; 784 } 785 786 public static string HasAUTO_GENERATED_KEYS(List<ColumnInfo> listColumnInfo) 787 { 788 string result = "NO"; 789 790 foreach(ColumnInfo ci in listColumnInfo) 791 { 792 if(ci.IsAutoNumber) 793 { 794 result = "YES"; 795 } 796 } 797 798 return result; 799 } 800 801 //更通用的函数 802 public static string GetJavaTypeFromSqlType(ColumnInfo ci) 803 { 804 string result = TypeConverterForJava.SqlType2JavaDeclare(ci.DataType, ci.Precision, ci.Scale); 805 return result; 806 } 807 808 809 public static string Get_GetJavaTypeFromSqlType(ColumnInfo ci) 810 { 811 string result = TypeConverterForJava.SqlType2JavaDeclare(ci.DataType, ci.Precision, ci.Scale); 812 if(result == "Integer") 813 { 814 return "Int"; 815 } 816 return result; 817 } 818 }