顧客管理系統(tǒng)框架的搭建

首先我們來看一下整個(gè)框架的代碼結(jié)構(gòu)

Paste_Image.png

1,創(chuàng)建bean包:

這里是用來存儲(chǔ)一些實(shí)體類對(duì)象言蛇,可以保存實(shí)體的一些屬性數(shù)據(jù)僻他。

  • 創(chuàng)建Customer類來保存一些顧客的信息
    這里我只寫了顧客類的屬性
    還需要寫它的get和set方法
    還有重寫toString
    還要實(shí)現(xiàn)序列化接口

    private Long id;
    private String name;
    private String gender;
    private String telephone;
    private String address;

2,創(chuàng)建dao包:

這里寫的是一些連接數(shù)據(jù)庫的增刪改查的類

  • 創(chuàng)建類CustomerDao.java
    這里面只要是寫數(shù)據(jù)庫的增刪改查
    下面是它的一些方法
public void save(Customer customer){
      //保存數(shù)據(jù)到數(shù)據(jù)庫中
}
public void update(Customer customer){ //更新數(shù)據(jù)庫中的數(shù)據(jù)       
}
public Customer findByName(String name){//根據(jù)名字查找
}
public void delete(){//刪除數(shù)據(jù)庫中的數(shù)據(jù)
}
public List<Customer> findAll(){//查找所有的數(shù)據(jù)
}

    在這些方法中比較復(fù)雜的方法就是findByName按照名字來查找宵距,我講解一下這個(gè)方法的實(shí)現(xiàn)。
  1. 我們可以發(fā)現(xiàn)當(dāng)進(jìn)行查詢數(shù)據(jù)的時(shí)候吨拗,大部分的代碼都類似满哪,可變的部分就是三個(gè)。
    一劝篷,傳入的sql語句
    二哨鸭,sql語句中傳入的參數(shù),數(shù)量不確定并且類型也不確定娇妓,所以要寫成Object類型的數(shù)組
    public Customer findByName(String name){
    Customer data=null;
    String sql = "select * from ctmer where name=?";
    Object[] obj={name};
    data=(Customer) temp.findUnique(sql, obj, new Mapper());
    return data;
}

三像鸡,就是返回的查詢結(jié)果,你可能需要一個(gè)數(shù)據(jù)也可能兩個(gè)數(shù)據(jù)哈恰,所以這里用到了內(nèi)部類來傳遞你想要的結(jié)果集

class Mapper implements Impper<Customer>{
    @Override
    public Customer map(ResultSet rs) {
        Customer cust=new Customer();
        try {
            if(rs.next()){
            long id = rs.getLong("id");
            String name = rs.getString("name");
            String gender = rs.getString("gender");
            String telephone = rs.getString("telephone");
            String address = rs.getString("address");
            cust=new Customer(id, name, gender, telephone, address);
            System.out.println(id+"=="+name+"=="+gender+"=="+telephone+"=="+address);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cust;
    }    
}

3,創(chuàng)建service包

這里主要寫的是業(yè)務(wù)邏輯的代碼

  • 創(chuàng)建接口 ICustomerService.java
    下面是該接口中的方法
//注冊(cè)
void register(Customer customer) throws  ServiceException;
//登陸
Customer login(String username,String passworld);
//更新信息
Customer updateInfo(Customer newCustomer);
  • 創(chuàng)建該接口的實(shí)現(xiàn)類CustomerServiceImp.java
    在這里調(diào)用dao層的方法實(shí)現(xiàn)數(shù)據(jù)的增刪改查只估。

下面是注冊(cè)邏輯的代碼實(shí)現(xiàn)

>     @Override
public void register(Customer customer) throws ServiceException{
    if(dao.findByName(customer.getName())==null){
        dao.save(customer);  //這里調(diào)用了dao層的保存數(shù)據(jù)到數(shù)據(jù)庫的方法
        System.out.println("注冊(cè)成功");
    }else{
        throw new ServiceException("注冊(cè)失敗");
    }
}

4,創(chuàng)建包c(diǎn)ommon

這里主要寫的就是一些封裝好的類可以直接調(diào)用

  • 創(chuàng)建ConnectionFactory類
    它是封裝了連接數(shù)據(jù)庫的類

1)靜態(tài)參數(shù)的配置

