欢迎光临散文网 会员登陆 & 注册

Java Web:注解,自定义注解,判断属性上面是否贴上了col注解,PPT,视频【诗书画唱】

2021-01-03 01:04 作者:诗书画唱  | 我要投稿

每次写篇专栏就有时要花我大半天,给个三连吧!



本篇可Ctrl+F的关键内容:讲义,例子,PPT,视频,判断属性上面是否贴上了col注解,进而控制SQL语句。通过反射技术提取类中的注解,判断Jobs类是否贴上了Rich注解。

很多东西要自己学或想出或找到且记录后,想出其作用,并且记录,以后用——诗书画唱

个人的理解:col注解等是自己命名的注解。

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

个人对元注解的理解:元注解就是修饰注解的注解。有时注解类似类,可以继承。

@SuppressWarnings("deprecation")  表示不检测过期的方法。


我认为学编程时遇到不懂的英文单词去百度等等,之后记录可用的百度等的结果是很好的方法——诗书画唱

deprecation

n.祈免;贬低;反对


deprecated[ˈdeprəkeɪtɪd][ˈdeprəkeɪtɪd]

v.对…表示极不赞成; 强烈反对




注解PPT START









注解PPT END


讲义START


注解就是贴在代码上的标签annotation

在java代码中,到处都有注解。servlet的配置,WEBSOCKET,springmvc框架


注解可以理解为标签,标签是可以贴到代码段上的:

类上面,属性上,方法上


元注解:贴在标签上的标签,用来描述标签的标签,注解注解的注解

元数据:描述数据的数据


铁帽子王:爵位可以世袭罔替的


提取一个类中的注解,需要使用反射技术


使用注解来实现新增



讲义END

例子START

个人对元注解的理解:元注解就是修饰注解的注解。注解也是类,可以继承。

判断属性上面是否贴上了col注解,进而控制SQL语句START

import java.util.ArrayList;

import java.util.List;


import com.jy.anno.Rich;

import com.jy.bean.Person;

import com.jy.bean.User;

import com.jy.bean.Userinfo;

import com.jy.dao.BaseDao;



public class Test {

@SuppressWarnings(value = { "deprecation" })

    public static void main(String[] args) {

// Person p = new Person();

// p.zangai();

//

// try {

// Class cls = Class.forName("com.jy.bean.Mayun");

// //通过反射技术提取类中的注解

// //判断Jobs类是否贴上了Rich注解

// boolean isRich = cls.isAnnotationPresent(Rich.class);

// //System.out.println(isRich);

// if(isRich) {//读取注解上面的内容

// //提取出Rich注解

// Rich label = (Rich) cls.getAnnotation(Rich.class);

// System.out.println("资产是:" + label.money());

// System.out.print("国籍是:" + label.country());

// }

// } catch (ClassNotFoundException e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }


// BaseDao<Userinfo> bd = new BaseDao<Userinfo>();

// Userinfo u = new Userinfo();

// bd.add(u);


BaseDao<User> dao = new BaseDao<User>();

User user = new User();

dao.add(user);

}

}

package com.jy.bean;


import com.jy.anno.Col;


public class User {

    private Integer id;

    @Col

    private String act;

    @Col

    private String pwd;

    @Col

    private String birth;

    @Col

    private String sex;

    @Col

    private String hobbys;

    

    private Integer page;

    private Integer row;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getBirth() {

return birth;

}

public void setBirth(String birth) {

this.birth = birth;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getHobbys() {

return hobbys;

}

public void setHobbys(String hobbys) {

this.hobbys = hobbys;

}

public Integer getPage() {

return page;

}

public void setPage(Integer page) {

this.page = page;

}

public Integer getRow() {

return row;

}

public void setRow(Integer row) {

this.row = row;

}

}

package com.jy.dao;


import java.lang.reflect.Field;


import com.jy.anno.Col;


public class BaseDao<T> {

