JAVA 反射+注釋,根據實體類對象生成SQL語句工具類
由于覺得配置Hibernate過于繁瑣,索性使用了spring的jdbc,可是又要寫很多的sql語句,為了偷偷懶,于是就寫個能通過實體類對象生成SQL語句的工具類。
目前只在MySql數據庫上實驗通過,其他數據庫未測試。
本工具類還有很多不足之處,不過好在可以滿足自己一些簡單的日常使用。
上代碼了。
字段類型:
1 |
package net.tjnwdseip.util; |
</tr>
</tbody>
</table>
</div>
2 |
|
</tr>
</tbody>
</table>
</div>
3 |
public enum FieldType { |
</tr>
</tbody>
</table>
</div>
4 |
|
</tr>
</tbody>
</table>
</div>
5 |
STRING,NUMBER,DATE |
</tr>
</tbody>
</table>
</div>
6 |
} |
</tr>
</tbody>
</table>
</div>
</div>
</div>
字段注釋:
01 |
package net.tjnwdseip.util; |
</tr>
</tbody>
</table>
</div>
02 |
|
</tr>
</tbody>
</table>
</div>
03 |
import java.lang.annotation.Documented; |
</tr>
</tbody>
</table>
</div>
04 |
import java.lang.annotation.ElementType; |
</tr>
</tbody>
</table>
</div>
05 |
import java.lang.annotation.Retention; |
</tr>
</tbody>
</table>
</div>
06 |
import java.lang.annotation.RetentionPolicy; |
</tr>
</tbody>
</table>
</div>
07 |
import java.lang.annotation.Target; |
</tr>
</tbody>
</table>
</div>
08 |
|
</tr>
</tbody>
</table>
</div>
09 |
@Documented |
</tr>
</tbody>
</table>
</div>
10 |
@Retention (RetentionPolicy.RUNTIME) |
</tr>
</tbody>
</table>
</div>
11 |
@Target (ElementType.FIELD) |
</tr>
</tbody>
</table>
</div>
12 |
public <a href= "http://my.oschina.net/interface" class = "referer" target= "_blank" > @interface </a> FieldAnnotation { |
</tr>
</tbody>
</table>
</div>
13 |
|
</tr>
</tbody>
</table>
</div>
14 |
String fieldName(); |
</tr>
</tbody>
</table>
</div>
15 |
|
</tr>
</tbody>
</table>
</div>
16 |
FieldType fieldType(); |
</tr>
</tbody>
</table>
</div>
17 |
|
</tr>
</tbody>
</table>
</div>
18 |
boolean pk(); |
</tr>
</tbody>
</table>
</div>
19 |
} |
</tr>
</tbody>
</table>
</div>
</div>
</div>
表名注釋:
01 |
package net.tjnwdseip.util; |
</tr>
</tbody>
</table>
</div>
02 |
|
</tr>
</tbody>
</table>
</div>
03 |
import java.lang.annotation.Documented; |
</tr>
</tbody>
</table>
</div>
04 |
import java.lang.annotation.ElementType; |
</tr>
</tbody>
</table>
</div>
05 |
import java.lang.annotation.Retention; |
</tr>
</tbody>
</table>
</div>
06 |
import java.lang.annotation.RetentionPolicy; |
</tr>
</tbody>
</table>
</div>
07 |
import java.lang.annotation.Target; |
</tr>
</tbody>
</table>
</div>
08 |
|
</tr>
</tbody>
</table>
</div>
09 |
@Documented |
</tr>
</tbody>
</table>
</div>
10 |
@Retention (RetentionPolicy.RUNTIME) |
</tr>
</tbody>
</table>
</div>
11 |
@Target (ElementType.TYPE) |
</tr>
</tbody>
</table>
</div>
12 |
public <a href= "http://my.oschina.net/interface" class = "referer" target= "_blank" > @interface </a> TableAnnotation { |
</tr>
</tbody>
</table>
</div>
13 |
|
</tr>
</tbody>
</table>
</div>
14 |
String tableName(); |
</tr>
</tbody>
</table>
</div>
15 |
} |
</tr>
</tbody>
</table>
</div>
</div>
</div>
SQL語句生成工具類:
001 |
package net.tjnwdseip.util; |
</tr>
</tbody>
</table>
</div>
002 |
|
</tr>
</tbody>
</table>
</div>
003 |
import java.lang.reflect.Field; |
</tr>
</tbody>
</table>
</div>
004 |
import java.lang.reflect.InvocationTargetException; |
</tr>
</tbody>
</table>
</div>
005 |
import java.lang.reflect.Method; |
</tr>
</tbody>
</table>
</div>
006 |
import java.util.ArrayList; |
</tr>
</tbody>
</table>
</div>
007 |
import java.util.HashMap; |
</tr>
</tbody>
</table>
</div>
008 |
import java.util.Iterator; |
</tr>
</tbody>
</table>
</div>
009 |
import java.util.List; |
</tr>
</tbody>
</table>
</div>
010 |
|
</tr>
</tbody>
</table>
</div>
011 |
/** |
</tr>
</tbody>
</table>
</div>
012 |
* |
</tr>
</tbody>
</table>
</div>
013 |
* @ClassName: CreateSqlTools |
</tr>
</tbody>
</table>
</div>
014 |
* @Description: TODO(根據實體類對象生成SQL語句) |
</tr>
</tbody>
</table>
</div>
015 |
* <a class="referer" target="_blank">@author</a> LiYang |
</tr>
</tbody>
</table>
</div>
016 |
* @date 2012-5-4 下午10:07:03 |
</tr>
</tbody>
</table>
</div>
017 |
* |
</tr>
</tbody>
</table>
</div>
018 |
*/ |
</tr>
</tbody>
</table>
</div>
019 |
public class CreateSqlTools { |
</tr>
</tbody>
</table>
</div>