读书人

透过java反射实现对javabean生成各种s

发布时间: 2013-02-18 10:50:49 作者: rapoo

通过java反射实现对javabean生成各种sql语句

通过java反射实现对javabean生成各种sql语句,有请大家评论,更改

Java代码:
  1. package com.pdt.util;
  2. import java.lang.reflect.Field;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. public class BeanUtil {
  6. /** 原文地址:http://www.software8.co/wzjs/java/2875.html
  7. * @param args
  8. */
  9. public static void main(String[] args) {
  10. System.out.println(getBeanFilesList("com.pdt.bean.Dictionary"));
  11. System.out.println(genCreateTableSql("com.pdt.bean.Dictionary"));
  12. System.out.println(genInsertSql("com.pdt.bean.Dictionary"));
  13. }
  14. public static String getBeanName(String bean){
  15. try {
  16. Class clz = Class.forName(bean);
  17. String clzStr = clz.toString();
  18. //得到类名
  19. String beanName = clzStr.substring(clzStr.lastIndexOf(".")+1).toLowerCase();
  20. return beanName;
  21. } catch (ClassNotFoundException e) {
  22. e.printStackTrace();
  23. return "";
  24. }
  25. }
  26. public static List<String> getBeanPropertyList(String bean){
  27. try {
  28. Class clz = Class.forName(bean);
  29. Field[] strs = clz.getDeclaredFields();
  30. List<String> propertyList = new ArrayList<String>();
  31. for (int i = 0; i < strs.length; i++) {
  32. String protype = strs[i].getType().toString();
  33. propertyList.add(protype.substring(protype.lastIndexOf(".")+1)+"`"+strs[i].getName());
  34. }
  35. return propertyList;
  36. } catch (ClassNotFoundException e) {
  37. e.printStackTrace();
  38. return null;
  39. }
  40. }
  41. public static String getBeanFilesList(String bean){
  42. try {
  43. Class clz = Class.forName(bean);
  44. Field[] strs = clz.getDeclaredFields();
  45. StringBuffer sb = new StringBuffer();
  46. for (int i = 0; i < strs.length; i++) {
  47. String protype = strs[i].getType().toString();
  48. if (!strs[i].getName().equals("tableName")&&!strs[i].getType().equals("List")) {
  49. sb.append(strs[i].getName()+",");
  50. }
  51. }
  52. sb.deleteCharAt(sb.toString().lastIndexOf(","));
  53. return sb.toString();
  54. } catch (ClassNotFoundException e) {
  55. e.printStackTrace();
  56. return null;
  57. }
  58. }
  59. /**
  60. * 生成建表句
  61. * @param bean
  62. * @return
  63. */
  64. public static String genCreateTableSql(String bean){
  65. List<String> beanPropertyList = getBeanPropertyList(bean);
  66. StringBuffer sb = new StringBuffer("create table wnk_pdt_"+getBeanName(bean)+"(\n");
  67. for (String string : beanPropertyList) {
  68. String[] propertys = string.split("`");
  69. if (!propertys[1].equals("tableName")&&!propertys[1].equals("param")&&!propertys[0].equals("List")) {
  70. if (propertys[1].equals("id")) {
  71. sb.append(" id bigint primary key auto_increment,\n");
  72. } else {
  73. if (propertys[0].equals("int")) {
  74. sb.append(" " + propertys[1] + " int default 0 comment '',\n");
  75. } else if (propertys[0].equals("String")) {
  76. sb.append(" " + propertys[1] + " varchar(2000) default '' comment '',\n");
  77. } else if (propertys[0].equals("double")) {
  78. sb.append(" " + propertys[1] + " double(10,2) default 0.0 comment '',\n");
  79. } else if (propertys[0].equals("Date")) {
  80. sb.append(" " + propertys[1] + " datetime comment '',\n");
  81. }
  82. }
  83. }
  84. }
  85. sb.append(")");
  86. sb.deleteCharAt(sb.lastIndexOf(","));
  87. return sb.toString();
  88. }
  89. /**
  90. * 生成查询语句
  91. * @param bean
  92. * @return
  93. */
  94. public static String genSelectAllSql(String bean){
  95. String filesList = getBeanFilesList(bean);
  96. return "select \n "+filesList+" \n from \n wnk_pdt_"+getBeanName(bean)+"";
  97. }
  98. /**
  99. * 生成插入语句
  100. * @param bean
  101. * @return
  102. */
  103. public static String genInsertSql(String bean){
  104. String filesList = getBeanFilesList(bean);
  105. int fl = DataUtil.getCountSonStr(filesList,",")+1;
  106. String wenhao = "";
  107. for (int i = 0; i < fl; i++) {
  108. if(i==fl-1){
  109. wenhao = wenhao+"?";
  110. }else{
  111. wenhao = wenhao+"?,";
  112. }
  113. }
  114. return "insert into wnk_pdt_"+getBeanName(bean)+"("+filesList+") values("+wenhao+")";
  115. }
  116. }

读书人网 >SQL Server

热点推荐