Java アノテーションとは何ですか?まずは「http://www.infoq.com/articles/Annotation-Hammer」をご覧ください。
私が作成したデモは次のとおりです。
プロジェクトの構造:
操作効果:
================================================= ==
コード部分:
注: 多くの人は、この質問について次のように考えます。「これを行う目的は何ですか? 構成ファイル (xml、プロパティなど) を作成できますが、これほど便利なものはありません...または
構成情報をプログラムに直接書き込みます...この方法では、私たちが書いたコメントは解析されません...」
しかし、アノテーションや XML やプロパティなどの設定ファイルの長所と短所は何でしょうか?
個人的な意見: コメントを書くときは、Hibernate、Struts、Spring などのアノテーション フレームワークが便利です。
元のトピック「これを行う目的は何ですか?」に戻ります。これは、アノテーションとは何なのかを皆に知ってもらうための単なるデモです。私たちが開発するプロジェクトの多くでは、
その過程で、独自に定義したアノテーションはほとんど使用されません。実際に使用される場合は、このブログが役立つかもしれません。^_^
================================================= ==
/java_annotation/src/com/b510/hongten/annotation/JDBCAnnotation.java
インポート java.lang.annotation.Documented;
java.lang.annotation.ElementType をインポートします。
インポート java.lang.annotation.Retention;
インポート java.lang.annotation.RetentionPolicy;
インポート java.lang.annotation.Target;
/**
* JDBC アノテーション
*
* @author ホンテン
* @日付 2013-4-10
*/
@文書化されました
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface JDBCAnnotation {
文字列 driver() デフォルト "com.mysql.jdbc.Driver";
文字列 dbName() デフォルト "";
文字列エンコーディング()のデフォルトは「UTF-8」です。
String port() のデフォルトは "3306";
文字列 host() のデフォルトは "localhost";
String userName() デフォルトは「root」;
文字列パスワード() デフォルト "";
}
com.b510.hongten.annotation.JDBCAnnotation をインポートします。
/**
* @author ホンテン
* @日付 2013-4-12
*/
@JDBCAnnotation(dbName = "db_lucene"、ポート = "3306"、ホスト = "192.168.0.119"、ユーザー名 = "root"、パスワード = "root")
パブリック クラス JDBCUtil {
プライベート静的文字列ドライバー。
プライベート静的文字列 dbName;
プライベート静的文字列エンコーディング。
プライベート静的文字列ポート。
プライベート静的文字列ホスト。
プライベート静的文字列パスワード。
プライベート静的文字列ユーザー名;
プライベート静的文字列 URL。
public void checkInterceptor(Class<?> cl) throws Exception {
ブール値フラグ = cl.isAnnotationPresent(JDBCAnnotation.class);
if (フラグ) {
JDBCAnnotation jdbcAnnotation = cl.getAnnotation(JDBCAnnotation.class);
ドライバー = jdbcAnnotation.driver();
dbName = jdbcAnnotation.dbName();
エンコーディング = jdbcAnnotation.encoding();
ポート = jdbcAnnotation.port();
ホスト = jdbcAnnotation.host();
ユーザー名 = jdbcAnnotation.userName();
passwrod = jdbcAnnotation.password();
URL = "jdbc:mysql://" + ホスト + ":" + ポート + "/" + dbName + "?characterEncoding=" + エンコーディング;
System.out.println("JDBCUtil のコメントの読み込みが完了しました...");
}
}
public JDBCUtil() {
試す {
checkInterceptor(JDBCUtil.class);
} catch (例外 e) {
e.printStackTrace();
}
}
public static String getDriver() {
返却ドライバー。
}
public static void setDriver(String driver) {
JDBCUtil.driver = ドライバー;
}
public static String getDbName() {
データベース名を返します。
}
public static void setDbName(String dbName) {
JDBCUtil.dbName = データベース名;
}
public static String getEncoding() {
エンコーディングを返します。
}
public static void setEncoding(String encoding) {
JDBCUtil.encoding = エンコーディング;
}
public static String getPort() {
戻り港。
}
public static void setPort(String port) {
JDBCUtil.port = ポート;
}
public static String getHost() {
ホストを返します。
}
public static void setHost(String host) {
JDBCUtil.host = ホスト;
}
public static String getPasswrod() {
パスワードを返します。
}
public static void setPasswrod(String passwrod) {
JDBCUtil.passwrod = パスワード;
}
public static String getUserName() {
ユーザー名を返します。
}
public static void setUserName(String userName) {
JDBCUtil.userName = ユーザー名;
}
public static String getUrl() {
URLを返します;
}
public static void setUrl(String url) {
JDBCUtil.url = URL;
}
}
java.sql.Connectionをインポートします。
java.sql.DriverManagerをインポートします。
インポートjava.sql.PreparedStatement;
インポートjava.sql.ResultSet;
インポート java.sql.SQLException;
/**
*
* @著者 ホンテン<br>
* @日付 2012-7-16
*
*/
パブリック クラス JDBCTest {
@SuppressWarnings("静的アクセス")
public static void main(String[] args) {
JDBCUtil jdbcUtil = 新しい JDBCUtil();
文字列 sql = "マイメールから * を選択";
試す {
Class.forName(jdbcUtil.getDriver());
接続 conn = DriverManager.getConnection(jdbcUtil.getUrl(), jdbcUtil.getUserName(), jdbcUtil.getPasswrod());
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println("id : " + rs.getInt(1) + " name : " + rs.getString(2) + " mail : " + rs.getString(3));
}
//レコードセットを閉じる
if (rs != null) {
試す {
rs.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
// ステートメントを閉じる
if (ps != null) {
試す {
ps.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
// リンクオブジェクトを閉じる
if (conn != null) {
試す {
conn.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
} catch (例外 e) {
e.printStackTrace();
}
}
}