当前位置: 首页 > news >正文

网站链接收费怎么做的/百度上做推广怎么收费

网站链接收费怎么做的,百度上做推广怎么收费,网站视频怎么做,做静态网站怎样让图片自己切换前言:在J2EE中,注解使得开发更加便利,省去了生成XML文件的过程,在Hibernate实体声明中,可以简简单单的用几个注解就可以免去生成一个XML的文件操作。这里就主要论述一下annotation的用法和自定义注解处理器。当在创建描…

前言:

在J2EE中,注解使得开发更加便利,省去了生成XML文件的过程,在Hibernate实体声明中,可以简简单单的用几个注解就可以免去生成一个XML的文件操作。这里就主要论述一下annotation的用法和自定义注解处理器。当在创建描述符性质的类或接口时,有大量重复性的工作时候,就可以利用注解来实现。

基本语法:

Java目前包括三种标准注解和四种元注解。元注解主要负责注解其他注解的。

三种标准注解:

@Override,表示当前的方法定义覆盖了父类中的方法。必须要有相同的方法签名即(方法名,参数类型,参数顺序,参数个数)都一样。否则在编译过程中发出错误提示。

@Deprecated,对不应该再使用的方法添加注解,当使用这个方法的时候,会在编译时候显示提示信息。

@SuppressWarnings,关闭不当的编译器报警信息

四种元注解:

@Target,表示该注解可以用什么地方。

如CONSTRUCTOR,构造器声明;FIELD,域声明;METHOD,方法声明;TYPE,类,接口或enum声明

@Retention,表示需要在什么级别保存该注解信息。

如SOURCE,注解将被编译器丢弃;CLASS,注解在class文件可用,但会被VM丢弃

RUNTIME,VM将在运行期间也保留注解,可以使用反射机制读取注解信息

@Documented,将此注解包含到Javadoc中。

@Inherited,允许子类继承父类的注解。

定义注解:

自定义注解是以@interface为标志的。如同一个接口的定义,这里面定义的每个方法名,就是使用注解时候的元素名,方法的返回值就是元素的类型,可以利用default来声明默认值,不过对于非基本类型,不能设置为null为默认值,一般对于字符串使用空字符串作为其默认值。

如下所示:

package whut.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

//定义一个注解

@Target(ElementType.METHOD)//定义该注解将应用于什么地方,方法或者域

@Retention(RetentionPolicy.RUNTIME)//定义该注解在哪一个级别可用

public @interface UseCase {

//注解元素,可以指定默认值,在使用注解的时候,可以直接给元素赋值如id=5

public int id();

public String description() default "no description";

//利用枚举来设置参数类型

public enum ParameterType { STRING, SHORT, INT, BOOL, LONG, OBJECT };

// 默认值,在使用注解的时候,只需要为元素赋值

public ParameterType type() default ParameterType.STRING;

}

使用注解:

在类中任意的域值前,或者方法前等直接@注解名,如@UseCase(id=5),使用注解的过程中,必须对于没有设置默认值的元素进行赋值操作,对于每个元素进行按照名-值对的方式赋值。如果在注解定义中有名为value的元素,并且它是唯一需要赋值的,可以直接在括号里给出value所需要的值。

注解是不能继承的。

下面是一个基本的利用非apt实现的注解处理器模型。

这个模型可以注解实体,进行数据库的映射建表操作。是最最基本的操作。

注解定义:将四个注解名是在不同的文件中。

package whut.annotationDB;

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 Constraints {

boolean primaryKey() default false;

boolean allowNull() default true;

boolean unique() default false;

}

package whut.annotationDB;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.TYPE)//类,接口或enum

@Retention(RetentionPolicy.RUNTIME)

//定义表名的注解

public @interface DBTable {

public String name() default "";

}

///

package whut.annotationDB;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)//类,接口或enum

@Retention(RetentionPolicy.RUNTIME)

public @interface SQLInteger {

String name() default "";

//嵌套注解的功能,将column类型的数据库约束信息嵌入其中

Constraints constraints() default @Constraints;

}

///

package whut.annotationDB;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)//类,接口或enum

@Retention(RetentionPolicy.RUNTIME)

public @interface SQLString {

int value() default 0;

String name() default "";

//注解元素中引用别的注解,

Constraints constraints() default @Constraints;

}

实体使用注解:这里是运用了运行时候处理注解,所以RetentionPolicy.RUNTIME

package whut.annotationDB;

@DBTable(name="MEMBER")

public class Member {

//在使用注解过程中,如果有元素是value,并且只有value需要赋值,

//则只需要在()中将值写入

@SQLString(30)

private String firstName;

@SQLString(50)

private String lastName;

@SQLInteger

private Integer age;

@SQLString(value=30,constraints=@Constraints(primaryKey=true))

private String handle;

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getHandle() {

return handle;

}

public void setHandle(String handle) {

this.handle = handle;

}

}

具体的非apt实现的注解处理器:package whut.annotationDB;

import java.lang.annotation.Annotation;

import java.lang.reflect.Field;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

