通过自定义注解实现对象转换insertsql

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的地方就自己手写了一个,经过测试,简单直接,

有问题可以联系我

猜你喜欢

转载自blog.csdn.net/weixin_41934671/article/details/86260448