通过自定义注解实现对象转换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的地方就自己手写了一个,经过测试,简单直接,

有问题可以联系我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值