    static{
    driver="com.mysql.jdbc.Driver";
    password="root";
    user="root";
    url="jdbc:mysql://127.0.0.1:3306/customer";
    //從文件系統(tǒng)中獲取參數(shù),方便后期放在配置文件中志群,可以直接改為其他數(shù)據(jù)庫的參數(shù)
}

2)封裝的兩個(gè)靜態(tài)方法
第一個(gè)方法:其他數(shù)據(jù)庫也是這兩個(gè)部分必寫,只是傳遞進(jìn)來的參數(shù)不同蛔钙,因?yàn)橥獠啃枰玫絚onnection來進(jìn)行sql語句的執(zhí)行锌云,所以要返回出去
第二個(gè)方法:關(guān)閉數(shù)據(jù)庫的三個(gè)參數(shù)的鏈接,這是會(huì)多次調(diào)用的

   public static Connection getConnection() throws Exception{
    Class.forName(driver);
    return DriverManager.getConnection(url, user, password);}
public static void close(ResultSet rs,PreparedStatement pstmt,Connection conn) throws Exception{}
  • 創(chuàng)建類JDBCTemplate.java
    這里封裝的是數(shù)據(jù)庫鏈接的代碼吁脱,因?yàn)樵赿ao層的方法中進(jìn)行增刪改查時(shí)桑涎,大量的代碼是類似的,只是傳遞的sql語句不同兼贡,查詢返回的結(jié)果不同攻冷,封裝后就可以進(jìn)行代碼的復(fù)用

  • 創(chuàng)建接口Impper.java
    這個(gè)接口的目的是為了讓用戶可以傳遞用戶想要的結(jié)果集,畢竟你想查詢多少個(gè)屬性是不確定的紧显,屬性的類型也是不確定的讲衫,屬性的bean類也是不確定的就要用到泛型

 public interface Impper<T> {
        T map(ResultSet res);
    }

6,最后還有一個(gè)異常類

這里主要是為了讓用戶在調(diào)用業(yè)務(wù)邏輯(ICustomerService)中代碼時(shí)會(huì)有一個(gè)提示孵班,比如用戶登陸成功時(shí)怎么處理涉兽,登陸失敗時(shí)怎么處理枷畏。
1)ServiceException繼承Exception類
2)ICustomerService接口中方法拋出異常ServiceException虱饿,因?yàn)橹挥薪涌趻伋隽水惓W宇惒趴梢話伋鲎约憾x的異常
3)實(shí)現(xiàn)類CustomerServiceImp.java在方法中拋出異常,并且在注冊(cè)失敗時(shí)渴肉,輸入失敗信息進(jìn)去

throw new ServiceException("注冊(cè)失敗");

測(cè)試:

   Customer cust=new Customer();
    cust.setData(3L,"fei","famel","12345678900","nanchang");
        try {
            customerService.register(cust);
        } catch (ServiceException e) {
            e.printStackTrace();
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仇祭,一起剝皮案震驚了整個(gè)濱河市颈畸,隨后出現(xiàn)的幾起案子乌奇,更是在濱河造成了極大的恐慌礁苗,老刑警劉巖徙缴,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疏叨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門考廉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秘豹,“玉大人,你說我怎么就攤上這事昌粤。” “怎么了凄贩?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵袱讹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我捷雕,道長(zhǎng),這世上最難降的妖魔是什么救巷? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任浦译,我火速辦了婚禮,結(jié)果婚禮上帽哑,老公的妹妹穿的比我還像新娘。我一直安慰自己妻枕,他們只是感情好她肯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布晴氨。 她就那樣靜靜地躺著,像睡著了一般籽前。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肄梨,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天众羡,我揣著相機(jī)與錄音蓖租,去河邊找鬼。 笑死蓖宦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的柠偶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼瓤荔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼轴脐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤涎嚼,失蹤者是張志新(化名)和其女友劉穎挑秉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體立哑,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铛绰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年产喉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敢会。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸥昏。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吏垮,死狀恐怖罐旗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尤莺,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布媳谁,位于F島的核電站晴音,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锤躁。R本人自食惡果不足惜或详,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一霸琴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梧乘,春花似錦澎迎、人聲如沸夹供。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袁铐。三九已至横浑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洒缀,已是汗流浹背欺冀。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工隐轩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘫俊。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓悴灵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親川尖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茫孔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理缰贝,服務(wù)發(fā)現(xiàn),斷路器赋朦,智...
    卡卡羅2017閱讀 134,661評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法宠哄,類相關(guān)的語法嗤攻,內(nèi)部類的語法,繼承相關(guān)的語法妇菱,異常的語法暴区,線程的語...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評(píng)論 0 11
  • 印象中平靜的心境仙粱,有幾次在童年時(shí)鄉(xiāng)村外婆家的雨夜伐割。9點(diǎn)已經(jīng)睡到了木床刃唤。外面的雨聲淅淅刷刷,落在院子里的水塘尚胞,打在松...
    野李子閱讀 242評(píng)論 0 0
  • 又到柳葉飄落時(shí) 無數(shù)彎眉滿地依 生來銷魂日做丘 少來伴夏幾多啼
    田萍閱讀 216評(píng)論 2 3