欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java泛型與數(shù)據(jù)庫應(yīng)用實例詳解

 更新時間:2019年08月06日 11:00:09   作者:cakincqm  
這篇文章主要介紹了Java泛型與數(shù)據(jù)庫應(yīng)用,結(jié)合實例形式詳細(xì)分析了java繼承泛型類實現(xiàn)增刪改查操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Java泛型與數(shù)據(jù)庫應(yīng)用。分享給大家供大家參考,具體如下:

一 點(diǎn)睛

BaseDao定義了基本的數(shù)據(jù)庫增刪查改, 之后可以繼承該泛型類,實現(xiàn)各自的增刪查改,或者使用超類的增刪查改,同時每個繼承類還能增加自己的操作。

二 實戰(zhàn)

1 BaseDao.java

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class BaseDao<T> {
  Connection connection;
  PreparedStatement pStatement;
  String urlString = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF8";
  String drivString = "com.mysql.jdbc.Driver";
  void OpenDB() {
    try {
      if (connection == null) {
        Class.forName(drivString);
        this.connection = DriverManager.getConnection(urlString, "root", "123456");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  void CloseDB() {
    try {
      if (pStatement != null) pStatement.close();
      if (connection != null) connection.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public void Save( T t ) {
    OpenDB();
    String table = "";
    String sqlString = "insert into ";
    try {
      table = t.getClass().getSimpleName();
      Field[] fields = t.getClass().getDeclaredFields();
      sqlString += table;
      String sqlNameString = "";
      String sqlValString = "";
      for (Field field : fields) {
        sqlNameString += field.getName() + ",";
        sqlValString += "?,";
      }
      sqlNameString = sqlNameString.substring(0, sqlNameString.length() - 1);
      sqlValString = sqlValString.substring(0, sqlValString.length() - 1);
      pStatement = connection.prepareStatement(sqlString + " (" + sqlNameString + ") values (" + sqlValString + ")");
      int n = 1;
      for (Field field : fields) {
        field.setAccessible(true);
        System.out.println(field.get(t).toString());
        pStatement.setString(n, field.get(t).toString());
        n++;
      }
      pStatement.executeUpdate();
      CloseDB();
    } catch (Exception e) {
      e.printStackTrace();
      CloseDB();
    }
  }
  public void Del( T t ) {
  }
  public void Update( T t ) {
  }
  public void Search( T t ) {
  }
}

2 StudentDao.java

public class StudentDao extends BaseDao<Student> {
}

3 TeacherDao.java

public class TeacherDao extends BaseDao<Teacher> {
}

4 Student.java

public class Student {
  public String name;
  public int age;
  public String dept;
  /**
  * @return the name
  */
  public String getName() {
   return name;
  }
  /**
  * @param name the name to set
  */
  public void setName(String name) {
   this.name = name;
  }
  /**
  * @return the age
  */
  public int getAge() {
   return age;
  }
  /**
  * @param age the age to set
  */
  public void setAge(int age) {
   this.age = age;
  }
  /**
  * @return the dept
  */
  public String getDept() {
   return dept;
  }
  /**
  * @param dept the dept to set
  */
  public void setDept(String dept) {
   this.dept = dept;
  }
}

5 Teacher.java

public class Teacher {
}

6 TestDao.java

public class TestDao {
  public static void main(String[] args) {
   System.out.println("ok");
   Student stud=new Student();
   stud.age=20;
   stud.name="zhangsan";
   stud.dept="computer";
   StudentDao sd=new StudentDao();
   sd.Save(stud);
   System.out.println(stud.dept);
  }
}

三 運(yùn)行

ok
zhangsan
20
computer
computer

四 怎樣在IDEA中導(dǎo)入jar包

可參考附錄:IDEA連接數(shù)據(jù)庫(導(dǎo)入jar包)

五 另外一種寫法

StudentDao.java

public class StudentDao<M> extends BaseDao<M> {    // 這里的M可以是任意合法標(biāo)識符
}

TestDao.java

public class TestDao {
 public static void main(String[] args) {
 System.out.println("ok");
 Student stud=new Student();
 stud.age=20;
 stud.name="zhangsan2";
 stud.dept="computer";
 StudentDao<Student> sd=new StudentDao<>();  // 這里要說明是Student
 sd.Save(stud);
 System.out.println(stud.dept);
 TeacherDao<Teacher> te= new TeacherDao<>();
 }
}

附:IDEA連接數(shù)據(jù)庫(導(dǎo)入jar包)

Java連接 MySQL 需要驅(qū)動包,最新版下載地址為:http://dev.mysql.com/downloads/connector/j/,解壓后得到j(luò)ar庫文件,然后在對應(yīng)的項目中導(dǎo)入該庫文件。

IDEA導(dǎo)入jar過程:新建文件夾(名稱任意,這里使用Lib),導(dǎo)入mysql-connector-java-*.*.**-bin.jar如下圖

右鍵點(diǎn)擊jar文件,然后點(diǎn)擊Add as Library,jar導(dǎo)入成功。后面百度java使用mysql即有詳細(xì)的訪問mysql的代碼。

ecplice導(dǎo)入jar過程:新建文件夾(名稱任意,這里使用Lib),導(dǎo)入mysql-connector-java-*.*.**-bin.jar如下圖

右鍵-》buildpath-》add to build path

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • IDEA-Maven環(huán)境配置及使用教程

    IDEA-Maven環(huán)境配置及使用教程

    這篇文章主要為大家詳細(xì)介紹了IDEA-Maven環(huán)境配置及使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java編程實現(xiàn)暴力破解WIFI密碼的方法分析

    Java編程實現(xiàn)暴力破解WIFI密碼的方法分析

    這篇文章主要介紹了Java編程實現(xiàn)暴力破解WIFI密碼的方法,結(jié)合具體實例形式分析了java暴力破解WiFi密碼的原理、操作步驟、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2018-12-12
  • Java?HashMap詳解及實現(xiàn)原理

    Java?HashMap詳解及實現(xiàn)原理

    Java?HashMap是Java集合框架中最常用的實現(xiàn)Map接口的數(shù)據(jù)結(jié)構(gòu),它使用哈希表實現(xiàn),允許null作為鍵和值,可以存儲不同類型的鍵值對,在Java中,HashMap被廣泛應(yīng)用于各種場景,如緩存、數(shù)據(jù)庫連接池、路由器等,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • Java concurrency線程池之線程池原理(三)_動力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency線程池之線程池原理(三)_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之線程池原理第三篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java中BigDecimal的加減乘除、比較大小與使用注意事項

    Java中BigDecimal的加減乘除、比較大小與使用注意事項

    對于不需要任何準(zhǔn)確計算精度的數(shù)字可以直接使用float或double,但是如果需要精確計算的結(jié)果,則必須使用BigDecimal類,而且使用BigDecimal類也可以進(jìn)行大數(shù)的操作,下面這篇文章給大家介紹了Java中BigDecimal的加減乘除、比較大小與使用注意事項,需要的朋友可以參考下。
    2017-11-11
  • SpringBoot整合Xxl-job實現(xiàn)定時任務(wù)的全過程

    SpringBoot整合Xxl-job實現(xiàn)定時任務(wù)的全過程

    XXL-JOB是一個分布式任務(wù)調(diào)度平臺,其核心設(shè)計目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡單、輕量級、易擴(kuò)展,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Xxl-job實現(xiàn)定時任務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Spring Boot2如何構(gòu)建可部署的war包

    Spring Boot2如何構(gòu)建可部署的war包

    這篇文章主要介紹了Spring Boot2如何構(gòu)建可部署的war包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java+Redis撤銷重做功能實現(xiàn)

    Java+Redis撤銷重做功能實現(xiàn)

    這篇文章主要介紹了Java+Redis實現(xiàn)撤銷重做功能,需要考慮撤銷的最大步數(shù),撤銷之后穿插著其他操作則不能再重做,所以引入分布式鎖Redisson進(jìn)行加鎖處理,防止對圖表的操作有并發(fā)請求導(dǎo)致處理撤銷邏輯混亂,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • Springboot中的異步任務(wù)執(zhí)行及監(jiān)控詳解

    Springboot中的異步任務(wù)執(zhí)行及監(jiān)控詳解

    這篇文章主要介紹了Springboot中的異步任務(wù)執(zhí)行及監(jiān)控詳解,除了自己實現(xiàn)線程外,springboot本身就提供了通過注解的方式,進(jìn)行異步任務(wù)的執(zhí)行,下面主要記錄一下,在Springboot項目中實現(xiàn)異步任務(wù),以及對異步任務(wù)進(jìn)行封裝監(jiān)控,需要的朋友可以參考下
    2023-10-10
  • 基于Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件

    基于Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2022-12-12

最新評論