<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Custom queries in Liferay(custom-sql)

    Prerequisites

    You should know how to create services with Service Builder. Also, you should know a little about SQL: the basic syntax and a notion on how it is used inside programming language code.

    The steps described here were performed over Liferay 6.0.6.

    Service.xml

    One part of service.xml :

    <entity name="Geschaeft" local-service="true" remote-service="false" table="Geschäfte">

        
    <!-- PK fields -->
        
    <column name="ID" db-name="[ID]" type="int" primary="true" />

        
    <!-- Other fields -->    
        
    <column name="Jahr" db-name="[Jahr]" type="Date" />
        
    <column name="Beschaffungsstrategie" db-name="[Beschaffungsstrategie]" type="String" />
        
    <column name="BuchVon" db-name="[Buch von]" type="String" />
        
    <column name="BuchNach" db-name="[Buch nach]" type="String" />
        
    <column name="Transaktionsdatum" db-name="[Transaktionsdatum]" type="Date" />
        
    <column name="Auftragsnummer" db-name="[Auftragsnummer]" type="String" />
        
    <column name="BeschaffungsZeitraumBeginn" db-name="[Besch#Zeitraum Beginn]" type="Date" />
        
    <column name="BeschaffungsZeitraumEnde" db-name="[Besch#Zeitraum Ende]" type="Date" />
        
    <column name="AnkaufVerkauf" db-name="[Ankauf/Verkauf]" type="String" />
        
    <column name="Geschaeftstyp" db-name="[Geschäftstyp]" type="String" />
        
    <column name="Produkt" db-name="[Produkt]" type="String" />
        
    <column name="LaufzeitVon" db-name="[Laufzeit von]" type="Date" />
        
    <column name="LaufzeitBis" db-name="[Laufzeit bis]" type="Date" />
        
    <column name="Sonderprodukt" db-name="[Sonderprodukt]" type="String" />
        
    <column name="KennzeichnungAuftraggeber" db-name="[Kennzeichnung des Auftraggebers]" type="String" />
        
    <column name="Abrechnungsrelevanz" db-name="[Abrechnungsrelevanz]" type="String" />
        
    <column name="FrueherePMSID" db-name="[Frühere PMS-ID oder Nr# Geschäftsimport]" type="String" /> 


        
    <!-- Order -->
        
    <order by="asc">
            
    <order-column name="Jahr" />
        
    </order>
            
    </entity>

     

    Let us beginning

    1.       Create a folder named “custom-sql” in source root.

    2.       Create a file named ” default.xml”, and type the following code. that mean that tell liferay to read others file from here.

    <?xml version="1.0"?>

    <custom-sql>
        
    <sql file="custom-sql/geschaeft.xml" />
        
    <sql file="custom-sql/otherTable.xml" />
        ..
        ..
    </custom-sql>

    3.       Create the .xml file which was added in default.xml.  and type the following code.

    <?xml version="1.0"?>

    <custom-sql>
        
    <sqlid="com.quantum.service.persistence.GeschaeftFinder.getAll">
          
    <![CDATA[
                SELECT
                        *
                FROM
                    Geschäfte
            
    ]]>
        
    </sql>
        
    <sql id="com.quantum.service.persistence.GeschaeftFinder.getList">
            
    <![CDATA[
                SELECT 
    CASE WHEN [Buch von] <> 'Standardbuch' THEN [Buch von] ELSE [Buch nach] END AS Portfolio,
                     [ID],
                     [Auftragsnummer]
                FROM Geschäfte
                WHERE CASE WHEN [Buch von] <> 'Standardbuch' THEN [Buch von] ELSE [Buch nach] END IN ('Spotmarkt','Krefeld A')
                AND [Frühere PMS-ID oder Nr# Geschäftsimport] NOT LIKE 'Q_%'
                AND Produkt <> 'intern_Spot'
                AND Produkt <> 'intern_EEG'
            
    ]]>
        
    </sql>
    </custom-sql>

     

     

    4.       Create a new class named “GeschaeftFinderImpl” in  com.quantum.service.persistence package, and extends BasePersistenceImpl, implements GeschaeftFinder which is not exist  so far. Don’t care about it. Continue type the following code:

    package com.quantum.service.persistence;

    import java.util.Iterator;
    import java.util.List;

    import com.liferay.portal.kernel.dao.orm.QueryUtil;
    import com.liferay.portal.kernel.dao.orm.SQLQuery;
    import com.liferay.portal.kernel.dao.orm.Session;
    import com.liferay.portal.kernel.dao.orm.Type;
    import com.liferay.portal.kernel.exception.SystemException;
    importcom.liferay.portal.service.persistence.impl.BasePersistenceImpl;
    import com.liferay.util.dao.orm.CustomSQLUtil;
    import com.quantum.model.Geschaeft;
    import com.quantum.model.impl.GeschaeftImpl;

    /**
     * 
     * 
    @author noah.xiang
     *
     
    */

    public class GeschaeftFinderImpl extendsBasePersistenceImpl<Geschaeft> implements GeschaeftFinder{
        
    private static String GETLIST = GeschaeftFinder.class.getName() + ".getList";
        
    private static String GETALL = GeschaeftFinder.class.getName() + ".getAll";

        
    public List<Geschaeft> getALL() throws SystemException {

            Session session 
    = null;

            
    try {
                session 
    = openSession();
                System.out.println(
    ">>>>>>>>>>>> "+ GETALL);
                String sql 
    = CustomSQLUtil.get(GETLIST);
                

                SQLQuery q 
    = session.createSQLQuery(sql);

                
    //q.addEntity("Geschäfte", GeschaeftImpl.class);
                q.addScalar("Portfolio", Type.STRING);
                q.addScalar(
    "ID", Type.INTEGER);
                q.addScalar(
    "Auftragsnummer", Type.STRING);

                Iterator
    <Object[]> itr = (Iterator<Object[]>)QueryUtil.iterate(q, getDialect(), -1-1);
                
    while (itr.hasNext()) {
                    Object[] array 
    = itr.next();
                    String portfolio 
    = (String)array[0];
                    
    int userId = (Integer)array[1];
                    String auftragsnummer 
    = (String)array[2];
                    System.out.println(
    ">>>>> "+ userId +"  "+ auftragsnummer+ " "+ portfolio);
                    
                }

                
    //List<Geschaeft> list = q.list();
                
                
    return null;
            }
     catch (Exception e) {
                
    throw new SystemException(e);
            }
     finally {
                closeSession(session);
            }

        }

    }

     

    5.       So far have many errors in your eclipse. But it doesn’t matter. Just ant build-service.xml. liferay will generate relevant code for us.

    6.       Find GeschaeftLocalServiceImpl class in com.quantum.service.impl package.  And create a method named public List<Geschaeft> getAll() throws SystemException. For the method you can rename whatever you want.

    public List<Geschaeft> getAll() throws SystemException{

                return geschaeftFinder.getALL();

          }

    7.       So far, all of configuration is finish. Go to action to call the method, like this:

    List<Geschaeft> geschaeft = GeschaeftLocalServiceUtil.getAll();

    8.       ant build-service.xml again. 

    9.       Wish you success! Think you.

     

     

    直接寫(xiě)的英文版的,不想再翻譯回來(lái)了。都不難理解,一看就能明白。不懂的請(qǐng)留言



    眼鏡蛇

    posted on 2011-10-27 17:44 眼鏡蛇 閱讀(2033) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Liferay

    評(píng)論

    # re: Custom queries in Liferay(custom-sql) 2013-05-08 13:30 Rasmi

    The entity that I'm creating doesnt have any columns, is that the reason why Finder and FinderUtil are not getting generated for me?  回復(fù)  更多評(píng)論   

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 蜜桃视频在线观看免费网址入口| 成人免费观看一区二区| 国产麻豆免费观看91| 亚洲高清中文字幕| 亚洲AV成人影视在线观看| 国产精品亚洲专区无码牛牛 | 国产精品亚洲а∨无码播放| 免费在线观看一区| 亚洲国产成人爱av在线播放| 国产亚洲一卡2卡3卡4卡新区| 日本免费一本天堂在线| 精品国产_亚洲人成在线| 免费在线观看你懂的| 亚洲精品天天影视综合网| 亚洲αⅴ无码乱码在线观看性色| 黄色网站软件app在线观看免费| 国外亚洲成AV人片在线观看| 国产免费爽爽视频在线观看 | 亚洲三级视频在线| 成人免费视频试看120秒| 久久精品国产亚洲av四虎| 91在线老王精品免费播放| 国产jizzjizz免费视频| 色哟哟国产精品免费观看| 亚洲色成人网站WWW永久| 免费污视频在线观看| 亚洲国产夜色在线观看| 日韩a级毛片免费观看| 国产美女视频免费观看的网站| 亚洲av中文无码乱人伦在线r▽| 91高清免费国产自产| 精品韩国亚洲av无码不卡区| 国产精品亚洲综合一区| 中文字幕免费高清视频| 亚洲中文字幕久久精品无码VA| 在线看无码的免费网站| 亚洲一卡一卡二新区无人区| 中文字幕第13亚洲另类| 91九色老熟女免费资源站| 国产亚洲情侣久久精品| 国产一区二区视频免费|