1.首先写一个自定义注解类
package annoction;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Target( { ElementType.METHOD, ElementType.TYPE })
@Retention(RUNTIME)
@Documented
public @interface AnoTable {
public String value() default "";
}
2.给需要获取表名的类加上自定义注解
package annoction;
import java.lang.annotation.Target;
@AnoTable("user")
public class User {
3.通过反射获取类对象的表名,字段名,字段值拼接成insertsql语句
package annoction;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
Test test=new Test();
User ss=new User();
ss.setId("1");
ss.setNameString("zhangsan");
for(int i=0;i<2000;i++){
String sqlString=test.creatInserSql(ss);
System.out.println(sqlString);
}
}
public String creatInserSql(Object object){
String sqlString="insert into ";
String comunString="(";
String valueString="(";
if(object.getClass().isAnnotationPresent(AnoTable.class)){
sqlString+=object.getClass().getAnnotation(AnoTable.class).value();
}
Field[] fields= object.getClass().getDeclaredFields();
for(Field field:fields){
field.setAccessible(true);
comunString+=field.getName()+",";
try {
valueString+=field.get(object)+",";
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
comunString=comunString.substring(0, comunString.length()-1)+")";
valueString=valueString.substring(0, valueString.length()-1)+");";
sqlString+=comunString+" value " +valueString;
return sqlString;
}
}
4.大功告成
最近在工作中要写一个简单的jar来通过对象添加到数据库,想根据对象来写sql的地方就自己手写了一个,经过测试,简单直接,
有问题可以联系我