国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java連接MySQL數(shù)據(jù)庫增刪改查的通用方法(推薦)

Java連接MySQL數(shù)據(jù)庫增刪改查的通用方法(推薦)

2020-12-11 13:26Java教程網(wǎng) Java教程

下面小編就為大家?guī)硪黄狫ava連接MySQL數(shù)據(jù)庫增刪改查的通用方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

運行環(huán)境:eclipse+MySQL

以前我們Java連接MySQL數(shù)據(jù)庫都是一個數(shù)據(jù)庫寫一個類,類下面寫好多方法,要是多個數(shù)據(jù)庫,就要寫多個類多個方法,導(dǎo)致代碼編寫太過于繁瑣,所以為了改變這樣的繁瑣,我將連接數(shù)據(jù)庫的方法進(jìn)行了一系列的封裝,使用戶傳入一個對象值Object就可以得到想要的。

我在之前寫過一篇普通的Java連接MySQL數(shù)據(jù)庫,大家可以看看,以便對比參考之后就知道差距了 數(shù)據(jù)庫——MySQL——>Java篇

接下來我給大家講講如何將這個不可復(fù)用,又多重復(fù)的連接代碼,封裝起來,非常好用

基本思想:

我們連接數(shù)據(jù)庫的時候,寫的方法都是要一個個類 的去寫,其中的方法不計其數(shù),連接數(shù)據(jù)庫都是需要:

Class.forName():加載驅(qū)動 ——》com.mysql.jdbc.Driver

DriverManager.getConnection():驅(qū)動管理,連接到數(shù)據(jù)庫 三個屬性1.數(shù)據(jù)庫地址 2.數(shù)據(jù)庫用戶名 3.密碼

createStatement():創(chuàng)建Statement對象

ResultSet:執(zhí)行sql語句獲得結(jié)果集,再遍歷

那么我們?yōu)榱四芡ㄓ茫敲雌渲械模簲?shù)據(jù)庫名,sql語句,遍歷結(jié)果集要得到的結(jié)果,都是要根據(jù)不同數(shù)據(jù)庫根據(jù)傳入?yún)?shù)不同而變化的

首先每個項目開始前都要將數(shù)據(jù)庫實體化,每個表都是一個實體類,表名是類名,字段為其屬性,再用set和get方法這些屬性

再根據(jù)反射機制,對象是我們表的實例化對象,根據(jù)我傳入方法的這個參數(shù)對象,獲取其中的方法,屬性,屬性值,類型等一系列的東西,來實現(xiàn)方法的封裝通用

代碼演示

