举一个java反射的例子,反射一般在java中什么时候用?Interceptor是通过反射实现的吗?

默认分类 未结 1 344
0飘雨的云0
0飘雨的云0 2023-03-29 11:53
相关标签:
1条回答
  • 2023-03-29 12:40

    在准备写之前,我们需要一些规则:1、由实体类名,可以知道我这个类是存放在哪张表里---这里我采用的是和t_类名 2、由实体类中的变量名可以知道对应表中的字段名的一一这里我采用f_变量名做为字段名 3、实体类里,有着对变量的赋值与获取,且方法名有一定的规则----比如我们常用的get、set方法,这里我也是采用这种方法一、利用如上规则设计相关的类与表:我这里写了两个实体类customer和admin,并在类中多加了一个toString方法,便于后面打印信息查看:packagecom.java.reflect.database;publicclassCustomer{privateLongid;privateStringusername;privateStringpassword;privateStringrealname;privateStringaddress;privateStringemail;privateStringmobile;@OverridepublicStringtoString(){return"Customer[id="+id+",username="+username+",password="+password+",realname="+realname+",address="+address+",email="+email+",mobile="+mobile+"]";}publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetRealname(){returnrealname;}publicvoidsetRealname(Stringrealname){this.realname=realname;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicStringgetMobile(){returnmobile;}publicvoidsetMobile(Stringmobile){this.mobile=mobile;}}类似可以写admin,都贴出来的话会很长,就不贴了,对应的表结构设计如下: 二、利用反射拼出对应的数据库操作语句保存语句拼凑:publicstaticStringsaveSql(Objecto){StringBuildersql=newStringBuilder();Classc=o.getClass();sql.append("INSERTINTO");Method[]methods=c.getMethods();StringcName=c.getName();ArrayListfieldNames=newArrayList();ArrayListfieldValues=newArrayList();StringtableName="t_"+cName.substring(cName.lastIndexOf(".")+1,cName.length());sql.append(tableName);sql.append("(");for(Methodmethod:methods){StringmName=method.getName();if(mName.startsWith("get")&&!mName.startsWith("getClass")){StringfName="f_"+mName.substring(3);fieldNames.add(fName);try{Objectvalue=method.invoke(o,null);if(valueinstanceofString){fieldValues.add("""+value+""");}else{fieldValues.add(value);}}catch(Exceptione){e.printStackTrace();}}}for(inti=0;i版权声明:本文为博主原创文章,未经博主允许不得转载。

    利用反射技术实现POJO的数据库操作

    标签:java数据库

    比如说自己定义了一个annotation,然后要自己写一个解析器,此时用反射。还有一些MVC的例子,假如在xml文件中定义了action类与其对应的logic类,可以通过反射在action中获得logic的实例;如果在action的父类中定义了类似直接在action中调用logic方法的方法,我们可以通过给方法中传入logic的类名和方法名直接反射调用方法。

    自定义一些底层的数据库操作类,或文件读取操作类等等的,可利用反射将数据封装到自定义的实体类或VO。我平时只用反射做这个。不过话说回来,在一些地效率要求比较高的地方还是尽量不要搞反射机制 <-- 个人意见。

    spring中的IOC,即根据配置文件生成指定的类。Interceptor是通过反射实现的

    0 讨论(0)
    提交回复