XML 파일에 부등호를 포함한 쿼리를 넣을 때 에러가 발생한다.

The content of elements must consist of well-formed character data or markup.

쿼리를 <![CDATA[]]> 내에 쓰면 해결 된다.

ex) 

<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

column_name1 < 10    에러 발생

</select>

해결:

<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

<![CDATA[ column_name1 < 10 ]]>

</select>


혹은


<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

column_name1 &lt; 10

</select>

&gt; (>),  &lt; (<) 도 사용 가능하다

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
스마트 에디터  (0) 2014.07.22
페이징  (0) 2014.07.16
페이징 로직  (0) 2014.07.07
Posted by 스트라
,

리스트에서 빠질 수 없는게 페이징 시스템입니다…

[1][2][3][4][5][6][7][8][9][10]

위와 같은 페이지를 누름으로써 그에 대한 리스트만 출력하는 것이지요…

이렇게 하는 이유는 전체의 리스트를 화면에 다 보여준다면 빨리 찾을 수도 없고

속도 또한 느립니다. 그래서 페이지로 구분해놓으면 찾아가기 싶게 됩니다..

여기서는 가장 기본적인 개념으로 페이징 시스템을 구현하겠습니다….

방법은 여러가지니깐 여러 각도로 시도해보는 것도 좋을 듯 합니다….

페이징 시스템에서 필요로 하는 것이

1. 현재 페이지

2. 현재 페이지의 블럭

(블럭은 페이지가 속해있는 그룹입니다. 예를 들어서 한 블럭에는 10페이지가 들어가는데 현재의

페이지가 20 페이지 라면 블럭은 두번째 블럭으로 선택이 됩니다.. 그럼 표시는

[11][12][13][14][15][16][17][18][19][20] 으로 되겠죠…

이렇게 하는 이유는 페이지 또한 무한히 많을 수 있기 때문에 페이지 자체의 페이징 시스템을

만드는 거죠. 그것이 블럭입니다. )

3. 전체 행의 개수

(이것을 알아야지만 현재 페이지가 속해 있는 블럭을 계산 할 수 있습니다. )

4. 현재 페이지의 블럭에서 시작페이지와 끝 페이지

(숫자 더하기, 빼기 계산만 하면 되기 때문에 특별한 건 없습니다.)

5. 한 페이지에 보여질 리스트 수 (limitList)

한 블럭에 보여질 페이지 수 (limitPage)

(위의 두가지가 있어야지 전체적인 계산이 됩니다… ^^ )

이상 위의 다섯가지로 일단은 페이지 시스템에 대해서 보여지는 것이 가능하구여

이제 가상으로 페이징 시스템을 만들어 보겠습니다…

1. 현재의 페이지 : 1페이지

2. 현재의 블럭 : 1블럭

3. 전체 행의 개수(total) : 100

4. limitList : 10, limitPage : 5

이렇게 네개의 구성요소로서 시작을 합니다….

리스트가 젤 처음 보여질 때 페이징 시스템은 1블럭의 1페이지를 가리키고 있어야 합니다..

1. 현재 페이지에서 현재 블럭구하는 방법

block=ceil(page/$limitPage);

=> ceil 함수는 만약 숫자가 4.5라고 하면 올림을 하여 5가 되게 하는 함수입니다.

2. 현재 블럭의 시작 페이지와 끝 페이지

// 현재 블럭이 1블럭이라면 1이지만 2 블럭일때는 11이 되어야 합니다

startPage=(block-1)*$limitPage + 1;

// 마지막 블럭에서 페이지가 총페이지 수 보다 커지면 안되기 때문에

// 미리 총 페이지 수를 구해서 큰지 확인해줍니다.

endPage=startPage + $limitPage – 1;

if (endPage>totalPage ) endPage=totalPage;

3. 총 페이지 수 구하는 방법

totalPage=ceil(total/$limitList);

4. 그럼 페이징 시스템을 출력하는건 간단하죠…

for (i=startPage; i<=endPage; $i++)

{

if (page==i) echo “[$i]“;

else echo “[$i]“;

}

현재 페이지는 찐하게 표시해줍니다. 그럼 기본적인 페이지 표시 시스템이 끝이 납니다.

설마 여기서 끝내는건 아니겠죠.. ^^

아까 블럭이란걸 만들었기 때문에 블럭 자체도 이동할 수가 있어야 겠습니다..

보통 게시판에 보면 ◀, ▶ 이런 화살표로 표시 되거나 prev, next 라는 말로 표시되거나 합니다.

[prev] 1 2 3 4 5 6 7 8 9 10 [next]

그래서 블럭을 옮길 수 있게 됩니다..

1. 현재의 블럭이 어딘지 알고 그 앞에 블럭이 있는지 뒤에 블럭이 있는지를 계산해서 표시합니다