先演示一個查詢:通過傳入這個表的實體類,通過一系列的放射機制,對比拼裝成一個查詢方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public static List<Object> query(Class<?> obj) {
    Statement st=null;
    List<Object> list=new ArrayList<>();
    //數(shù)據(jù)庫MySQL的地址
        String DBURL="jdbc:mysql://localhost:3306/lms_leave?useUnicode=true&characterEncoding=utf-8";
        String DBName="root"; //登入用戶名
        String DBPwd="123456";//登入密碼
        //加載驅(qū)動
        try {
          Class.forName("com.mysql.jdbc.Driver");
        //連接數(shù)據(jù)庫
        Connection conn=DriverManager.getConnection(DBURL,DBName,DBPwd);
        //創(chuàng)建Statement對象
        st=conn.createStatement();
        ResultSet rs=st.executeQuery("select * from "+obj.getSimpleName());
        //獲取傳入類中的方法
        Method[] methods=obj.getMethods();
        //設(shè)置一個方法的list集合,下面將方法放入其中,以便調(diào)用
        List<Method> list_m= new ArrayList<>();
        //類中有許多方法,過濾一些方法,獲取自己想要的方法
        for(int i=0;i<methods.length;i++){ //過濾方法
          //判斷方法名字中是否有set這個提取
          if (methods[i].getName().contains("set")) {
            //將方法添加到list中
            list_m.add(methods[i]);
          }
        }
        //創(chuàng)建字符串string集合,獲取下面的字段名存入
        List<String> fieldname=new ArrayList<>();
        //獲取類中的屬性,其屬性對應(yīng)數(shù)據(jù)庫中的字段
        Field[]  f=obj.getDeclaredFields();
        //循環(huán)將字段中的名字首個變大寫
        for (int i = 0; i < f.length; i++) {
          //獲取名字
          String field=f[i].getName();
          //變大小寫,存入fieldname集合
          fieldname.add(upperCase(field));
        }
        //獲取得到結(jié)果集(rs)的結(jié)構(gòu),比如字段數(shù)、字段名等。
        ResultSetMetaData rsmd=  rs.getMetaData();
        //循環(huán)讀取結(jié)果集中的數(shù)據(jù)添加到list集合中
        while (rs.next()) {
          //創(chuàng)建一個傳入類對象user
          Object user=obj.newInstance();
          //遍歷方法的集合
          for (Method m : list_m) {
            //遍歷字段的集合
            for (int i = 0; i < f.length; i++) {
              //方法和字段作比較,查看方法名中是否含有這個字段名,兩者匹配
              if (m.getName().contains("set"+fieldname.get(i))) {
                //匹配成功 ,則去得到rsmd去獲取數(shù)據(jù)庫中的字段名,rs.getObject,再根據(jù)獲取的這個字段名去得到這個字段值
                Object value=rs.getObject(rsmd.getColumnName(i+1));
                //獲取這個字段的類型,以便去儲存這個值的類型
                Class<?> type=f[i].getType();
                //是int類型的轉(zhuǎn)化
                if (type==int.class) {
                  value=new Integer(value.toString());
                }
                //string類型的轉(zhuǎn)化
                if (type==String.class) {
                  value=value.toString();
                }
                //m是user對象中的方法,設(shè)置其值
                m.invoke(user, value);
              }
            }
          }
          //將的到的user對象實例添加到list集合中
          list.add(user);
        }
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        return list;
  }

大家可以參考這個方法完全可以改裝成剩余的插入,修改,刪除

再給大家提示一下插入的方法封裝重要的一點是,獲取其中要插入的字段,根據(jù)插入語句拼接成一個完整的sql語句就可以完成

?
1
2
//m.invoke(user);我的理解是運行user類下的方法m,得到返回值
Object object=m.invoke(user);

這些東西需要自己多去思考總結(jié),希望對大家有用,我就不多寫了,留給大家一點思考的空間,需要剩下的方法封裝可以留言告訴我

以上這篇Java連接MySQL數(shù)據(jù)庫增刪改查的通用方法(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久69精品久久久久久国产越南 | 欧美日韩一级二级三级 | 亚洲国产久 | 久草福利在线视频 | 在线国产一区二区 | 综合九九 | 欧美一区永久视频免费观看 | 亚洲电影二区 | 日韩一二三区视频 | 视频一区中文字幕 | 中文字幕一区二区三区四区五区 | 在线播放一区二区三区 | 日日夜夜精品视频 | 婷婷激情五月 | 午夜视频污 | 96自拍视频 | 国产99精品| 久色 | 希岛爱理av一区二区三区 | 国产亚洲精品女人久久久久久 | 精品久久中文字幕 | 中文字幕免费视频 | 欧美一区永久视频免费观看 | 成人h动漫精品一区二区器材 | 欧美中文字幕一区二区三区亚洲 | 午夜精品在线 | 国产精品成人3p一区二区三区 | 中文字幕第一区 | 国产成人影院 | 自由成熟xxxx色视频 | 黄在线免费观看 | av网址在线播放 | 欧美亚洲视频 | 精品福利片| 亚洲国产高清高潮精品美女 | 欧美激情国产日韩精品一区18 | 亚洲精品欧美精品 | 国产在线一区二区三区 | 在线观看的av | 国产在线拍揄自揄拍视频 | 国产精品久久av |