2013-01-24 8 views
8

मैं प्ले 2.1 (स्कैला) में केवल पढ़ने के लिए वेब एप्लिकेशन लागू कर रहा हूं। चूंकि मैं केवल जेएसओएन को पढ़े गए डेटा को पढ़ने और मार्शल कर रहा हूं, इसलिए मैं किसी भी अन्य डीएसएल और मैपिंग से बचना चाहता हूं।Play-Scala में सरल पढ़ने के लिए उपयोग करने के लिए SQL पहुँच परत क्या है?

मैंने dapper-dot-net का उपयोग करके .NET/C# में समान परियोजनाएं की हैं और चीजों से निकलने के तरीके से बहुत खुश हैं। कोई झगड़ा नहीं और बहुत बॉयलर प्लेट नहीं।

मैं वर्तमान में देख रहा हूँ: (anormtyped भी बहुत आशाजनक दिखता है, लेकिन जल्दी अपनाने के लिए करने के लिए मामला वर्ग निर्माता मापदंडों के चर के मैनुअल मानचित्रण बचना भयानक लगती है शायद है।।)

    • anormprequel
    • slick - क्योंकि यह 2.1 में एसक्यूएल करने का प्राथमिक तरीका और मुख्य रूप से सादे एसक्यूएल एपीआई माना जाता है
  • +0

    शायद मुझे स्लिम में देखने के बारे में अधिक स्पष्ट होना चाहिए क्योंकि इसे Play 2.1 में SQL करने का पसंदीदा तरीका माना जाता है। सादे एसक्यूएल प्रकार के शो पर उनके दस्तावेज वे अन्य दो एपीआई पसंद करते हैं। –

    उत्तर

    3

    Slick बहुत अच्छा है। सुनिश्चित करें कि आप इसके बारे में this short book देखें - कुछ मूलभूत बातें समझाने में यह बहुत अच्छा है। दस्तावेज़ों के साथ-साथ यह आपको तुरंत आगे ले जाएगा। साथ ही, ध्यान दें कि जिथब में दस्तावेज़ बेहतर हैं - नवीनतम अभी तक प्रकाशित नहीं हुआ है।

    सादा एसक्यूएल विकल्प का उपयोग करना बहुत अच्छी तरह से समर्थित है। सादा एसक्यूएल प्रश्नों के साथ आप प्रकार की जांच के मामले में ज्यादा नहीं हैं, हालांकि। के रूप में $name क्वेरी में वास्तव में नहीं है,

    sql"select * from coffees where name = $name".as[Coffee] 
    

    यह भी आप एसक्यूएल injction से रक्षा करेगा: अन्यथा, स्काला 2.10 का उपयोग कर एक सादे क्वेरी कर के रूप में आसान के रूप में है। अधिक जानकारी के लिए docs देखें।

    +0

    मूल प्रश्न पर मेरी टिप्पणी देखें। क्या आपने सादा एसक्यूएल एपीआई या सिर्फ दूसरों का इस्तेमाल किया है? –

    +0

    अब मैं देखता हूं। और स्लिम के लिए पसंद करना शुरू कर रहा हूँ। मुझे अभी भी 'GetResult' लिखना है? –

    0

    मैं GitHub पर एक परियोजना है जो बड़े पैमाने पर साफ-सुथरी से प्रेरित है, स्लिक से अधिक dbmapper

    लाभ कहा जाता है कर रहे हैं:

    • कोई डीएसएल - आप पहले से ही एक अच्छा डेटा डीएसएल पता है, यह कहा जाता है एसक्यूएल
    • पूरी तरह से अतुल्यकालिक
    • बहुत कम बॉयलरप्लेट कोड
    // Scala class that maps to the book table, with columns to match the class members 
    case class Book(
        bookId: Int, 
        title: String, 
        retailPrice: BigDecimal, 
        publishDate: LocalDate) 
    
    // mapping function from table row to Book class, 
    // auto generated at compile time by Scala Macro 
    implicit def rowToBook: RowData => Book = (r) => DbCodeGenerator.rowToClass[Book](r) 
    
    // query returning future list of books, 
    // safe query interpolation, the maxPrice is converted to a query argument 
    val maxPrice = 11.99 
    val allBooksFuture = DbAsync.exec[Book](q"select * from book where retail_price < $maxPrice")   
    
    val oneBook: Future[Book] = DbAsync.execOne[Book](q"select * from book where book_id = 2") 
    
    // returns Future[Option[]]  
    val maybeOneBook: Future[Option[Book]] = DbAsync.execOneOrNone[Book](q"select * from book where book_id = -123") 
    

    आप डॉटनैट दुनिया से व्यवसायिक पता तो dbmapper अजीब परिचित लगेगी:यहाँ एक उदाहरण है!

    +0

    बहुत आशाजनक लग रहा है! दुर्भाग्यवश हम पहले ही Play/Scala से चले गए हैं क्योंकि उस समय Play में उत्पादन में विंडोज के लिए समर्थन की कमी की वजह से। –

    संबंधित मुद्दे

     संबंधित मुद्दे