현재 블럭은 위에서 구했기 때문에 넘어가구여

// 현재의 블럭이 앞에 있는 아닌지 검사

if ($block <= 1) echo "";

else echo “[prev]“;

// 위의 페이징 시스템 표시

// 마지막 블럭인지 아닌지 검사

totalBlock=ceil(totalPage/$limitPage);

if (block>=totalBlock) echo ” “;

else echo ["next"];

위와 같이 쉽게 구할 수 있습니다. 이건 완전히 산수네요.. ㅋㅋㅋ

이제 페이징 시스템의 마지막 단계가 남았습니다..

디비 관련 작업입니다.. ^^

정렬한 것에 대해서 그 페이지에 맞는 내용을 가져와야 하기 때문에

여기서는 디비 쿼리 명령중 limit라는게 사용됩니다.

예 : select * from test order by groupNum desc, listNum asc limit start,limitList;

젤 마지막에 변수 두개만 설정 해주면 되는데요,,

두가지 옵션은 처음에는 시작되는 row의 번호구여, 뒤에꺼는 몇개를 얻어올껀지 입니다

0, 5 하면 0번째에서 5개행을 얻어온다는 소리하고 같죠.. ^^

마지막 $limitList는 아까 위에 있는 변수랑 같은 거기 때문에 그 대로 주시면 되구여

$start만 계산하면 됩니다..

계산하는 방법은 1페이지 일때 1에서 10, 2 페이지 일때 11에서 20 이런식으로 된다면

디비에서 row는 0부터 시작하기 때문에 0에서 9, 10에서 19 이런식으로 됩니다. 하나 작죠.. ^^

그럼 어떻게 계산을 하느냐…

(page1)limitList;

어디서 많이 본 공식인데..ㅋㅋ 저위에 보면 블럭의 시작페이지 구하는 공식하고 비슷한데

+1 이 빠졌네요 .. 왜 그렇냐면 1씩 작으니깐요.. ^^ 그래서 +1을 해 줄 필요가 없죠….

그래서

select * from test order by groupNum desc, listNum asc limit 0, 10;

하면 0번째 행에서 10개의 행을 얻어오는것이니 바로 리스트에 적용할 수 있겠죠..

리스트 화면에서는 이것에 대한 처리만 해주면 되구여… ^^

약간씩 복잡해 보일 수도 있지만 실상은 더하기 빼기밖에 없네요.. ^^

우리 모두 게시판을 누워서 떡 먹듯 다루는 그 날까지.. 화이팅.. ^^

ps . 예전에 개발해본적이 있는데 jsp로 다시 할라니 조금 헤멧넹…
암튼 이런 자주 사용하는 로직은 정리가 필수다..


출처 : http://freesearch.pe.kr/archives/21

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
스마트 에디터  (0) 2014.07.22
페이징  (0) 2014.07.16
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점.  (0) 2014.07.07
Posted by 스트라
,
public abstract interface BoardDao {
	//게시판 리스트 get
	public List select_board_list(String id);
	
	//게시글 get
	public BoardBean select_board_view(int no);
	
	//게시판 insert
	public int insert_board(BoardBean boardBean);
	
	//게시판 update
	public int update_board(BoardBean boardBean);
	
	//게시판 delete
	public int delete_board(int no);

	//게시판 검색(모든 조건)
	public List search_board_list_all(@Param("board_no") String board_no, @Param("s_text") String s_text);

	//게시판 검색(글 제목 조건)
	public List search_board_list_title(@Param("board_no") String board_no, @Param("s_text") String s_text);

	//게시판 검색(글 내용 조건)
	public List search_board_list_contents(@Param("board_no") String board_no, @Param("s_text") String s_text);

}
brush 속성들 SyntaxHighlighter.autoloader.apply(null, path( 'applescript @shBrushAppleScript.js', 'actionscript3 as3 @shBrushAS3.js', 'bash shell @shBrushBash.js', 'coldfusion cf @shBrushColdFusion.js', 'cpp c @shBrushCpp.js', 'c# c-sharp csharp @shBrushCSharp.js', 'css @shBrushCss.js', 'delphi pascal @shBrushDelphi.js', 'diff patch pas @shBrushDiff.js', 'erl erlang @shBrushErlang.js', 'groovy @shBrushGroovy.js', 'java @shBrushJava.js', 'jfx javafx @shBrushJavaFX.js', 'js jscript javascript @shBrushJScript.js', 'perl pl @shBrushPerl.js', 'php @shBrushPhp.js', 'text plain @shBrushPlain.js', 'py python @shBrushPython.js', 'ruby rails ror rb @shBrushRuby.js', 'sass scss @shBrushSass.js', 'scala @shBrushScala.js', 'sql @shBrushSql.js', 'vb vbnet @shBrushVb.js', 'xml xhtml xslt html @shBrushXml.js' ));
Posted by 스트라
,