    public Integer add(T t){

    //获取bean类中的属性名

    Class cls = t.getClass();

    //insert into userinfo (act,pwd) values(?,?)

    //获取表名

    String tableName = cls.getSimpleName();

    String sql = "insert into " + tableName + "(";

    String txt = "(";

    Field []fs = cls.getDeclaredFields();

    String dot = "";

    for(int i = 0;i < fs.length;i ++) {

    Field f = fs[i];

    String fname = f.getName();

    //判断属性上面是否贴上了col注解

    if(f.isAnnotationPresent(Col.class)){

        sql += dot;

    sql += fname;

   

        txt += dot;

        txt += "?";

        dot = ",";

    }   

    }

    sql += ") values";

    txt += ")";

    System.out.println(sql + txt);

    return 0;

    }

}






判断属性上面是否贴上了col注解END


判断属性上面是否贴上了col注解2START


package com.jy.bean;


import com.jy.anno.Col;


public class Userinfo {

    private Integer id;

    @Col

    private String act;

    @Col

    private String pwd;

    

    private Integer pageNum;

    private Integer pageSize;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

}


package com.jy.bean;


import com.jy.anno.Col;


public class Userinfo {

    private Integer id;

    @Col

    private String act;

    @Col

    private String pwd;

    

    private Integer pageNum;

    private Integer pageSize;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

}




判断属性上面是否贴上了col注解2END


通过反射技术提取类中的注解,判断Jobs类是否贴上了Rich注解START



import java.util.ArrayList;

import java.util.List;


import com.jy.anno.Rich;

import com.jy.bean.Person;

import com.jy.bean.User;

import com.jy.bean.Userinfo;

import com.jy.dao.BaseDao;



public class Test {

@SuppressWarnings(value = { "deprecation" })

    public static void main(String[] args) {

Person p = new Person();

p.zangai();


try {

Class cls = Class.forName("com.jy.bean.Mayun");

//通过反射技术提取类中的注解

//判断Jobs类是否贴上了Rich注解

boolean isRich = cls.isAnnotationPresent(Rich.class);

//System.out.println(isRich);

if(isRich) {//读取注解上面的内容

//提取出Rich注解

Rich label = (Rich) cls.getAnnotation(Rich.class);

System.out.println("资产是:" + label.money());

System.out.print("国籍是:" + label.country());

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


/* BaseDao<Userinfo> bd = new BaseDao<Userinfo>();

Userinfo u = new Userinfo();

bd.add(u);*/


/* BaseDao<User> dao = new BaseDao<User>();

User user = new User();

dao.add(user);*/

}

}

package com.jy.anno;


import java.lang.annotation.Inherited;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;


//大富豪标签

//大富豪注解是可以继承的

@Inherited

//将注解保存到代码运行的时候

@Retention(RetentionPolicy.RUNTIME)

public @interface Rich {

    double money() default 40000000000.0;//大富豪的身价

    String country() default "中国";//大富豪的国籍

}

package com.jy.bean;


public class Person {

//已经弃用的方法

@Deprecated

    public void zangai(){

    System.out.println("为你放弃整个世界");

    }

}


package com.jy.anno;


import java.lang.annotation.Inherited;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;


//大富豪标签

//大富豪注解是可以继承的

@Inherited

//将注解保存到代码运行的时候

@Retention(RetentionPolicy.RUNTIME)

public @interface Rich {

    double money() default 40000000000.0;//大富豪的身价

    String country() default "中国";//大富豪的国籍

}




通过反射技术提取类中的注解,判断Jobs类是否贴上了Rich注解END

package com.jy.anno;


import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;


@Target(ElementType.FIELD)//这个标签只能贴在属性上面

@Retention(RetentionPolicy.RUNTIME)//标签存活到运行时

public @interface Col {


}

package com.jy.anno;


import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;


//段子手标签

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.TYPE)

public @interface Duanzishou {


}

package com.jy.anno;


public @interface Good {


}


package com.jy.bean;


import com.jy.anno.Rich;


@Rich(money=27000000000.0,country="美国")

public class Jobs {


}



package com.jy.bean;


import com.jy.anno.Rich;


@Rich

public class Mayun {


}


package com.jy.bean;


import com.jy.anno.Duanzishou;


//QQ好友

//1

@Duanzishou

public class QQFriend {

//4

public QQFriend(){


}

//2

    private String name;

    //3

    public void say(String act){

    System.out.println("Hello world");

    }

}

package com.jy.bean;

//我是富二代,可以继承@Rich注解

public class Son extends Jobs {


}




例子END

视频START


视频END



Java Web:注解,自定义注解,判断属性上面是否贴上了col注解,PPT,视频【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律