JavaAnnotation(Java注解)的实现代码
2023-06-13 09:14:52 时间
如果你想知道javaannotation是什么?你可以先看看:“http://www.infoq.com/articles/Annotation-Hammer”
下面是我做的一个demo:
/**
*
*/
packagecom.b510.hongten.annotation;
importjava.lang.annotation.Documented;
importjava.lang.annotation.ElementType;
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
importjava.lang.annotation.Target;
/**
*JDBCannotation
*
*@authorHongten
*@date2013-4-10
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public@interfaceJDBCAnnotation{
Stringdriver()default"com.mysql.jdbc.Driver";
StringdbName()default"";
Stringencoding()default"UTF-8";
Stringport()default"3306";
Stringhost()default"localhost";
StringuserName()default"root";
Stringpassword()default"";
}
/**
*
*/
packagecom.b510.hongten.jdbc;
importcom.b510.hongten.annotation.JDBCAnnotation;
/**
*@authorHongten
*@date2013-4-12
*/
@JDBCAnnotation(dbName="db_lucene",port="3306",host="192.168.0.119",userName="root",password="root")
publicclassJDBCUtil{
privatestaticStringdriver;
privatestaticStringdbName;
privatestaticStringencoding;
privatestaticStringport;
privatestaticStringhost;
privatestaticStringpasswrod;
privatestaticStringuserName;
privatestaticStringurl;
publicvoidcheckInterceptor(Class<?>cl)throwsException{
booleanflag=cl.isAnnotationPresent(JDBCAnnotation.class);
if(flag){
JDBCAnnotationjdbcAnnotation=cl.getAnnotation(JDBCAnnotation.class);
driver=jdbcAnnotation.driver();
dbName=jdbcAnnotation.dbName();
encoding=jdbcAnnotation.encoding();
port=jdbcAnnotation.port();
host=jdbcAnnotation.host();
userName=jdbcAnnotation.userName();
passwrod=jdbcAnnotation.password();
url="jdbc:mysql://"+host+":"+port+"/"+dbName+"?characterEncoding="+encoding;
System.out.println("JDBCUtil加载注释完成...");
}
}
publicJDBCUtil(){
try{
checkInterceptor(JDBCUtil.class);
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticStringgetDriver(){
returndriver;
}
publicstaticvoidsetDriver(Stringdriver){
JDBCUtil.driver=driver;
}
publicstaticStringgetDbName(){
returndbName;
}
publicstaticvoidsetDbName(StringdbName){
JDBCUtil.dbName=dbName;
}
publicstaticStringgetEncoding(){
returnencoding;
}
publicstaticvoidsetEncoding(Stringencoding){
JDBCUtil.encoding=encoding;
}
publicstaticStringgetPort(){
returnport;
}
publicstaticvoidsetPort(Stringport){
JDBCUtil.port=port;
}
publicstaticStringgetHost(){
returnhost;
}
publicstaticvoidsetHost(Stringhost){
JDBCUtil.host=host;
}
publicstaticStringgetPasswrod(){
returnpasswrod;
}
publicstaticvoidsetPasswrod(Stringpasswrod){
JDBCUtil.passwrod=passwrod;
}
publicstaticStringgetUserName(){
returnuserName;
}
publicstaticvoidsetUserName(StringuserName){
JDBCUtil.userName=userName;
}
publicstaticStringgetUrl(){
returnurl;
}
publicstaticvoidsetUrl(Stringurl){
JDBCUtil.url=url;
}
}
/**
*
*/
packagecom.b510.hongten.jdbc;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
/**
*
*@authorHongten</br>
*@date2012-7-16
*
*/
publicclassJDBCTest{
@SuppressWarnings("static-access")
publicstaticvoidmain(String[]args){
JDBCUtiljdbcUtil=newJDBCUtil();
Stringsql="select*frommymails";
try{
Class.forName(jdbcUtil.getDriver());
Connectionconn=DriverManager.getConnection(jdbcUtil.getUrl(),jdbcUtil.getUserName(),jdbcUtil.getPasswrod());
PreparedStatementps=conn.prepareStatement(sql);
ResultSetrs=ps.executeQuery();
while(rs.next()){
System.out.println("id:"+rs.getInt(1)+"name:"+rs.getString(2)+"mail:"+rs.getString(3));
}
//关闭记录集
if(rs!=null){
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
//关闭声明
if(ps!=null){
try{
ps.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
//关闭链接对象
if(conn!=null){
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
相关文章
- JAVA多线程面试题_java多线程的实现方式
- protostuff java_Protostuff一键序列化工具、Protobuf JAVA实现
- java反转数组_Java实现数组反转翻转的方法实例
- java 登录 qq_Java实现QQ登录
- java山寨qq账号密码验证_Java实战-山寨QQ
- 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」
- java 舆情分析_基于Java实现网络舆情分析系统研究与实现.doc[通俗易懂]
- 【创作赢红包】【Java AWT 图形界面编程】菜单组件 ② ( 菜单组件示例要点说明 | 菜单组件示例代码 )
- AI实现代码转换,Python转Java,Java转Go不再困难?
- 文件下载java实现代码详解编程语言
- Java文件读写操作具体代码实现详解编程语言
- Kafka 生产者消费者java示例代码详解编程语言
- JAVA实现精确的加减乘除代码详解编程语言
- Java实现打字练习的代码详解编程语言
- 文件或是文件夹打包压缩成zip格式的Java代码详解编程语言
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- 解决Java程序连接MySQL的准确方案:Java连接MySQL的Jar包(java连接mysql的jar包)
- Java联合Redis:建立良好数据连接(java连接redis)
- 工具Linux上使用Java开发的利器:选择指南(linux选择java)
- 深入浅出Java配置MySQL数据库(java配置mysql)
- Linux 升级Java:新版本带来的变化(linux升级java)
- 服务器快速搭建Linux Java服务器,实现互联网应用(linux搭建java)
- 实现Java实现的Redis封装类:强化Redis技术支持(redis封装类java)
- Java数据库之MySQL学习使用教程(mysql中java教程)
- 实现Java认证让你离Oracle更近一步(java认证oracle)
- Java实现的基于socket通信的实例代码
- java反射实现javabean转json实例代码