x:select 조치는 관계형 데이터베이스에서 조회를 실행하기 위해 사용됩니다. 조회에서 비어 있지 않은 결과 세트가 생성된 경우, 행은 Application Server 시스템의 메모리에 캐시됩니다. 이 행 중 하나(초기에는 첫 번째 행)는 항상 현재 행으로 간주됩니다.
이 조치를 사용하면 id 속성에 이름을 지정한 변수를 사용하여 액세스할 수 있는 DBSelect Bean이 작성됩니다.
DBSelect Bean의 기본 기능을 사용할 수 있도록 JSP 조치가 제공됩니다. x:nextRow 및 x:previousRow를 사용하여 결과 세트에서 다른 행에 위치시킬 수 있습니다. x:updateRow, x:insertRow 및 x:deleteRow 조치를 사용하여 추가 SQL 문을 작성하지 않고 결과 세트에서 행을 변경할 수 있습니다. x:getColumn 및 x:setColumn 조치를 사용하여 결과 세트의 열 값에 액세스할 수 있습니다. SQL 문에 매개변수가 있으면 x:getParameter 및 x:parameter 조치를 사용하여 액세스할 수 있습니다.
DBSelect Bean의 모든 메소드도 scriptlet을 사용하여 실행할 수 있고 해당되는 모든 특성은 표준 jsp:getProperty 및 jsp:setProperty 조치를 사용하여 액세스할 수 있습니다.
<x:select id = "name" scope = "page|request|session" connectionSpec = "connectionSpec_id" connectionSpecRef = "connectionSpecRef" maxFieldSize = "numberOfBytes" maxRows = "numberOfRows" distinctTypesEnabled = "true|false" timeOut = "seconds" readOnly = "true|false" nullToken = "string" trace = "true|false" > <x:sql> </x:sql> <x:parameter parmName = "name" position = "number" type = "sqltype" mode = "in|out|inout" value = "parmValue" /> </x:select>
x:select 조치에는 다음과 같은 속성이 있습니다.
참조된 조치는 데이터베이스와의 연결을 작성하는 데 필요한 정보를 제공합니다. x:batch 조치에서 식별된 connectionSpec 조치를 사용하는, x:batch 조치 본문 내에서 조치가 발생할 경우 이 속성을 생략하십시오. 두 위치 모두에 지정하면 오류 플래그가 표시됩니다.
connectionSpec 또는 connectionSpecRef 중 하나를 지정할 수 있으며 둘 다 지정할 수는 없습니다.
x:select 조치 본문에는 다음과 같은 태그가 올 수 있습니다.
다음 조치는 범위가 세션인 select1 이름의 DBSelect Bean을 작성합니다. 이 조치는 conn1의 정보를 사용하여 데이터베이스에 연결하고 결과 세트에 EMPLOYEE 테이블의 사원 번호 및 이름이 있는 Select 문을 실행합니다. Select는 매개변수를 포함하지 않지만(데이터베이스 관점에서) 대체된 요청 오브젝트의 사용자 입력을 수반합니다.
<x:select id="select2" scope="session" connectionSpec="conn1"> <x:sql> SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE WORKDEPT = ? </x:sql> <x:parameter position="1" type="VARCHAR" value='<%= request.getParameter("department") %>' /> </x:select>
다음 조치는 select3 이름의 DBSelect Bean을 작성합니다. 이 예제는 이전 예제와 유사하지만 매개변수가 position이 아닌 name으로 식별됩니다.
<x:select id="select3" scope="session" connectionSpec="conn1"> <x:sql> SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE WORKDEPT = :dept </x:sql> <x:parameter parmName="dept" type="VARCHAR" value='<%= request.getParameter("department") %>' /> </x:select>
다음 조치는 이전 예제 중 하나의 결과 세트에 있는 행 사이에 반복하여 x:getColumn 조치를 통해 요청 출력에서 열 값을 기록합니다. x:repeat 조치에 대한 세부사항은 <x:repeat>를, x:getColumn 조치에 대한 세부사항은 <x:getColumn>을 참조하십시오.
<table border="1" width="300" height="100"><tbody> <tr> <td>Employee number:</td> <td>Name:</td> </tr> <x:repeat name="select1" over="rows"> <tr> <x:repeat over="columns"> <td><x:getColumn /></td> </x:repeat> </tr> </x:repeat>
다음 조치는 이전 예제 중 하나의 결과 세트에 있는 행 사이에 반복하여 x:getColumn 조치를 통해 요청 출력에서 열 값을 기록합니다. x:repeat 조치에 대한 세부사항은 <x:repeat>를, x:getColumn 조치에 대한 세부사항은 <x:getColumn>을 참조하십시오.
<table border="1" width="300" height="100"><tbody> <tr> <td>Employee number:</td> <td>Name:</td> </tr> <x:repeat name="select1" over="rows"> <tr> <td><x:getColumn colName="EMPNO"/></td> <td><x:getColumn colName="EMPNAME"/></td> </tr> </x:repeat></tbody></table>