JDBC2

jdbcUtils

1.四大參數(shù)的出現(xiàn)了硬編碼

static String className;
    static String url;
    static String user;
    static String password;

     static  {
        try {
            Properties p = new Properties();
            p.load(new FileInputStream("jdbc.properties"));
            className = p.getProperty("className");
            url = p.getProperty("url");
            user = p.getProperty("user");
            password = p.getProperty("password");
            Class.forName(className);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException{
              Connection connection = DriverManager.getConnection(url,user,password);
              return connection;
    }

2.sql字符串拼接:不方便,sql有注入
通過prepareStatement防止sql注入

String sql="select * from user where username=? and password=?";
        PreparedStatement ps = con.prepareStatement(sql);
        for(int i=0;i<value.length;i++){
        ps.setObject(i+1,value[i]);
        }
        ResultSet rs = ps.executeQuery();

3.javabean的封裝不方便
泛型+反射

注意:類中的數(shù)據(jù)名要和表中的完全相同

//得到單個對象
    if(!rs.next()){
            return null;
        }
        T obj = clazz.newInstance();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            String name = field.getName();
            field.setAccessible(true);
            if(field.getType()==int.class){
            int value1=rs.getInt(name);
                field.set(obj, value1);
            }
            else if(field.getType()==String.class){
                String  value1=rs.getString(name);
                field.set(obj, value1);
            }
            else if(field.getType()==float.class){
                float   value1=rs.getFloat(name);
                field.set(obj, value1);
            }
            else{
                double  value1=rs.getDouble(name);
                field.set(obj, value1);
            }
            
        }
        return obj;
//得到對象的集合
    ArrayList<T> list = new ArrayList<T>();
        Connection con = getConnection();
        PreparedStatement ps = con.prepareStatement(sql);
        for (int i = 0; i < value.length; i++) {
            ps.setObject(i + 1, value[i]);
        }
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            T obj = getBean(clazz, rs);
            list.add(obj);
        }
        return list;
    }

查找單個數(shù)

  if(rs.next()){
            return rs.getObject(1);
        }
        return null;
            String sql="select count(*) from user";
        Number num = (Number)JdbcUtils.selectNum(sql);
        int i = num.intValue();
        System.out.println(i);

查詢封裝

        ArrayList list = new ArrayList();
        String sql = "update user set id=?";
        list.add(user.getId());
        if (user.getUsername() != null &&!"".equals(user.getUsername())) {
             sql=sql+",username=?";
             list.add(user.getUsername());
        }
        if (user.getPassword()!= null &&!"".equals(user.getPassword())) {
            sql=sql+",password=?";
            list.add(user.getPassword());
        }
        sql=sql+" where id="+user.getId();
        int i = JdbcUtils.update(sql, list.toArray());
        return i;
    }

增刪改封裝

        ArrayList list = new ArrayList();
        String sql = "select * from user where 1=1";
        if (user.getUsername() != null && !"".equals(user.getUsername())) {
            sql = sql + " and username like ?";
            list.add("%" + user.getUsername() + "%");
        }
        if (user.getPassword() != null && !"".equals(user.getPassword())) {
            sql = sql + " and password like ?";
            list.add("%" + user.getPassword() + "%");
        }
        System.out.println(sql);
        System.out.println(list);
        ArrayList<User> list2 = JdbcUtils.toList(User.class, sql,
                list.toArray());
        return list2;

配置文件

property是map與io流(FilleInputStream)的結(jié)合

Property p=new Property();//創(chuàng)建對象
p.load(new FileInputStream("文件名"));//讀取文件對象
Object obj=p.getProperty(key)//傳入key得到文件中對應(yīng)的對象
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镜遣,一起剝皮案震驚了整個濱河市铺遂,隨后出現(xiàn)的幾起案子衫哥,更是在濱河造成了極大的恐慌,老刑警劉巖襟锐,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撤逢,死亡現(xiàn)場離奇詭異,居然都是意外死亡粮坞,警方通過查閱死者的電腦和手機(jī)蚊荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莫杈,“玉大人互例,你說我怎么就攤上這事◇菽郑” “怎么了媳叨?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長关顷。 經(jīng)常有香客問我肩杈,道長,這世上最難降的妖魔是什么解寝? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮艘儒,結(jié)果婚禮上聋伦,老公的妹妹穿的比我還像新娘夫偶。我一直安慰自己,他們只是感情好觉增,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布兵拢。 她就那樣靜靜地躺著,像睡著了一般逾礁。 火紅的嫁衣襯著肌膚如雪说铃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天嘹履,我揣著相機(jī)與錄音腻扇,去河邊找鬼。 笑死砾嫉,一個胖子當(dāng)著我的面吹牛幼苛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焕刮,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舶沿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了配并?” 一聲冷哼從身側(cè)響起括荡,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溉旋,沒想到半個月后畸冲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡低滩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年召夹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恕沫。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡监憎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婶溯,到底是詐尸還是另有隱情鲸阔,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布迄委,位于F島的核電站褐筛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叙身。R本人自食惡果不足惜渔扎,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望信轿。 院中可真熱鬧晃痴,春花似錦残吩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至紧唱,卻和暖如春活尊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漏益。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工蛹锰, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遭庶。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓宁仔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親峦睡。 傳聞我的和親對象是個殘疾皇子翎苫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法榨了,內(nèi)部類的語法煎谍,繼承相關(guān)的語法,異常的語法龙屉,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 1. 簡介 1.1 什么是 MyBatis 呐粘? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評論 0 4
  • 【一剪梅】北宋. 李清照 紅藕香殘玉簟秋转捕,輕解羅裳作岖,獨上蘭舟。 云中誰寄錦書來五芝?雁字回時痘儡,月滿西樓。 花自飄零水自...
    晨若閱讀 355評論 5 4
  • 還在為吃不好枢步,睡不好沉删,身材不好發(fā)愁嗎?趕緊訂閱~聯(lián)橋健康生活~醉途,微信關(guān)注~聯(lián)橋健康生活館~矾瑰,這里有各種方法,肯定有...
    聯(lián)橋健康生活閱讀 219評論 0 0