1. package com.ctl.util;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Insets;
  6. import java.awt.event.MouseAdapter;
  7. import java.awt.event.MouseEvent;
  8. import java.io.*;
  9. import java.lang.reflect.*;
  10. import java.sql.*;
  11. import java.text.SimpleDateFormat;
  12. import java.util.*;
  13. import java.util.Date;
  14.  
  15. import javax.swing.JButton;
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JPasswordField;
  20. import javax.swing.JTextField;
  21.  
  22. import org.apache.log4j.Category;
  23.  
  24. /**
  25. * @author Administrator
  26. * @category
  27.  
  28. */
  29.  
  30. public class DButils {
  31.  
  32. private static ThreadLocal<Connection> connHolder;
  33. private static String driver;
  34. private static String url;
  35. private static String username;
  36. private static String password;
  37. //\u6570\u636E\u5E93\u7C7B\u578Boracle mysql db2
  38. private static String databasetype;
  39. private static Connection conn;
  40. private static LogUtil log;
  41. private static Category logger=Category.getInstance(DButils.class);
  42. static {
  43. log = new LogUtil();
  44. connHolder = new ThreadLocal<Connection>();
  45. // if (ConfigUtils.getType("mysql.driver") == null
  46. // || "".equals(ConfigUtils.getType("mysql.driver").trim())
  47. // || ConfigUtils.getType("mysql.url") == null
  48. // || "".equals(ConfigUtils.getType("mysql.url").trim())
  49. // || ConfigUtils.getType("mysql.username") == null
  50. // || "".equals(ConfigUtils.getType("mysql.username").trim())
  51. // || ConfigUtils.getType("mysql.password") == null
  52. // || "".equals(ConfigUtils.getType("mysql.password").trim())) {
  53. // System.out.println(DButils.getCurrentDataTime() + "\u8D44\u6E90\u6587\u4EF6\u672A\u627E\u5230");
  54. // log.WriteLine("DButils.staic{}", "\u8D44\u6E90\u6587\u4EF6\u672A\u627E\u5230");
  55. // driver = RegisterUtil.getStringFromSystemRoot("mysql.driver");
  56. // url = RegisterUtil.getStringFromSystemRoot("mysql.url");
  57. // username = RegisterUtil.getStringFromSystemRoot("mysql.username");
  58. // password = RegisterUtil.getStringFromSystemRoot("mysql.password");
  59. // } else {
  60. // System.out.println("\u4ECE\u8D44\u6E90\u6587\u4EF6\u83B7\u53D6\u914D\u7F6E");
  61. // log.WriteLine("DButils.staic{}", "\u4ECE\u8D44\u6E90\u6587\u4EF6\u83B7\u53D6\u914D\u7F6E");
  62. // driver = ConfigUtils.getType("mysql.driver");
  63. // url = ConfigUtils.getType("mysql.url");
  64. // username = ConfigUtils.getType("mysql.username");
  65. // password = ConfigUtils.getType("mysql.password");
  66. // }
  67. try {
  68. databasetype = ConfigUtils.getType("databasetype");
  69. if (databasetype.equals("mysql")) {
  70. driver = ConfigUtils.getType("mysql.driver");
  71. url = ConfigUtils.getType("mysql.url");
  72. username = ConfigUtils.getType("mysql.username");
  73. password = ConfigUtils.getType("mysql.password");
  74. } else if (databasetype.equals("oracle")) {
  75. driver = ConfigUtils.getType("oracle.driver");
  76. url = ConfigUtils.getType("oracle.url");
  77. username = ConfigUtils.getType("oracle.username");
  78. password = ConfigUtils.getType("oracle.password");
  79. }
  80. } catch (Exception e) {
  81. log.WriteLine("DButils.staic{}", "\u4ECE\u8D44\u6E90\u6587\u4EF6\u4E2D\u83B7\u53D6\u6570\u636E\u5E93\u53C2\u6570\u5931\u8D25!");
  82. }
  83. try {
  84. Class.forName(driver);
  85. } catch (ClassNotFoundException e) {
  86. log.WriteLine("DButils.staic{}", "Class.forName(driver) error");
  87. }
  88. int isInit = RegisterUtil.getIntFromSystemRoot("isInit", 0);
  89. if (isInit == 1) {
  90. log.WriteLine("DButils.staic{}", "isInit == 1\u52A0\u8F7D\u6570\u636E\u5E93\u914D\u7F6E\u7A97\u4F53");
  91. init("staitc{}", databasetype);
  92. }
  93. }
  94.  
  95. static class KeyValue {
  96. Object key;
  97. Object value;
  98.  
  99. public Object getKey() {
  100. return key;
  101. }
  102.  
  103. public void setKey(Object key) {
  104. this.key = key;
  105. }
  106.  
  107. public Object getValue() {
  108. return value;
  109. }
  110.  
  111. public void setValue(Object value) {
  112. this.value = value;
  113. }
  114.  
  115. public KeyValue() {
  116. super();
  117. }
  118.  
  119. public KeyValue(Object key, Object value) {
  120. super();
  121. this.key = key;
  122. this.value = value;
  123. }
  124.  
  125. public String toString() {
  126. return this.key + ":" + this.value;
  127. }
  128.  
  129. }
  130.  
  131. /**
  132. * @category\u591A\u6761\u4EF6\u7CBE\u786E\u67E5\u8BE2 select * from person where id=1 and name='ctl'
  133. * @param c
  134. * Person.class
  135. * @param columns
  136. * \u8981\u5339\u914D\u7684\u5217\u540D
  137. * @param conditions
  138. * \u5217\u6240\u5BF9\u5E94\u7684\u503C
  139. */
  140. public static List getEntitysByColumnsAnd(Class c, String[] columns,
  141. Object[] conditionsValues) {
  142. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  143. if (!isTableExist(tableName)) {
  144. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  145. log.WriteLine("DButils.getEntitysByColumnsAnd()", tableName
  146. + " is not isExist! \u9000\u51FA");
  147. return null;
  148. }
  149. List<String> columnList = getColumns(c);
  150. for (int i = 0; i < columns.length; i++) {
  151. if (!columnList.contains(columns[i])) {
  152. System.err.println("\u5217\u540D'" + columns[i] + "'\u4E0D\u5B58\u5728");
  153. log.WriteLine("DButils.getEntitysByColumnsAnd()", columns[i]
  154. + " is not isExist! \u9000\u51FA");
  155. return null;
  156. }
  157. }
  158. if (columns.length != conditionsValues.length) {
  159. System.err.println("\u5217\u4E2A\u6570\u4E0E\u5217\u5BF9\u5E94\u7684value\u7684\u4E2A\u6570\u4E0D\u540C");
  160. log.WriteLine("DButils.getEntitysByColumnsAnd()",
  161. "\u5217\u4E2A\u6570\u4E0E\u5217\u5BF9\u5E94\u7684value\u7684\u4E2A\u6570\u4E0D\u540C! \u9000\u51FA");
  162. return null;
  163. }
  164. List list = new ArrayList();
  165. PreparedStatement ps = null;
  166. ResultSet rs = null;
  167. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  168. if (fields.length == 0) {
  169. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  170. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  171. }
  172. StringBuilder sql = new StringBuilder("select * from " + tableName)
  173. .append(" where");
  174. for (int i = 0; i < columns.length; i++) {
  175. if (i < columns.length - 1) {
  176. sql.append(" " + columns[i]).append("=? and");
  177. } else {
  178. sql.append(" " + columns[i]).append("=?");
  179. }
  180. }
  181. log.WriteLine("DButils.getEntitysByColumnsAnd()", "sql:"
  182. + sql.toString());
  183. try {
  184. if (!isTableExist(tableName)) {
  185. System.err.println("\u8868\u4E0D\u5B58\u5728");
  186. return list;
  187. }
  188. ps = (PreparedStatement) getConnection().prepareStatement(
  189. sql.toString());
  190. for (int i = 0; i < columns.length; i++) {
  191. ps.setObject(i + 1, conditionsValues[i]);
  192. }
  193. rs = ps.executeQuery();
  194. log.WriteLine("DButils.getEntitysByColumnsAnd()", "sql:"
  195. + ps.toString().split(":")[1]);
  196. System.out.println("\n" + ps.toString().split(":")[1]);
  197. log.WriteLine("DButils.getEntitysByColumnsAnd()", "sql:"
  198. + ps.toString().split(":")[1]);
  199. Object obj = null;
  200. while (rs.next()) {
  201. obj = c.newInstance();
  202. for (int k = 0; k < fields.length; k++) {
  203. fields[k].setAccessible(true);
  204. fields[k].set(obj, rs.getObject(k + 1));
  205. }
  206. list.add(obj);
  207. }
  208. rs.close();
  209. ps.close();
  210. } catch (Exception e) {
  211. log.WriteLine("DButils.getEntitysByColumnsAnd()",
  212. "getEntitysByColumnsAnd error");
  213. } finally {
  214. rs = null;
  215. ps = null;
  216. }
  217. return list;
  218.  
  219. }
  220.  
  221. /**
  222. * @category \u591A\u6761\u4EF6\u6A21\u7CCA\u67E5\u8BE2
  223. * @param c
  224. * @param columns
  225. * @param conditions
  226. */
  227. public static List getEntitysByColumnsOr(Class c, String[] columns,
  228. Object[] conditionsValues) {
  229. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  230. if (!isTableExist(tableName)) {
  231. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  232. log.WriteLine("DButils.getEntitysByColumnsOr()", tableName
  233. + " is not isExist! \u9000\u51FA");
  234. return null;
  235. }
  236. List<String> columnList = getColumns(c);
  237. for (int i = 0; i < columns.length; i++) {
  238. if (!columnList.contains(columns[i])) {
  239. System.err.println("\u5217\u540D'" + columns[i] + "'\u4E0D\u5B58\u5728");
  240. log.WriteLine("DButils.getEntitysByColumnsOr()", columns[i]
  241. + " is not isExist! \u9000\u51FA");
  242. return null;
  243. }
  244. }
  245. if (columns.length != conditionsValues.length) {
  246. System.err.println("\u5217\u4E2A\u6570\u4E0E\u5217\u5BF9\u5E94\u7684value\u7684\u4E2A\u6570\u4E0D\u540C");
  247. log.WriteLine("DButils.getEntitysByColumnsOr()",
  248. "\u5217\u4E2A\u6570\u4E0E\u5217\u5BF9\u5E94\u7684value\u7684\u4E2A\u6570\u4E0D\u540C! \u9000\u51FA");
  249. return null;
  250. }
  251. List list = new ArrayList();
  252. PreparedStatement ps = null;
  253. ResultSet rs = null;
  254. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  255. if (fields.length == 0) {
  256. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  257. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  258. }
  259. StringBuilder sql = new StringBuilder("select * from " + tableName)
  260. .append(" where");
  261. for (int i = 0; i < columns.length; i++) {
  262. if (i < columns.length - 1) {
  263. sql.append(" " + columns[i]).append("=? or");
  264. } else {
  265. sql.append(" " + columns[i]).append("=?");
  266. }
  267. }
  268. log.WriteLine("DButils.getEntitysByColumnsOr()", "sql:"
  269. + sql.toString());
  270. try {
  271. if (!isTableExist(tableName)) {
  272. System.err.println("\u8868\u4E0D\u5B58\u5728");
  273. return list;
  274. }
  275. ps = (PreparedStatement) getConnection().prepareStatement(
  276. sql.toString());
  277. for (int i = 0; i < columns.length; i++) {
  278. ps.setObject(i + 1, conditionsValues[i]);
  279. }
  280. rs = ps.executeQuery();
  281. log.WriteLine("DButils.getEntitysByColumnsOr()", "sql:"
  282. + ps.toString().split(":")[1]);
  283. System.out.println("\n" + ps.toString().split(":")[1]);
  284. Object obj = null;
  285. while (rs.next()) {
  286. obj = c.newInstance();
  287. for (int k = 0; k < fields.length; k++) {
  288. fields[k].setAccessible(true);
  289. fields[k].set(obj, rs.getObject(k + 1));
  290. }
  291. list.add(obj);
  292. }
  293. rs.close();
  294. ps.close();
  295. } catch (Exception e) {
  296. log.WriteLine("DButils.getEntitysByColumnsOr()",
  297. "getEntitysByColumnsOr error");
  298. } finally {
  299. rs = null;
  300. ps = null;
  301. }
  302. return list;
  303.  
  304. }
  305.  
  306. /**
  307. * @author Administrator
  308. * @category start mysql server
  309. */
  310. public static void startMySqlServer() {
  311. try {
  312. Runtime.getRuntime().exec("net start mysql");
  313. log.WriteLine("DButils.startMySqlServer()", "");
  314. } catch (IOException e) {
  315. log.WriteLine("DButils.startMySqlServer()",
  316. "mysql server start error");
  317. }
  318. }
  319.  
  320. /**
  321. * @category\u521D\u59CB\u5316\u6570\u636E\u5E93
  322. * @param string
  323. */
  324. public static void init(String string,String databasetype) {
  325. if(databasetype.equals("mysql")){
  326. startMySqlServer();
  327. }else if(databasetype.equals("oracle")){
  328. startOracleServer();
  329. }
  330. new InitJFrame(string,databasetype);
  331. }
  332.  
  333. private static void startOracleServer() {
  334. try {
  335. Runtime.getRuntime().exec(
  336. new String[] { "net start OracleOraDb11g_home1TNSListener",
  337. " net start OracleServiceORCL" });
  338. log.WriteLine("DButils.startOracleServer", "");
  339. } catch (IOException e) {
  340. log.WriteLine("DButils.startOracleServer",
  341. "oracle server start error");
  342. }
  343. }
  344.  
  345. /**
  346. * @author Administrator
  347. * @category stop mysql server
  348. */
  349. public static void stopMySqlServer() {
  350. try {
  351. Runtime.getRuntime().exec("net stop mysql");
  352. } catch (IOException e) {
  353. log.WriteLine("DButils.stopMySqlServer()",
  354. "mysql server stop error");
  355. System.err.println("mysql server stop error");
  356. }
  357. }
  358.  
  359. /**
  360. * @category \u662F\u5426\u6267\u884Cinit\u65B9\u6CD5 \u82E5isExcuteInit\u4E3Atrue\u8FD9\u6267\u884C \u5426\u5219\u4E0D\u6267\u884C
  361. * @param isExcuteInit
  362. */
  363. public static void isExecuteInit(boolean isExcuteInit) {
  364. if (isExcuteInit) {
  365. RegisterUtil.putIntSystemRoot("isInit", 1);
  366. } else {
  367. RegisterUtil.putIntSystemRoot("isInit", 0);
  368. }
  369. }
  370.  
  371. /**
  372. * @category \u6570\u636E\u5E93\u662F\u5426\u81EA\u52A8\u63D0\u4EA4
  373. * @param autoCommit
  374. */
  375. public static void setAutoCommit(boolean autoCommit) {
  376. if (autoCommit) {
  377. RegisterUtil.putIntSystemRoot("autoCommit", 1);// 1\u662F\u81EA\u52A8\u63D0\u4EA4
  378. } else {
  379. RegisterUtil.putIntSystemRoot("autoCommit", 0);// 0\u662F\u9700\u8981\u6267\u884Ccommitt
  380. }
  381. }
  382.  
  383. /**
  384. * @category get isAutoCommit
  385. * @return boolean
  386. */
  387. public static boolean getAutoCommit() {
  388. int flag = RegisterUtil.getIntFromSystemRoot("autoCommit", 1);
  389. return flag == 1 ? true : false;
  390. }
  391.  
  392. /**
  393. * @category \u5982\u679CautoCommit=true \u5219\u4E0D\u505A\u64CD\u4F5C\u5426\u5219\u6267\u884Cconn.commit()
  394. */
  395. public static void commit() {
  396. int isCommit = RegisterUtil.getIntFromSystemRoot("autoCommit", 1);
  397. if (isCommit != 1) {
  398. try {
  399. conn.commit();
  400. } catch (SQLException e) {
  401. log.WriteLine("DButils.commit()", "commit error");
  402. System.out.println("db commit false");
  403. exceptionPrint(e);
  404. }
  405.  
  406. }
  407. }
  408.  
  409. /**
  410. *
  411. * @return Connection
  412. * @throws SQLException
  413. * @throws ClassNotFoundException
  414. */
  415.  
  416. public static Connection getConnection() {
  417. conn = connHolder.get();
  418. try {
  419. if (conn == null || conn.isClosed()) {
  420. conn = DriverManager.getConnection(url, username, password);
  421. //conn.setAutoCommit(getAutoCommit());
  422. conn.setAutoCommit(false);
  423. connHolder.set(conn);
  424. }
  425. } catch (Exception e) {
  426. log.WriteLine("DButils.getConnection{}", "getConnection error");
  427. logger.error(e.getMessage());
  428. init("getConnection",databasetype);
  429. exceptionPrint(e);
  430. }
  431. return conn;
  432. }
  433.  
  434. /**
  435. * @category \u6253\u5370\u9519\u8BEF
  436. * @param e
  437. */
  438. public static void exceptionPrint(Exception e) {
  439. StackTraceElement[] errors = e.getStackTrace();
  440. System.out.println();
  441. for (int i = 0; i < errors.length; i++) {
  442. if (DButils.class.getName().equals(errors[i].getClassName())) {
  443. System.out.print("Exception: " + getCurrentDataTime() + " "
  444. + errors[i].getClassName() + "."
  445. + errors[i].getMethodName() + "() line:"
  446. + errors[i].getLineNumber() + "\n");
  447. }
  448. }
  449. e.printStackTrace();
  450. System.out.println();
  451. }
  452.  
  453. /**
  454. * @category \u6839\u636Esql\u5F97\u5230\u8BB0\u5F55\u603B\u6570
  455. * @param sql
  456. * @return int \u5982\u679C\u8FD4\u56DE-1\u4EE3\u8868\u51FA\u9519
  457. */
  458. public static int getCount(String sql) {
  459. try {
  460. ResultSet rs = getConnection().createStatement().executeQuery(sql);
  461. int count = -1;
  462. if (rs.next()) {
  463. count = rs.getInt(1);
  464. }
  465. rs.close();
  466. return count;
  467. } catch (Exception e) {
  468. log.WriteLine("DButils.getCount{}", "getCount error sql:" + sql);
  469. exceptionPrint(e);
  470. }
  471. return -1;
  472. }
  473.  
  474. /**
  475. * @see \u83B7\u53D6\u67D0\u5F20\u8868\u7684\u603B\u8BB0\u5F55\u6570
  476. * @param c
  477. * Person.class
  478. * @return -1 \u51FA\u9519 >=0 right
  479. */
  480. public static int getCount(Class c) {
  481. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  482. if (!isTableExist(tableName)) {
  483. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  484. return -1;
  485. }
  486. int count = -1;
  487. try {
  488. ResultSet rs = getConnection().prepareStatement(
  489. "select count(" + getColumns(c).get(0) + ") from "
  490. + tableName).executeQuery();
  491. if (rs.next()) {
  492. count = rs.getInt(1);
  493. }
  494. rs.close();
  495. return count;
  496. } catch (Exception e) {
  497. log.WriteLine("DButils.getCount{}", "getCount error");
  498. e.printStackTrace();
  499. }
  500. return count;
  501. }
  502.  
  503. /**
  504. * @category \u5F39\u51FA\u6570\u636E\u5E93\u914D\u7F6E\u7A97\u53E3
  505. */
  506. public static void init() {
  507. init(null,databasetype);
  508. }
  509.  
  510. /**
  511. * @category close Connection
  512. * @throws SQLException
  513. */
  514. public static void close() throws SQLException {
  515. conn.close();
  516. conn = null;
  517. connHolder.set(null);
  518. }
  519.  
  520. public static int createTable(Class c) {
  521. String tableName = c.getSimpleName().toLowerCase();// person
  522. return 0;
  523. }
  524.  
  525. /**
  526. *
  527. * @param c
  528. * \u53C2\u6570\u4F8B\u5982Person.class
  529. * @param obj
  530. * \u53C2\u6570\u4F8B\u5982 person obj\u4E3A\u67D0\u4E00\u5B9E\u4F8B\u5BF9\u8C61 // Person person=new Person();
  531. * @category \u8BE5\u65B9\u6CD5\u7528\u4E8E\u5411\u6570\u636E\u5E93\u4E2D\u63D2\u5165\u6761\u6570\u636E \u63D2\u5165\u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u5B9E\u4F53\u7C7B\u7684\u5BF9\u8C61
  532. */
  533. public static void insertEntity(Class c, Object obj) {
  534. if (obj == null || c.getSimpleName().equals(obj.getClass().getName()))
  535. return;
  536. Field[] fields = obj.getClass().getDeclaredFields();
  537. int fieldSize = fields.length;
  538. String tableName = c.getSimpleName().toLowerCase();// person
  539. String[] types1 = { "int", "java.lang.String", "boolean", "char",
  540. "float", "double", "long", "short", "byte", "date" };
  541. String[] types2 = { "java.lang.Integer", "java.lang.String",
  542. "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
  543. "java.lang.Double", "java.lang.Long", "java.lang.Short",
  544. "java.lang.Byte", "java.util.Date" };
  545.  
  546. StringBuffer sql = new StringBuffer("replace into " + tableName
  547. + " values(");
  548. for (int i = 0; i < fieldSize; i++) {
  549. sql.append("?
  550.  
  551. ,");
  552. }
  553. sql.deleteCharAt(sql.length() - 1);
  554. sql.append(")");
  555. log.WriteLine("DButils.insertEntity()", "insertEntity sql:" + sql);
  556. PreparedStatement ps = null;
  557. try {
  558. ps = getConnection().prepareStatement(sql.toString());
  559. for (int j = 0; j < fieldSize; j++) {
  560. fields[j].setAccessible(true);
  561. for (int i = 0; i < types1.length; i++) {
  562. if (fields[j].getType().getName().equalsIgnoreCase(
  563. types1[i])
  564. || fields[j].getType().getName().equalsIgnoreCase(
  565. types2[i])) {
  566.  
  567. if (fields[j].get(obj) != null
  568. && !"".equals(fields[j].get(obj))
  569. && !"null".equals(fields[j].get(obj))) {
  570. // System.out.print(fields[j].getName() + ":"
  571. // + fields[j].get(obj) + " ");
  572. ps.setObject(j + 1, fields[j].get(obj));
  573. } else {
  574. // System.out.print(fields[j].getName() + ":"
  575. // + fields[j].get(obj) + " ");
  576. ps.setObject(j + 1, null);
  577. }
  578. }
  579. }
  580. }
  581. ps.executeUpdate();
  582. System.out.println("\nsql:" + ps.toString().split(":")[1].trim());
  583. log.WriteLine("DButils.insertEntity()", "insertEntity sql:"
  584. + ps.toString().split(":")[1].trim() + " Entity:" + obj);
  585. ps.close();
  586. ps = null;
  587. } catch (Exception e1) {
  588. e1.printStackTrace();
  589. }
  590.  
  591. }
  592.  
  593. /**
  594. * @category \u6839\u636E\u4F20\u5165\u7684\u4E3B\u952E\u503C\u8FD4\u56DE\u4E00\u4E2A\u5B9E\u4F53\u5BF9\u8C61
  595. * @param c
  596. * for example Person.class
  597. * @param primaryKeys
  598. * primaryKeys\u4E3A\u4E3B\u952E,\u53C2\u6570\u987A\u5E8F\u548C\u8868\u4E2D\u4FDD\u6301\u4E00\u81F4 \u5982\u679Cid\uFF0C name \u4E3A\u4E3B\u952E \u7C7B\u540D\u4E3APerson \u5219
  599. * getEntity(Person.class,1,"name")
  600. * @return Object
  601. */
  602. public static Object getEntity(Class c, Object... primaryKeys) {
  603. PreparedStatement ps = null;
  604. ResultSet rs = null;
  605. DatabaseMetaData dmd = null;
  606. Object obj = null;// \u8981\u8FD4\u56DE\u7684\u5BF9\u8C61
  607. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  608. List primaryKeyNameList = new ArrayList();// \u5B58\u653E\u4ECE\u8868\u4E2D\u83B7\u53D6\u7684\u4E3B\u952E
  609. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684\u5C5E\u6027
  610. Method[] methods = null;
  611. if (fields.length == 0) {// \u5F53\u7C7B\u7684\u5C5E\u6027\u90FD\u662Fprivate\u65F6
  612. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  613. methods = c.getDeclaredMethods();// \u83B7\u53D6get set \u65B9\u6CD5
  614. }
  615. StringBuilder sql = new StringBuilder("select * from " + tableName
  616. + " where ");
  617. try {
  618. obj = c.newInstance();
  619. if (!isTableExist(tableName)) {
  620. System.err.println("\u8868\u4E0D\u5B58\u5728");
  621. return obj;
  622. }
  623. dmd = getConnection().getMetaData();
  624. rs = dmd.getPrimaryKeys(null, null, tableName);
  625. while (rs.next()) {// \u83B7\u53D6\u6240\u6709\u7684\u4E3B\u952E
  626. sql.append(rs.getObject(4) + "=?");
  627. sql.append(" and ");
  628. primaryKeyNameList.add(rs.getObject(4));// \u5C06\u4ECE\u8868\u4E2D\u83B7\u53D6\u7684 \u4E3B\u952E\u5B57\u6BB5\u5B58\u5230 list\u4E2D\uFF0C
  629. // \u4E3B\u952E\u4F4D\u4E8E\u8868\u4E2D\u7B2C\u51E0\u5217=rs.getString(5)
  630. }
  631. sql.delete(sql.length() - 4, sql.length());
  632. if (!sql.toString().contains("where")) {
  633. System.err.println("\u6CA1\u6709\u627E\u5230\u4E3B\u952E");
  634. return obj;
  635. }
  636. ps = (PreparedStatement) getConnection().prepareStatement(
  637. sql.toString());
  638. for (int l = 0; l < primaryKeyNameList.size(); l++) {
  639. ps.setObject(l + 1, primaryKeys[l]);
  640. }
  641. rs = ps.executeQuery();
  642. System.out.println(ps.toString().split(":")[1]);
  643. List<String> tableColumns = getColumns(c);
  644. if (rs.next()) {
  645. if (fields.length > 0) {// \u5982\u679C\u7C7B \u7684\u5C5E\u6027\u4E3Apublic
  646. for (int k = 0; k < fields.length; k++) {
  647. fields[k].set(obj, rs.getObject(k + 1));
  648. }
  649. } else {// \u5982\u679C\u7C7B \u7684\u5C5E\u6027\u4E3Aprivate
  650. for (int k = 0; k < methods.length; k++) {
  651. for (int i = 0; i < tableColumns.size(); i++) {
  652. if (methods[k].getName().equalsIgnoreCase(
  653. "set" + tableColumns.get(i))) {
  654. methods[k].invoke(obj, rs
  655. .getObject(tableColumns.get(i)));
  656. }
  657. }
  658. }
  659. }
  660. }
  661. rs.close();
  662. ps.close();
  663. rs = null;
  664. ps = null;
  665. } catch (Exception e) {
  666. e.printStackTrace();
  667. log.WriteLine("DButils.getEntity()", "getEntity error talbename:"
  668. + tableName);
  669. }
  670. return obj;
  671. }
  672.  
  673. /**
  674. *
  675. * @param tableName
  676. * \u6807\u7684\u540D\u5B57
  677. * @category \u8868\u4E0D\u5B58\u5728 1\u8868\u5B58\u5728
  678. * @return 0\u8868\u4E0D\u5B58\u5728 >=1\u8868\u5B58\u5728
  679. */
  680. public static boolean isTableExist(String tableName) {
  681. int v = getCount("SELECT count(table_name) FROM information_schema.TABLES WHERE table_name='"
  682. + tableName + "' ");
  683. if (v >= 1) {
  684. return true;
  685. } else {
  686. System.err.println("\u8868 \u4E0D\u5B58\u5728 table not exist");
  687. log.WriteLine("DButils.isTableExist()", "\u8868\u4E0D\u5B58\u5728");
  688. return false;
  689. }
  690. }
  691.  
  692. /**
  693. *
  694. * @category \u83B7\u53D6\u67D0\u4E2A\u8868\u4E2D\u6240\u6709\u7684\u5217\u540D
  695. * @param c
  696. * Person.class (\u7C7B\u540D\u4E0E\u8868\u540D\u4E00\u81F4)
  697. * @return List
  698. */
  699. public static List<String> getColumns(Class c) {
  700. List<String> list = new ArrayList<String>();
  701. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  702. if (!isTableExist(tableName)) {
  703. System.err.println("talbe is not exist");
  704. return list;
  705. }
  706. String sql = "select COLUMN_NAME from information_schema.columns where table_name='"
  707. + tableName + "'";
  708. try {
  709. ResultSet rs = getConnection().createStatement().executeQuery(sql);
  710. while (rs.next()) {
  711. if (!list.contains(rs.getString(1))) {
  712. list.add(rs.getString(1));// \u9632\u6B62\u4E0D\u540C\u6570\u636E\u5E93\u4E2D\u6709\u76F8\u540C\u7684\u8868\u540D
  713. }
  714. }
  715. rs.close();
  716. } catch (Exception e) {
  717. log.WriteLine("DButils.getColumns()", "getColumns error ");
  718. e.printStackTrace();
  719. }
  720. return list;
  721. }
  722.  
  723. /**
  724. * @category \u8FD4\u56DE\u5F53\u524D\u65F6\u95F4 String
  725. * @return String now system date yyyy/MM/dd hh:mm:ss
  726. */
  727. public static String getCurrentDataTime(String datetimeFormat) {
  728. Date date = new Date();
  729. SimpleDateFormat sdf = null;
  730. if (datetimeFormat == null || "".equals(datetimeFormat)) {
  731. sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
  732. }
  733. sdf.format(date);
  734. return sdf.format(date);
  735. }
  736.  
  737. /**
  738. * @category \u8FD4\u56DE\u5F53\u524D\u65F6\u95F4 String
  739. * @return String now system date
  740. */
  741. public static String getCurrentDataTime() {
  742. return getCurrentDataTime(null);
  743. }
  744.  
  745. /**
  746. * @category \u8FD4\u56DE\u6570\u636E\u5E93\u7684\u540D\u5B57
  747. * @param Person
  748. * .class
  749. * @return database name
  750. */
  751. public static String getDatabaseName(Class c) {
  752. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  753. try {
  754. ResultSet rs = getConnection().getMetaData().getPrimaryKeys(null,
  755. null, tableName);
  756. String result = null;
  757. if (rs.next()) {
  758. System.out.println("database:" + rs.getString(1));
  759. result = rs.getString(1);
  760. rs.close();
  761. rs = null;
  762. return result;
  763. }
  764.  
  765. } catch (Exception e) {
  766. System.err.println("\u83B7\u53D6\u6570\u636E\u5E93\u540D\u5931\u8D25");
  767. log.WriteLine("DButils.getDatabaseName()", "getDatabaseName error");
  768. exceptionPrint(e);
  769.  
  770. }
  771. return null;
  772. }
  773.  
  774. /**
  775. * @category \u8FD4\u56DE int auto_increment\u7684\u4E0B\u4E00\u4E2A\u81EA\u589E\u503C
  776. * @param c
  777. * Person\u3002class
  778. * @return int \u4E0B\u4E00\u4E2A\u81EA\u589E\u503C \u5982\u679C\u6CA1\u6709\u5219\u8FD4\u56DEnull
  779. */
  780. public static int getAutoIncremet(Class c) {
  781. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  782. if (!isTableExist(tableName)) {
  783. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  784. return -1;
  785. }
  786. int count = -1;
  787. try {
  788. ResultSet rs = getConnection().prepareStatement(
  789. "SELECT auto_increment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='"
  790. + getDatabaseName(c) + "' AND TABLE_NAME='"
  791. + tableName + "'").executeQuery();
  792. if (rs.next()) {
  793. count = rs.getInt(1);
  794. }
  795. rs.close();
  796. } catch (Exception e) {
  797. log.WriteLine("DButils.getAutoIncremet()", "getAutoIncremet error");
  798. e.printStackTrace();
  799. }
  800. return count;
  801. }
  802.  
  803. /**
  804. * @category \u67E5\u627E\u67D0\u4E00\u5217\u7684\u6240\u6709\u503C
  805. * @param c
  806. * Person.class
  807. * @param columnName
  808. * \u8981\u67E5\u627E\u7684\u67D0\u4E00\u5217\u7684\u5217\u540D
  809. * @return List<String> \u8FD4\u56DE\u67D0\u4E00\u5217\u7684\u6240\u6709\u503C
  810. */
  811. public static List<String> getColumnData(Class c, String columnName) {
  812. if (!getColumns(c).contains(columnName)) {
  813. System.err.println("\u5217\u540D'" + columnName + "'\u4E0D\u5B58\u5728");
  814. return null;
  815. }
  816. List<String> list = new ArrayList<String>();
  817. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  818. if (!isTableExist(tableName)) {
  819. System.err.println("talbe is not exist");
  820. return list;
  821. }
  822. String sql = "select " + columnName + " from " + tableName;
  823. try {
  824. ResultSet rs = getConnection().createStatement().executeQuery(sql);
  825. while (rs.next()) {
  826. list.add(rs.getString(1));
  827. }
  828. rs.close();
  829. } catch (Exception e) {
  830. log.WriteLine("DButils.getColumnData()", "getColumnData error");
  831. exceptionPrint(e);
  832. }
  833. return list;
  834. }
  835.  
  836. /**
  837. * @category \u6839\u636E\u6761\u4EF6\u67E5\u8BE2 \u8FD4\u56DEwhere columnName=value
  838. * @param c
  839. * Person.class \u4E14Person \u6240\u6709\u7684\u5C5E\u6027\u5FC5\u987B\u5168\u4E3A\u4E3Apublic\u7C7B\u578B\u6216\u8005\u5168\u90E8\u4E3Aprivate
  840. * @param columnName
  841. * \u8868\u4E2D\u7684\u67D0\u5B57\u6BB5
  842. * @param value
  843. * columnName\u5BF9\u5E94\u7684\u503C
  844. * @return List
  845. */
  846. public static List getEntitys(Class c, String columnName, Object value) {
  847. if (!getColumns(c).contains(columnName)) {
  848. System.err.println("\u5217\u540D'" + columnName + "'\u4E0D\u5B58\u5728");
  849. log.WriteLine("DButils.getEntitys()", "\u5217\u540D\u4E0D\u5B58\u5728 \u63A8\u51FA");
  850. return null;
  851. }
  852. List list = new ArrayList();
  853. PreparedStatement ps = null;
  854. ResultSet rs = null;
  855. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  856. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  857. Method[] methods = null;
  858. if (fields.length == 0) {
  859. fields = c.getDeclaredFields();// \u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  860. methods = c.getDeclaredMethods();// \u83B7\u53D6get set \u65B9\u6CD5
  861. }
  862. StringBuilder sql = new StringBuilder("select * from " + tableName
  863. + " where " + columnName + "=?");
  864. try {
  865. if (!isTableExist(tableName)) {
  866. System.err.println("\u8868\u4E0D\u5B58\u5728");
  867. return list;
  868. }
  869. ps = (PreparedStatement) getConnection().prepareStatement(
  870. sql.toString());
  871. ps.setObject(1, value);
  872. rs = ps.executeQuery();
  873. System.out.println("\n" + ps.toString().split(":")[1]);
  874. Object obj = null;
  875. while (rs.next()) {
  876. obj = c.newInstance();
  877.  
  878. if (fields.length > 0) {// \u5982\u679C\u7C7B \u7684\u5C5E\u6027\u4E3Apublic
  879. for (int k = 0; k < fields.length; k++) {
  880. fields[k].setAccessible(true);
  881. fields[k].set(obj, rs.getObject(k + 1));
  882. }
  883. } else {// \u5982\u679C\u7C7B \u7684\u5C5E\u6027\u4E3Aprivate
  884. for (int k = 0; k < methods.length / 2; k++) {
  885. methods[k * 2].invoke(obj, rs.getObject(k + 1));
  886. }
  887. }
  888. list.add(obj);
  889. }
  890. rs.close();
  891. ps.close();
  892. } catch (Exception e) {
  893. log.WriteLine("DButils.getEntitys()", "getEntitys error");
  894. e.printStackTrace();
  895. } finally {
  896. rs = null;
  897. ps = null;
  898. }
  899. return list;
  900. }
  901.  
  902. /**
  903. * @see \u83B7\u53D6\u6240\u6709\u7684\u6570\u636E
  904. * @param c
  905. * Person.class
  906. * @return List\u6240\u6709\u7684\u6570\u636E
  907. */
  908. public static List getAllEntitys(Class c) {
  909. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  910. if (!isTableExist(tableName)) {
  911. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  912. log.WriteLine("DButils.getAllEntitys()", tableName
  913. + " is not isExist! \u9000\u51FA");
  914.  
  915. return null;
  916. }
  917. List list = new ArrayList();
  918. PreparedStatement ps = null;
  919. ResultSet rs = null;
  920. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  921. if (fields.length == 0) {
  922. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  923. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  924. }
  925. StringBuilder sql = new StringBuilder("select * from " + tableName);
  926. try {
  927. if (!isTableExist(tableName)) {
  928. System.err.println("\u8868\u4E0D\u5B58\u5728");
  929. return list;
  930. }
  931. ps = (PreparedStatement) getConnection().prepareStatement(
  932. sql.toString());
  933.  
  934. rs = ps.executeQuery();
  935. System.out.println("\n" + ps.toString().split(":")[1]);
  936. Object obj = null;
  937. while (rs.next()) {
  938. obj = c.newInstance();
  939. for (int k = 0; k < fields.length; k++) {
  940. fields[k].setAccessible(true);
  941. fields[k].set(obj, rs.getObject(k + 1));
  942. }
  943. list.add(obj);
  944. }
  945. rs.close();
  946. ps.close();
  947. } catch (Exception e) {
  948. log.WriteLine("DButils.getAllEntitys()", "getAllEntitys error");
  949. } finally {
  950. rs = null;
  951. ps = null;
  952. }
  953. return list;
  954.  
  955. }
  956.  
  957. /**
  958. * @see \u83B7\u53D6\u6240\u6709\u7684\u6570\u636E
  959. * @param c
  960. * Person.class
  961. * @param columns
  962. * \u8981\u6392\u5E8F\u7684columns \u5982 Id\uFF0Cname \u6216\u5355\u72EC\u4E00\u4E2Aname
  963. * @param ascOrDesc
  964. * asc\u6216desc
  965. * @return List\u6240\u6709\u7684\u6570\u636E
  966. */
  967. public static List getAllEntitysOrderByColumns(Class c, String[] columns,
  968. String ascOrDesc) {
  969. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  970. if (!isTableExist(tableName)) {
  971. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  972. log.WriteLine("DButils.getAllEntitysOrderByColumns()", tableName
  973. + " is not isExist! \u9000\u51FA");
  974.  
  975. return null;
  976. }
  977. List<String> columnList = getColumns(c);
  978. for (int i = 0; i < columns.length; i++) {
  979. if (!columnList.contains(columns[i])) {
  980. System.err.println("\u5217\u540D'" + columns[i] + "'\u4E0D\u5B58\u5728");
  981. log.WriteLine("DButils.getAllEntitysOrderByColumns()",
  982. columns[i] + " is not isExist! \u9000\u51FA");
  983. return null;
  984. }
  985. }
  986. if (!ascOrDesc.equalsIgnoreCase("asc")
  987. && ascOrDesc.equalsIgnoreCase("desc")) {
  988. log.WriteLine("DButils.getAllEntitysOrderByColumns()", "\u6392\u5E8F\u5173\u952E\u5B57\u9519\u8BEF");
  989. return null;
  990. }
  991. List list = new ArrayList();
  992. PreparedStatement ps = null;
  993. ResultSet rs = null;
  994. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  995. if (fields.length == 0) {
  996. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  997. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  998. }
  999. StringBuilder sql = new StringBuilder("select * from " + tableName
  1000. + " order by ");
  1001. for (int i = 0; i < columns.length; i++) {
  1002. if (i < columns.length - 1) {
  1003. sql.append("" + columns[i] + ",");
  1004. } else {
  1005. sql.append("" + columns[i] + " " + ascOrDesc);
  1006. }
  1007. }
  1008. log.WriteLine("DButils.getAllEntitysOrderByColumn()", "sql:"
  1009. + sql.toString());
  1010. try {
  1011. if (!isTableExist(tableName)) {
  1012. System.err.println("\u8868\u4E0D\u5B58\u5728");
  1013. return list;
  1014. }
  1015. ps = (PreparedStatement) getConnection().prepareStatement(
  1016. sql.toString());
  1017.  
  1018. rs = ps.executeQuery();
  1019. System.out.println("\n" + ps.toString().split(":")[1]);
  1020. Object obj = null;
  1021. while (rs.next()) {
  1022. obj = c.newInstance();
  1023. for (int k = 0; k < fields.length; k++) {
  1024. fields[k].setAccessible(true);
  1025. fields[k].set(obj, rs.getObject(k + 1));
  1026. }
  1027. list.add(obj);
  1028. }
  1029. rs.close();
  1030. ps.close();
  1031. } catch (Exception e) {
  1032. log.WriteLine("DButils.getAllEntitysOrderByColumn()",
  1033. "getAllEntitysOrderByColumn error");
  1034. } finally {
  1035. rs = null;
  1036. ps = null;
  1037. }
  1038. return list;
  1039.  
  1040. }
  1041.  
  1042. /**
  1043. * @see \u83B7\u53D6\u6570\u636E\u4E2D\u7684\u67D0\u51E0\u6761\u8BB0\u5F55
  1044. * @param c
  1045. * Person.class
  1046. * @param fromNumber
  1047. * \u4ECE\u6570\u636E\u5E93\u7684\u7B2C\u51E0\u6761\u5F00\u59CB\uFF080\uFF0C1\uFF0C2\uFF0C3\uFF09
  1048. * @param number
  1049. * \u4ECEfromNumber\u5F00\u59CB\u83B7\u53D6\u591A\u5C11\u884C
  1050. * @return List
  1051. */
  1052. public static List getEntitysLimit(Class c, int fromNumber, int number) {
  1053. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1054. if (!isTableExist(tableName)) {
  1055. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  1056. return null;
  1057. }
  1058. List list = new ArrayList();
  1059. PreparedStatement ps = null;
  1060. ResultSet rs = null;
  1061. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  1062. if (fields.length == 0) {
  1063. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1064. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  1065. }
  1066. StringBuilder sql = new StringBuilder("select * from " + tableName)
  1067. .append(" limit ?
  1068.  
  1069. ,?");
  1070. try {
  1071. if (!isTableExist(tableName)) {
  1072. System.err.println("\u8868\u4E0D\u5B58\u5728");
  1073. return list;
  1074. }
  1075. ps = (PreparedStatement) getConnection().prepareStatement(
  1076. sql.toString());
  1077. ps.setInt(1, fromNumber);
  1078. ps.setInt(2, number);
  1079. rs = ps.executeQuery();
  1080. System.out.println("\n" + ps.toString().split(":")[1]);
  1081. log.WriteLine("DButils.getEntitysLimit()",
  1082. ps.toString().split(":")[1]);
  1083.  
  1084. Object obj = null;
  1085. while (rs.next()) {
  1086. obj = c.newInstance();
  1087. for (int k = 0; k < fields.length; k++) {
  1088. fields[k].setAccessible(true);
  1089. fields[k].set(obj, rs.getObject(k + 1));
  1090. }
  1091. list.add(obj);
  1092. }
  1093. rs.close();
  1094. ps.close();
  1095. } catch (Exception e) {
  1096. log.WriteLine("DButils.getEntitysLimit()", "getEntitysLimit error");
  1097. exceptionPrint(e);
  1098. } finally {
  1099. rs = null;
  1100. ps = null;
  1101. }
  1102. return list;
  1103.  
  1104. }
  1105.  
  1106. /**
  1107. * @category \u8FD4\u56DE\u8868\u4E2D\u6240\u6709\u7684\u4E3B\u952E
  1108. * @param c
  1109. * Person.class
  1110. * @return list
  1111. */
  1112. public static List<String> getPrimaryKeys(Class c) {
  1113. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1114. ResultSet rs = null;
  1115. List<String> list = new ArrayList<String>();
  1116. try {
  1117. rs = getConnection().getMetaData().getPrimaryKeys(null, null,
  1118. tableName);
  1119. while (rs.next()) {
  1120. list.add(rs.getString(4));
  1121. }
  1122. rs.close();
  1123. } catch (Exception e) {
  1124. log.WriteLine("DButils.getPrimaryKeys()", "getPrimaryKeys error");
  1125. exceptionPrint(e);
  1126. }
  1127. return list;
  1128. }
  1129.  
  1130. /**
  1131. * @category \u6839\u636E\u4E3B\u952E\u5220\u9664\u6570\u636E
  1132. * @param c
  1133. * Person.class
  1134. * @param primaryKey
  1135. * \u6309\u8868\u4E2D\u4E3B\u952E\u5220\u9664 \u5982\u679C\u4E3B\u952E\u4E3Aid\u3002name
  1136. * \u5219deleteByPrimaryKey(Person.class,1,"ctl");
  1137. */
  1138. public static void deleteByPrimaryKey(Class c, Object... primaryKey) {
  1139. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1140. List<String> primaryKeysList = getPrimaryKeys(c);
  1141. StringBuilder sb = new StringBuilder("delete from " + tableName
  1142. + " where ");
  1143. for (int i = 0; i < primaryKeysList.size(); i++) {
  1144. sb.append(primaryKeysList.get(i) + "=? and ");
  1145. }
  1146. sb.delete(sb.length() - 4, sb.length());
  1147. PreparedStatement ps = null;
  1148. try {
  1149. ps = getConnection().prepareStatement(sb.toString());
  1150. for (int i = 0; i < primaryKeysList.size(); i++) {
  1151. ps.setObject(i + 1, primaryKey[i]);
  1152. }
  1153. ps.executeUpdate();
  1154. System.out.println(ps.toString().split(":")[1].trim());
  1155. ps.close();
  1156. } catch (Exception e) {
  1157. log.WriteLine("DButils.deleteByPrimaryKey()",
  1158. "deleteByPrimaryKey error");
  1159. ps = null;
  1160. exceptionPrint(e);
  1161. }
  1162.  
  1163. }
  1164.  
  1165. /**
  1166. * @see \u5220\u9664\u5217\u540D\u4E3AcolumnName\u5217\u503C\u4E3AcolumnValue\u7684\u6570\u636E
  1167. * @param c
  1168. * Person.class
  1169. * @param columnName
  1170. * \u5217\u540D
  1171. * @param columnValue
  1172. * \u5217\u540D\u5BF9\u5E94\u7684\u503C
  1173. */
  1174. public static void deleteByColumn(Class c, String columnName,
  1175. Object columnValue) {
  1176. if (!getColumns(c).contains(columnName)) {
  1177. System.err.println("\u5217\u540D'" + columnName + "'" + "\u4E0D\u5B58\u5728");
  1178. return;
  1179. }
  1180. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1181. StringBuilder sql = new StringBuilder("delete from ").append(tableName)
  1182. .append(" where ").append(columnName + "=?");
  1183. try {
  1184. PreparedStatement ps = getConnection().prepareStatement(
  1185. sql.toString());
  1186. ps.setObject(1, columnValue);
  1187. // ps.setObject(2,columnValue );
  1188. ps.executeUpdate();
  1189. System.out.println(ps.toString().split(":")[1].trim());
  1190. ps.close();
  1191. } catch (Exception e) {
  1192. log.WriteLine("DButils.deleteByColumn()", "deleteByColumn error");
  1193. System.err.println("delete error");
  1194. e.printStackTrace();
  1195. }
  1196. }
  1197.  
  1198. /**
  1199. * @category \u4ECE\u5B9E\u4F53\u7C7B\u5BF9\u8C61\u4E2D\u83B7\u53D6\u4E3B\u952E\u7684\u5217\u540D\u548Cvalue \u5229\u7528\u7684\u662Ffiled\u83B7\u53D6
  1200. * @param c
  1201. * Person.class
  1202. * @param obj
  1203. * \u5B9E\u4F53\u5BF9\u8C61
  1204. * @return \u4ECE\u6570\u636E\u5E93\u4E2D\u83B7\u53D6\u4E3B\u952E \u7136\u540E\u4E0E\u5B9E\u4F53\u7C7B\u76F8\u5339\u914D\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u4E2D\u7684\u4E3B\u952E\u540D\u548C\u503C
  1205. */
  1206. public static List<KeyValue> getEntityPrimaryKeyValueField(Class c,
  1207. Object obj) {
  1208. List<KeyValue> keyValues = new ArrayList<KeyValue>();
  1209. List<String> primaryKeys = getPrimaryKeys(c);
  1210. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684\u5C5E\u6027
  1211. for (int i = 0; i < fields.length; i++) {// \u6240\u6709\u5C5E\u6027\u4E3Apublic
  1212. try {
  1213. for (int j = 0; j < primaryKeys.size(); j++) {
  1214. if (primaryKeys.get(j)
  1215. .equalsIgnoreCase(fields[i].getName())) {
  1216. KeyValue kv = new KeyValue();
  1217. kv.setKey(fields[i].getName());
  1218. kv.setValue(fields[i].get(obj));
  1219. keyValues.add(kv);
  1220. // System.out.println(fields[i].getName() + ":"
  1221. // + fields[i].get(obj));
  1222. }
  1223. }
  1224. } catch (Exception e) {
  1225. log.WriteLine("DButils.getEntityPrimaryKeyValueField()",
  1226. "getEntityPrimaryKeyValueField error");
  1227. exceptionPrint(e);
  1228. }
  1229. }
  1230. if (fields.length == 0) {// \u5F53\u7C7B\u7684\u5C5E\u6027\u90FD\u662Fprivate\u65F6
  1231. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1232. fields = c.getDeclaredFields();// //\u83B7\u5F97\u5BF9\u8C61\u6240\u6709\u5C5E\u6027
  1233. for (int i = 0; i < fields.length; i++) {
  1234. try {
  1235. fields[i].setAccessible(true);// \u4FEE\u6539\u8BBF\u95EE\u6743\u9650 \u53EF\u4EE5\u8BBF\u95EEprivate
  1236. for (int j = 0; j < primaryKeys.size(); j++) {
  1237. if (primaryKeys.get(j).equalsIgnoreCase(
  1238. fields[i].getName())) {
  1239. KeyValue kv = new KeyValue();
  1240. kv.setKey(fields[i].getName());
  1241. kv.setValue(fields[i].get(obj));// \u8BFB\u53D6\u5C5E\u6027\u503C
  1242. keyValues.add(kv);
  1243. // System.out.println(fields[i].getName() + ":"
  1244. // + fields[i].get(obj));
  1245. }
  1246. }
  1247. } catch (Exception e) {
  1248. log.WriteLine("DButils.getEntityPrimaryKeyValueField()",
  1249. "getEntityPrimaryKeyValueField error");
  1250. exceptionPrint(e);
  1251. }
  1252. }
  1253. }
  1254. return keyValues;
  1255. }
  1256.  
  1257. /**
  1258. * @category \u4ECE\u5B9E\u4F53\u7C7B\u5BF9\u8C61\u4E2D\u83B7\u53D6\u4E3B\u952E\u7684\u5217\u540D\u548Cvalue \u5229\u7528\u7684\u662FMethod get\u65B9\u6CD5\u83B7\u53D6
  1259. * @param c
  1260. * Person.class
  1261. * @param obj
  1262. * \u5B9E\u4F53\u5BF9\u8C61
  1263. * @return \u4ECE\u6570\u636E\u5E93\u4E2D\u83B7\u53D6\u4E3B\u952E \u7136\u540E\u4E0E\u5B9E\u4F53\u7C7B\u76F8\u5339\u914D\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u4E2D\u7684\u4E3B\u952E\u540D\u548C\u503C
  1264. */
  1265. public static List<KeyValue> getEntityPrimaryKeyValueMethod(Class c,
  1266. Object obj) {
  1267. List<KeyValue> keyValues = new ArrayList<KeyValue>();
  1268. List<String> primaryKeys = getPrimaryKeys(c);
  1269. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684\u5C5E\u6027
  1270. for (int i = 0; i < fields.length; i++) {// \u6240\u6709\u5C5E\u6027\u4E3Apublic
  1271. try {
  1272. for (int j = 0; j < primaryKeys.size(); j++) {
  1273. if (primaryKeys.get(j)
  1274. .equalsIgnoreCase(fields[i].getName())) {
  1275. KeyValue kv = new KeyValue();
  1276. kv.setKey(fields[i].getName());
  1277. kv.setValue(fields[i].get(obj));
  1278. keyValues.add(kv);
  1279. System.out.println(fields[i].getName() + ":"
  1280. + fields[i].get(obj));
  1281. }
  1282. }
  1283. } catch (Exception e) {
  1284. e.printStackTrace();
  1285. }
  1286. }
  1287. if (fields.length == 0) {// \u5F53\u7C7B\u7684\u5C5E\u6027\u90FD\u662Fprivate\u65F6
  1288. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1289. fields = c.getDeclaredFields();// //\u83B7\u5F97\u5BF9\u8C61\u6240\u6709\u5C5E\u6027
  1290. for (int i = 0; i < fields.length; i++) {
  1291. try {
  1292. fields[i].setAccessible(true);// \u4FEE\u6539\u8BBF\u95EE\u6743\u9650 \u53EF\u4EE5\u8BBF\u95EEprivate
  1293. for (int j = 0; j < primaryKeys.size(); j++) {
  1294. if (primaryKeys.get(j).equalsIgnoreCase(
  1295. fields[i].getName())) {
  1296. KeyValue kv = new KeyValue();
  1297. kv.setKey(fields[i].getName());
  1298. kv.setValue(fields[i].get(obj));// \u8BFB\u53D6\u5C5E\u6027\u503C
  1299. keyValues.add(kv);
  1300. System.out.println(fields[i].getName() + ":"
  1301. + fields[i].get(obj));
  1302. }
  1303. }
  1304. } catch (Exception e) {
  1305. e.printStackTrace();
  1306. }
  1307. }
  1308. }
  1309. return keyValues;
  1310. }
  1311.  
  1312. /**
  1313. * @category \u4ECE\u5B9E\u4F53\u7C7B\u5BF9\u8C61\u4E2D\u6309\u987A\u5E8F\u83B7\u53D6\u6240\u6709\u4E3B\u952E\u7684value
  1314. * @param c
  1315. * Person.class
  1316. * @param obj
  1317. * \u5B9E\u4F53\u5BF9\u8C61
  1318. * @return \u4ECE\u6570\u636E\u5E93\u4E2D\u83B7\u53D6\u4E3B\u952E \u7136\u540E\u4E0E\u5B9E\u4F53\u7C7B\u76F8\u5339\u914D\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u4E2D\u7684\u4E3B\u952E\u503C
  1319. */
  1320. public static List<Object> getEntityPKValues(Class c, Object obj) {
  1321. List<Object> keyValues = new ArrayList<Object>();
  1322. List<String> primaryKeys = getPrimaryKeys(c);
  1323. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684\u5C5E\u6027
  1324. for (int i = 0; i < fields.length; i++) {// \u6240\u6709\u5C5E\u6027\u4E3Apublic
  1325. try {
  1326. for (int j = 0; j < primaryKeys.size(); j++) {
  1327. if (primaryKeys.get(j)
  1328. .equalsIgnoreCase(fields[i].getName())) {
  1329. keyValues.add(fields[i].get(obj));
  1330. System.out.println(fields[i].getName() + ":"
  1331. + fields[i].get(obj));
  1332. }
  1333. }
  1334. } catch (Exception e) {
  1335. log.WriteLine("DButils.getEntityPKValues()",
  1336. "getEntityPKValues error");
  1337. exceptionPrint(e);
  1338. }
  1339. }
  1340. if (fields.length == 0) {// \u5F53\u7C7B\u7684\u5C5E\u6027\u90FD\u662Fprivate\u65F6
  1341. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1342. fields = c.getDeclaredFields();// //\u83B7\u5F97\u5BF9\u8C61\u6240\u6709\u5C5E\u6027
  1343. for (int i = 0; i < fields.length; i++) {
  1344. try {
  1345. fields[i].setAccessible(true);// \u4FEE\u6539\u8BBF\u95EE\u6743\u9650 \u53EF\u4EE5\u8BBF\u95EEprivate
  1346. for (int j = 0; j < primaryKeys.size(); j++) {
  1347. if (primaryKeys.get(j).equalsIgnoreCase(
  1348. fields[i].getName())) {
  1349. keyValues.add(fields[i].get(obj));
  1350. System.out.println(fields[i].getName() + ":"
  1351. + fields[i].get(obj));
  1352. }
  1353. }
  1354. } catch (Exception e) {
  1355. log.WriteLine("DButils.getEntityPKValues()",
  1356. "getEntityPKValues error");
  1357. exceptionPrint(e);
  1358. }
  1359. }
  1360. }
  1361. return keyValues;
  1362. }
  1363.  
  1364. /**
  1365. * @see \u5982\u679C\u6709\u4E3B\u952E\u5219\u6267\u884C\u66F4\u884C\uFF0C\u6CA1\u6709\u4E3B\u952E\u5219\u6267\u884C\u63D2\u5165\u64CD\u4F5C
  1366. * @category \u5C06\u5B9E\u4F53\u7C7B\u5BF9\u8C61\u8DDF\u65B0\u5230\u6570\u636E\u5E93\u4E2D\uFF0C\u5982\u679C\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027\u4E0E\u6570\u636E\u4E2D\u4E0D\u4E00\u81F4\u5219\u66F4\u65B0\uFF0C\u5BF9\u8C61\u67D0\u5C5E\u6027\u4E3A\u7A7A\u5219\u4E0D\u66F4\u6539\u8BE5\u5C5E\u6027
  1367. * @param c
  1368. * Person.class
  1369. * @param obj
  1370. * person
  1371. */
  1372. public static void updateEntity(Class c, Object obj) {
  1373. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1374. List<String> primaryKeys = getPrimaryKeys(c);
  1375. List<KeyValue> keyValues = getEntityPrimaryKeyValueField(c, obj);
  1376. List<String> columns = getColumns(c);
  1377. List<Object> values = getEntityPKValues(c, obj);
  1378. Object tableDate = getEntity(c, values.toArray(new Object[] {}));
  1379. // System.out.println(o);
  1380. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684\u5C5E\u6027
  1381. System.out.println("\u6570\u636E\u5E93\u6BD4\u5BF9\u524D:" + obj);
  1382. System.out.println("\u6570\u636E\u5E93\u4E2D\u6570\u636E:" + tableDate);
  1383. for (int i = 0; i < fields.length; i++) {// \u6240\u6709\u5C5E\u6027\u4E3Apublic
  1384. try {
  1385. for (int j = 0; j < columns.size(); j++) {
  1386. if (columns.get(j).equalsIgnoreCase(fields[i].getName())) {
  1387. System.out.println(fields[i].getName() + ":"
  1388. + fields[i].get(obj));
  1389. if (fields[i].get(obj) == null) {
  1390. fields[i].set(obj, fields[i].get(tableDate));
  1391. } else if (!fields[i].get(obj).equals(
  1392. fields[i].get(tableDate))) {
  1393. continue;
  1394. }
  1395. }
  1396. }
  1397. } catch (Exception e) {
  1398. log.WriteLine("DButils.updateEntity()", "updateEntity error");
  1399. exceptionPrint(e);
  1400. }
  1401. }
  1402.  
  1403. if (fields.length == 0) {// \u5F53\u7C7B\u7684\u5C5E\u6027\u90FD\u662Fprivate\u65F6
  1404. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1405. fields = c.getDeclaredFields();// //\u83B7\u5F97\u5BF9\u8C61\u6240\u6709\u5C5E\u6027
  1406. for (int i = 0; i < fields.length; i++) {
  1407. try {
  1408. fields[i].setAccessible(true);// \u4FEE\u6539\u8BBF\u95EE\u6743\u9650 \u53EF\u4EE5\u8BBF\u95EEprivate
  1409. for (int j = 0; j < columns.size(); j++) {
  1410. if (columns.get(j)
  1411. .equalsIgnoreCase(fields[i].getName())) {
  1412. System.out.println(fields[i].getName() + ":"
  1413. + fields[i].get(obj));
  1414. if (fields[i].get(obj) == null) {
  1415. fields[i].set(obj, fields[i].get(tableDate));
  1416. } else if (!fields[i].get(obj).equals(
  1417. fields[i].get(tableDate))) {
  1418. continue;
  1419. }
  1420. }
  1421. }
  1422. } catch (Exception e) {
  1423. log.WriteLine("DButils.updateEntity()",
  1424. "updateEntity error");
  1425. }
  1426. }
  1427. }
  1428. System.out.println("\u6570\u636E\u5E93\u6BD4\u5BF9\u540E:" + obj);
  1429. insertEntity(c, obj);
  1430. }
  1431.  
  1432. static class InitJFrame {
  1433. private InitJFrame(String databasetype) {
  1434. this(null,databasetype);
  1435. }
  1436.  
  1437. private InitJFrame(final String jfTitle,String databasetype) {
  1438. initJFrame_mysql(jfTitle, databasetype);
  1439. initJFrame_oracle(jfTitle, databasetype);
  1440. }
  1441.  
  1442. private void initJFrame_oracle(final String jfTitle, String databasetype) {
  1443. if(databasetype.equals("oracle")){
  1444. Thread t_oracle = new Thread() {
  1445. public void run() {
  1446. String title;
  1447. Font fontGlobal = new Font("\u6977\u4F53", 11, 10);
  1448. if (jfTitle != null && !"".equals(jfTitle)
  1449. && !"null".equals(jfTitle)) {
  1450. title = "oracle\u6570\u636E\u5E93\u521D\u59CB\u5316:" + jfTitle;
  1451. } else {
  1452. title = "oracle\u6570\u636E\u5E93\u521D\u59CB\u5316";
  1453. }
  1454. JFrame jf = new JFrame(title);
  1455.  
  1456. jf.setVisible(true);
  1457. jf.setBounds(600, 260, 266, 166);
  1458. // jf.setBounds(600, 260, 266, 366);
  1459. jf.setVisible(true);
  1460. // jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  1461. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  1462. jf.setResizable(false);
  1463.  
  1464. JPanel jpanel = new JPanel();
  1465. jpanel.setBounds(0, 0, 300, 600);
  1466. jf.add(jpanel);
  1467. jpanel.setBackground(new Color(199, 237, 204));
  1468. jpanel.setLayout(null);
  1469.  
  1470. JLabel jls2 = new JLabel("\u4E3B\u673A\u540D/ip:");
  1471. jls2.setBounds(0, 5, 50, 45);
  1472. jpanel.add(jls2);
  1473. jls2.setFont(fontGlobal);
  1474.  
  1475. final JTextField jtfip = new JTextField(18);
  1476. jtfip.setBounds(50, 17, 100, 20);
  1477. jpanel.add(jtfip);
  1478. jtfip.setText("127.0.0.1");
  1479.  
  1480. JLabel jls3 = new JLabel("\u7AEF\u53E3:");
  1481. jls3.setBounds(155, 5, 50, 45);
  1482. jpanel.add(jls3);
  1483. jls3.setFont(fontGlobal);
  1484.  
  1485. final JTextField jtfport = new JTextField(15);
  1486. jtfport.setBounds(180, 17, 45, 20);
  1487. jpanel.add(jtfport);
  1488. jtfport.setText("1521");
  1489.  
  1490. JLabel jls4 = new JLabel("\u7528\u6237\u540D:");
  1491. jls4.setBounds(16, 35, 50, 45);
  1492. jpanel.add(jls4);
  1493. jls4.setFont(fontGlobal);
  1494.  
  1495. final JTextField jtfip1 = new JTextField(18);
  1496. jtfip1.setBounds(50, 46, 58, 20);
  1497. jpanel.add(jtfip1);
  1498. jtfip1.setText("system");
  1499.  
  1500. JLabel jls5 = new JLabel("\u5BC6\u7801:");
  1501. jls5.setBounds(125, 35, 50, 45);
  1502. jpanel.add(jls5);
  1503. jls5.setFont(fontGlobal);
  1504.  
  1505. final JPasswordField jtfport1 = new JPasswordField(15);
  1506. jtfport1.setBounds(150, 46, 75, 20);
  1507. jpanel.add(jtfport1);
  1508. jtfport1.setText("system");
  1509.  
  1510. final JLabel jls6 = new JLabel("SID:");
  1511. jls6.setBounds(26, 65, 50, 45);
  1512. jpanel.add(jls6);
  1513. jls6.setFont(fontGlobal);
  1514.  
  1515. final JTextField jtfip11 = new JTextField(18);
  1516. jtfip11.setBounds(50, 77, 58, 20);
  1517. jpanel.add(jtfip11);
  1518. jtfip11.setText("fastatm");
  1519.  
  1520. // JLabel jls51 = new JLabel("\u7F16\u7801:");
  1521. // jls51.setBounds(123, 65, 50, 45);
  1522. // jpanel.add(jls51);
  1523. // jls51.setFont(fontGlobal);
  1524. //
  1525. // final JTextField jtfport11 = new JTextField(15);
  1526. // jtfport11.setBounds(150, 77, 75, 20);
  1527. // jpanel.add(jtfport11);
  1528. // jtfport11.setText("utf-8");
  1529.  
  1530. final JButton linkBtn = new JButton("\u521D\u59CB\u5316DButils\u5DE5\u5177\u7C7B");
  1531. linkBtn.setBounds(56, 111, 150, 20);
  1532. jpanel.add(linkBtn);
  1533. linkBtn.setMargin(new Insets(0, 0, 0, 0));// \u8FD9\u6837\u8BBE\u7F6Ebutton\u4E2D\u7684\u5B57\u4F53\u4E0Ebutton\u65E0\u4E0A\u4E0B\u8FB9\u8DDD
  1534. linkBtn.setFont(fontGlobal);
  1535. MouseAdapter linkServerListener = new MouseAdapter() {
  1536. public void mouseClicked(MouseEvent e) {
  1537. String ip = jtfip.getText().trim();
  1538. int port = Integer.parseInt(jtfport.getText()
  1539. .trim());
  1540. username = jtfip1.getText().trim();
  1541. password = jtfport1.getText().trim();
  1542. String sid = jtfip11.getText().trim();
  1543. //String code = jtfport11.getText().trim();
  1544. driver = "oracle.jdbc.driver.OracleDriver";
  1545. url = "jdbc:oracle:thin:@" + ip + ":" + port + ":"
  1546. + sid;
  1547. //javax.swing.JOptionPane.showMessageDialog(null,username+" "+password+" "+url);
  1548. // RegisterUtil.putStringSystemRoot("oracle.driver",
  1549. // driver);
  1550. // RegisterUtil.putStringSystemRoot("oracle.url", url);
  1551. // RegisterUtil.putStringSystemRoot("oracle.username",
  1552. // username);
  1553. // RegisterUtil.putStringSystemRoot("oracle.password",
  1554. // password);
  1555. System.out.println(RegisterUtil
  1556. .getStringFromSystemRoot("oracle.driver"));
  1557. System.out.println(driver);
  1558. System.out.println(url);
  1559. System.out.println(username);
  1560. System.out.println(password);
  1561. logger.info(driver);
  1562. try {
  1563. conn = DriverManager.getConnection(url,
  1564. username, password);
  1565. if (conn != null) {
  1566. System.out.println(conn);
  1567. conn.setAutoCommit(getAutoCommit());
  1568. connHolder.set(conn);
  1569. linkBtn.setText("\u521D\u59CB\u5316\u6210\u529F\uFF01\u8BF7\u5173\u95ED\u7A97\u4F53!");
  1570. //RegisterUtil.putIntSystemRoot("isInit", 0);
  1571. }
  1572. } catch (Exception e2) {
  1573. logger.error(e2.getMessage());
  1574. }
  1575. finally{
  1576. if(conn!=null){
  1577. try {
  1578. conn.close();
  1579. } catch (SQLException e1) {
  1580. logger.error(e1.getMessage());
  1581. }
  1582. }
  1583. }
  1584. }
  1585. };
  1586. linkBtn.addMouseListener(linkServerListener);
  1587. }
  1588. };
  1589. t_oracle.start();
  1590. }
  1591.  
  1592. }
  1593.  
  1594. private void initJFrame_mysql(final String jfTitle, String databasetype) {
  1595. if(databasetype.equals("mysql")){
  1596. Thread t_mysql = new Thread() {
  1597. public void run() {
  1598. String title;
  1599. Font fontGlobal = new Font("\u6977\u4F53", 11, 10);
  1600. if (jfTitle != null && !"".equals(jfTitle)
  1601. && !"null".equals(jfTitle)) {
  1602. title = "mysql\u6570\u636E\u5E93\u521D\u59CB\u5316:" + jfTitle;
  1603. } else {
  1604. title = "mysql\u6570\u636E\u5E93\u521D\u59CB\u5316";
  1605. }
  1606. JFrame jf = new JFrame(title);
  1607.  
  1608. jf.setVisible(true);
  1609. jf.setBounds(600, 260, 266, 166);
  1610. // jf.setBounds(600, 260, 266, 366);
  1611. jf.setVisible(true);
  1612. jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  1613. jf.setResizable(false);
  1614.  
  1615. JPanel jpanel = new JPanel();
  1616. jpanel.setBounds(0, 0, 300, 600);
  1617. jf.add(jpanel);
  1618. jpanel.setBackground(new Color(199, 237, 204));
  1619. jpanel.setLayout(null);
  1620.  
  1621. JLabel jls2 = new JLabel("\u4E3B\u673A\u540D/ip:");
  1622. jls2.setBounds(0, 5, 50, 45);
  1623. jpanel.add(jls2);
  1624. jls2.setFont(fontGlobal);
  1625.  
  1626. final JTextField jtfip = new JTextField(18);
  1627. jtfip.setBounds(50, 17, 100, 20);
  1628. jpanel.add(jtfip);
  1629. jtfip.setText("127.0.0.1");
  1630.  
  1631. JLabel jls3 = new JLabel("\u7AEF\u53E3:");
  1632. jls3.setBounds(155, 5, 50, 45);
  1633. jpanel.add(jls3);
  1634. jls3.setFont(fontGlobal);
  1635.  
  1636. final JTextField jtfport = new JTextField(15);
  1637. jtfport.setBounds(180, 17, 45, 20);
  1638. jpanel.add(jtfport);
  1639. jtfport.setText("3306");
  1640.  
  1641. JLabel jls4 = new JLabel("\u7528\u6237\u540D:");
  1642. jls4.setBounds(16, 35, 50, 45);
  1643. jpanel.add(jls4);
  1644. jls4.setFont(fontGlobal);
  1645.  
  1646. final JTextField jtfip1 = new JTextField(18);
  1647. jtfip1.setBounds(50, 46, 58, 20);
  1648. jpanel.add(jtfip1);
  1649. jtfip1.setText("root");
  1650.  
  1651. JLabel jls5 = new JLabel("\u5BC6\u7801:");
  1652. jls5.setBounds(125, 35, 50, 45);
  1653. jpanel.add(jls5);
  1654. jls5.setFont(fontGlobal);
  1655.  
  1656. final JPasswordField jtfport1 = new JPasswordField(15);
  1657. jtfport1.setBounds(150, 46, 75, 20);
  1658. jpanel.add(jtfport1);
  1659. jtfport1.setText("root");
  1660.  
  1661. JLabel jls6 = new JLabel("\u6570\u636E\u5E93\u540D:");
  1662. jls6.setBounds(6, 65, 50, 45);
  1663. jpanel.add(jls6);
  1664. jls6.setFont(fontGlobal);
  1665.  
  1666. final JTextField jtfip11 = new JTextField(18);
  1667. jtfip11.setBounds(50, 77, 58, 20);
  1668. jpanel.add(jtfip11);
  1669. jtfip11.setText("test");
  1670.  
  1671. JLabel jls51 = new JLabel("\u7F16\u7801:");
  1672. jls51.setBounds(123, 65, 50, 45);
  1673. jpanel.add(jls51);
  1674. jls51.setFont(fontGlobal);
  1675.  
  1676. final JTextField jtfport11 = new JTextField(15);
  1677. jtfport11.setBounds(150, 77, 75, 20);
  1678. jpanel.add(jtfport11);
  1679. jtfport11.setText("utf-8");
  1680.  
  1681. final JButton linkBtn = new JButton("\u521D\u59CB\u5316DButils\u5DE5\u5177\u7C7B");
  1682. linkBtn.setBounds(56, 111, 150, 20);
  1683. jpanel.add(linkBtn);
  1684. linkBtn.setMargin(new Insets(0, 0, 0, 0));// \u8FD9\u6837\u8BBE\u7F6Ebutton\u4E2D\u7684\u5B57\u4F53\u4E0Ebutton\u65E0\u4E0A\u4E0B\u8FB9\u8DDD
  1685. linkBtn.setFont(fontGlobal);
  1686. MouseAdapter linkServerListener = new MouseAdapter() {
  1687. public void mouseClicked(MouseEvent e) {
  1688. String ip = jtfip.getText().trim();
  1689. int port = Integer.parseInt(jtfport.getText()
  1690. .trim());
  1691. username = jtfip1.getText().trim();
  1692. password = jtfport1.getText().trim();
  1693. String databaseName = jtfip11.getText().trim();
  1694. String code = jtfport11.getText().trim();
  1695. driver = "com.mysql.jdbc.Driver";
  1696. url = "jdbc:mysql://" + ip + ":" + port + "/"
  1697. + databaseName
  1698. + "?unicode\\=true&characterEncoding\\="
  1699. + code;
  1700. RegisterUtil.putStringSystemRoot("mysql.driver",
  1701. driver);
  1702. RegisterUtil.putStringSystemRoot("mysql.url", url);
  1703. RegisterUtil.putStringSystemRoot("mysql.username",
  1704. username);
  1705. RegisterUtil.putStringSystemRoot("mysql.password",
  1706. password);
  1707. System.out.println(RegisterUtil
  1708. .getStringFromSystemRoot("mysql.driver"));
  1709. System.out.println(driver);
  1710. System.out.println(url);
  1711. System.out.println(username);
  1712. System.out.println(password);
  1713.  
  1714. try {
  1715. conn = DriverManager.getConnection(url,
  1716. username, password);
  1717. if (conn != null) {
  1718. conn.setAutoCommit(getAutoCommit());
  1719. connHolder.set(conn);
  1720. linkBtn.setText("\u521D\u59CB\u5316\u6210\u529F\uFF01\u8BF7\u5173\u95ED\u7A97\u4F53");
  1721. RegisterUtil.putIntSystemRoot("isInit", 0);
  1722. }
  1723. } catch (Exception e2) {
  1724. e2.printStackTrace();
  1725. }
  1726. }
  1727. };
  1728. linkBtn.addMouseListener(linkServerListener);
  1729. }
  1730. };
  1731. t_mysql.start();
  1732. }
  1733. }
  1734. }
  1735.  
  1736. /**
  1737. * @category \u83B7\u53D6\u6240\u6709\u7684\u6570\u636E\u5E93\u540D
  1738. * @return List<String>
  1739. */
  1740. public static List<String> getAllDatabaseNames() {
  1741. List<String> list = new ArrayList<String>();
  1742. try {
  1743. ResultSet rs = DButils.getConnection().prepareStatement(
  1744. "show databases").executeQuery();
  1745. while (rs.next()) {
  1746. list.add(rs.getString(1));
  1747. }
  1748. rs.close();
  1749. } catch (SQLException e) {
  1750. init();
  1751. log.WriteLine("DButils.getAllDatabaseNames()",
  1752. "getAllDatabaseNames error");
  1753. exceptionPrint(e);
  1754. }
  1755. return list;
  1756.  
  1757. }
  1758.  
  1759. /**
  1760. * @category \u7ED9\u8DDDsql\u8BED\u53E5\u8FD4\u56DEResultSet\u96C6\u5408
  1761. * @param sql\u8BED\u53E5
  1762. * sql
  1763. * @return \u67E5\u8BE2\u8FD4\u56DE\u7684\u96C6\u5408
  1764. */
  1765. public static ResultSet getResultSet(String sql) {
  1766. ResultSet rs = null;
  1767. try {
  1768. rs = getConnection().createStatement().executeQuery(sql);
  1769. } catch (SQLException e) {
  1770. log.WriteLine("DButils.getResultSet()", "getResultSet error");
  1771. exceptionPrint(e);
  1772. }
  1773. return rs;
  1774. }
  1775.  
  1776. /**
  1777. * @category \u6279\u5904\u7406sqkl\u8BED\u53E5
  1778. * @param sqls
  1779. * \u8981\u6267\u884C\u7684sql\u8BED\u53E5
  1780. * @return int[] \u6267\u884CBatch\u540E\u7684\u6570\u7EC4
  1781. */
  1782. public static int[] updateStatement(String[] sqls) {
  1783. Statement st = null;
  1784. int result[] = null;
  1785. try {
  1786. st = getConnection().createStatement();
  1787. for (int i = 0; i < sqls.length; i++) {
  1788. st.addBatch(sqls[i]);
  1789. }
  1790. result = st.executeBatch();
  1791. st.close();
  1792. st = null;
  1793. } catch (SQLException e) {
  1794. st = null;
  1795. log.WriteLine("DButils.update()", "update error");
  1796. exceptionPrint(e);
  1797. }
  1798. return result;
  1799. }
  1800.  
  1801. /**
  1802. *
  1803. * @param c
  1804. * Person class
  1805. * @param fromNumber
  1806. * litmi from
  1807. * @param number
  1808. * to
  1809. * @param columnName
  1810. * \u8868\u4E2D\u7684\u5217\u540D
  1811. * @param orderby
  1812. * \u6309\u4EC0\u4E48\u6392\u5E8F
  1813. * @return
  1814. */
  1815. public static List getEntitysLimitOderBy(Class c, int fromNumber,
  1816. int number, String columnName, String orderby) {
  1817. String tableName = c.getSimpleName().toLowerCase();// person \u8868\u7684\u540D\u5B57
  1818. if (!isTableExist(tableName)) {
  1819. System.err.println("\u8868'" + tableName + "'\u4E0D\u5B58\u5728");
  1820. return null;
  1821. }
  1822. List<String> columnList = getColumns(c);
  1823. if (!columnList.contains(columnName)) {
  1824. System.err.println("\u5217\u540D'" + columnName + "'\u4E0D\u5B58\u5728");
  1825. log.WriteLine("DButils.getEntitysLimitOderBy()", columnName
  1826. + " is not isExist! \u9000\u51FA");
  1827. return null;
  1828. }
  1829. if (orderby == null
  1830. || (!orderby.equalsIgnoreCase("asc") && !orderby
  1831. .equalsIgnoreCase("desc"))) {
  1832. log.WriteLine("DButils.getEntitysLimitOderBy()", "\u6392\u5E8F\u5173\u952E\u5B57\u9519\u8BEF");
  1833. return null;
  1834. }
  1835. List list = new ArrayList();
  1836. PreparedStatement ps = null;
  1837. ResultSet rs = null;
  1838. Field[] fields = c.getFields();// \u83B7\u53D6\u6240\u6709\u7684public\u5C5E\u6027
  1839. if (fields.length == 0) {
  1840. // fields=c.getDeclaredFields();//\u83B7\u53D6\u6240\u6709\u7684private\u5C5E\u6027
  1841. fields = c.getDeclaredFields();// \u83B7\u53D6get set \u65B9\u6CD5
  1842. }
  1843. StringBuilder sql = new StringBuilder("select * from ").append(
  1844. tableName).append(" order by ").append(columnName + " ")
  1845. .append(orderby).append(" limit ?,?");
  1846. log.WriteLine("DButils.getEntitysLimitOderBy()", "sql:"
  1847. + sql.toString());
  1848. try {
  1849. if (!isTableExist(tableName)) {
  1850. System.err.println("\u8868\u4E0D\u5B58\u5728");
  1851. return list;
  1852. }
  1853. ps = (PreparedStatement) getConnection().prepareStatement(
  1854. sql.toString());
  1855. ps.setInt(1, fromNumber);
  1856. ps.setInt(2, number);
  1857. rs = ps.executeQuery();
  1858. System.out.println("\n" + ps.toString().split(":")[1]);
  1859. log.WriteLine("DButils.getEntitysLimitOderBy()", ps.toString()
  1860. .split(":")[1]);
  1861.  
  1862. Object obj = null;
  1863. while (rs.next()) {
  1864. obj = c.newInstance();
  1865. for (int k = 0; k < fields.length; k++) {
  1866. fields[k].setAccessible(true);
  1867. fields[k].set(obj, rs.getObject(k + 1));
  1868. }
  1869. list.add(obj);
  1870. }
  1871. rs.close();
  1872. ps.close();
  1873. } catch (Exception e) {
  1874. log.WriteLine("DButils.getEntitysLimitOderBy()",
  1875. "getEntitysLimitOderBy error");
  1876. exceptionPrint(e);
  1877. } finally {
  1878. rs = null;
  1879. ps = null;
  1880. }
  1881. return list;
  1882.  
  1883. }
  1884.  
  1885. public static void main(String[] args) {
  1886. getAllDatabaseNames();
  1887. String[] sqls = new String[] {
  1888. "update person set name='\u6211' , address='fq' where id=1",
  1889. "update person set name='\u4F60', tel='13781910922' where id=2" };
  1890. System.out.println(getEntitysLimitOderBy(com.ctl.bean.Person.class, 1,
  1891. 2, "id", "asc"));
  1892. // isExecuteInit(true);
  1893. // System.out.println(Arrays.toString(updateStatement(sql)));
  1894. }
  1895.  
  1896. }
#database=mysql
#\u6570\u636E\u5E93\u7684\u7C7B\u578B\u5FC5\u9700\u914D\u7F6E\u6B63\u786E
databasetype=oracle
#mysql config
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc\:mysql\://localhost\:3306/test?unicode\=true&characterEncoding\=utf8
mysql.username=root
mysql.password=root #oracle config
oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
oracle.username=test
oracle.password=test #ftp client config
ftp.host=127.0.0.1
ftp.port=21
ftp.username=grg
ftp.password=grg
ftp.binaryTransfer= true
ftp.passiveMode=true
ftp.encoding=gbk
ftp.clientTimeout=30000

DButils工具类能够用来获取数据库连接向数据库插入更新删除对象2的更多相关文章

  1. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  2. 30_java之DButils工具类

    01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实用. * DBUtils ...

  3. DBUtils工具类和DBCP连接池

    今日内容介绍 1.DBUtils2.处理结果集的八种方式3.连接池4.连接池的用法1 PrepareStatement接口预编译SQL语句 1.1 预处理对象 * 使用PreparedStatemen ...

  4. java使用dbutils工具类实现小程序 管家婆记账软件

    1.所需创建的包和 jar包 2.创建表结构  #生成一些表数据 ,,'交通银行','2016-03-02','家庭聚餐'); ,,'现金','2016-03-15','开工资了'); ,,'现金', ...

  5. Java学习笔记49(DBUtils工具类二)

    上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...

  6. DBUtils工具类的使用

    DBUtils工具类1.DBUtils工具类,由apache组织提供的工具类,对JDBC做了一些简单封装. 做了查询的封装,把查询的结果封装到List集合 Map集合 JavaBean对象中 做了增删 ...

  7. 【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用

    1. C3P0概述 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 2. C3P ...

  8. Java学习笔记48(DBUtils工具类一)

    上一篇的例子可以明显看出,在增删改查的时候,很多的代码都是重复的, 那么,是否可以将增删改查封装成一个类,方便使用者 package demo; /* * 实现JDBC的工具类 * 定义方法,直接返回 ...

  9. DBUtils工具类学习一

    Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能 1.特征 DBUtils是java编程中 ...

随机推荐

  1. C#个人笔记

    1.扩展方法:类名前面加static ,方法参数前 加this,如:对string类进行扩展 public static class string    {        public static ...

  2. ASP.NET站点安全

    <configuration> <appSettings/> <connectionStrings> <add name="MyBookShop&q ...

  3. 第一篇:GCD的使用

    一.主队列介绍 主队列是和主线程相关的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中的任务,都会放到主线程中执行. 提示:如果把任务放到主队列进行处理,那么不论处理函数是异步的还是同步的都 ...

  4. [Swust OJ 217]--Factor(数论,类素数表)

    题目链接:http://acm.swust.edu.cn/problem/0217/ Time limit(ms): 2000 Memory limit(kb): 65535    Descripti ...

  5. [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)

    题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535   SWUST国的一支科学 ...

  6. 我的Python成长之路---GitHub使用克隆GitHub(SSH key配置)

    六.克隆GitHub仓库 1.创建仓库目录,目录位置没有要求,比如D:\learngit. 2.配置ssh(如果不配置会每次都输入用户名和密码) 使用TortoiseGit生成ssh-key:开始菜单 ...

  7. 1, sync_with_stdio(), tie()的应用

    一.sync_with_stdio() 这个函数是一个“是否兼容stdio”的开关,C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑在了一起. ...

  8. .NET Core & ASP.NET Core 1.0

    .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布 众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL) ...

  9. oracle dg坏境主库redolog改动大小

    --备库standby 主库四个redolog 曾经都是50M大小 SQL> alter database recover managed standby database cancel;   ...

  10. javascript每日一练(十四)——弹性运动

    一.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...