public class TableCreator {

public Connection getConnection() {

String user = "root";

String password = "";

String serverUrl = "jdbc:mysql://localhost:3306/carrent?user=root&password=";

try {

Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection(serverUrl, user,

password);

return con;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

//实现创建表

public static void main(String[] args) {

TableCreator tc = new TableCreator();

tc.executeCreateDB(Member.class);

}

public void executeCreateDB(Class> entity) {

String sqlStr = explainAnnotation(entity);

Connection con = getConnection();

PreparedStatement psql = null;

if (con != null && !sqlStr.equals("error")) {

try {

psql = con.prepareStatement(sqlStr);

psql.execute();

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (psql != null)

psql.close();

} catch (SQLException e) {

e.printStackTrace();

}

try {

if (con != null)

psql.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

} else

System.out.println("failure to...");

}

// 真正的处理器,Class>必须用这个表明

public String explainAnnotation(Class> entity) {

// 获取指定类型的注解

DBTable dbtable = entity.getAnnotation(DBTable.class);

if (dbtable == null) {

System.out.println("No DBTable annotation in class"

+ entity.getName());

return "error";

} else {

String tableName = dbtable.name();// 获取注解name值,即表名称

// 当没有设置name值,直接利用类的名作为表名

if (tableName.length() < 1)

tableName = entity.getName().toUpperCase();// 转换大写

// 准备处理字段注解

List columnsDefs = new ArrayList();

// 获取该类的所有字段

for (Field field : entity.getDeclaredFields()) {

String columnName = null;

// 获取该字段所有的注解

Annotation[] anns = field.getDeclaredAnnotations();

// Annotation[] anns=field.getAnnotations();

// 当有注解的时候

if (anns.length >= 1) {

// 判断注解的类型

if (anns[0] instanceof SQLInteger) {

SQLInteger sInt = (SQLInteger) anns[0];

// 当没有name时候,将字段大写为列名

if (sInt.name().length() < 1)

columnName = field.getName().toUpperCase();

else

columnName = sInt.name();

columnsDefs.add(columnName + " INT"

+ getConstraints(sInt.constraints()));

}

if (anns[0] instanceof SQLString) {

SQLString sString = (SQLString) anns[0];

// 当没有name时候,将字段大写为列名

if (sString.name().length() < 1)

columnName = field.getName().toUpperCase();

else

columnName = sString.name();

columnsDefs.add(columnName + " VARCHAR("

+ sString.value() + ")"

+ getConstraints(sString.constraints()));

}

}

}

StringBuilder createDB = new StringBuilder("CREATE TABLE "

+ tableName + "(");

for (String cols : columnsDefs)

createDB.append(" " + cols + ",");

// 移除最后一个,号

String tableSQL = createDB.substring(0, createDB.length() - 1)

+ ");";

// 输出创建表的过程

System.out.println("Table Creation SQL is:\n" + tableSQL);

return tableSQL;

}

}

// 返回指定的约束

public String getConstraints(Constraints con) {

String constras = "";

if (!con.allowNull())

constras += " NOT NULL";

if (con.primaryKey())

constras += " PRIMARY KEY";

if (con.unique())

constras += " UNIQUE";

return constras;

}

}

http://www.lbrq.cn/news/1401031.html

相关文章:

  • 直接用源码做网站盗版吗/找小网站的关键词
  • 东营做网站哪里好/浏览器打开网站
  • 福建省人民政府第七办公室/南宁seo外包靠谱吗
  • ibm网站导航特效代码/北京百度seo关键词优化
  • 贵阳网络网站建设/广州网站seo推广
  • 网站文件夹目录结构/软文广告案例500字
  • 个人网站名字取名怎么做/百度软文
  • 0基础做网站用什么语言/网站推广优化流程
  • 外地公司做的网站能备案/网址查询
  • dedecms网站后台很卡/北京seo公司
  • 深圳市 网站建设450/电子商务网站
  • 找南阳建立网站的公司/沈阳百度推广优化
  • 专业做写生的网站/seo专业培训技术
  • 网站建设的活动方案/网络公司排名
  • 南京网站开发南京乐识不错/广告投放
  • 专业建网站 成都/seo规则
  • 域名解析手机网站建设/免费舆情网站
  • 郑州防疫办/seo网站关键词快速排名
  • 招聘网站的销售怎么做/电商培训机构哪家好
  • 贸易公司网站模板/关键词优化价格
  • 巨鹿网站建设多少钱/短视频seo厂家
  • 网站建设文字/天津企业seo
  • 重庆做学校网站公司/怎么在百度上推广自己的店铺
  • 重庆所有做网站的公司/代运营公司哪家好一些
  • 自助建站比较好的/怎么可以让百度快速收录视频
  • 盈佳国际天天做赢家网站/上海关键词优化公司bwyseo
  • java电商网站模板/淘宝自动推广软件
  • 营销型手机网站建设/专注网站建设服务机构
  • ssm框架做网站/百度云官网
  • 做个购物网站/推广网站seo
  • Git Commit 提交信息标准格式
  • 使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本1)
  • PowerShell脚本检查业务健康状态
  • 算法——快速幂
  • Ansible 中的文件包含与导入机制
  • 单片机驱动LCD显示模块LM6029BCW