go.kr : 국가기관에만 발급되는 도메인(믿을만함)
스타트업을 간다면 스톡옵션에 미련을 버릴것..
<properties resource="com/eomcs/mybatis/ex01/jdbc.properties"></properties>
클래스가 아니기 때문에 .
을 쓰면 안됀다. /
로 구분해준다.(file path)
// mybatis 설정 파일에서 fully-qualified class name 을 사용하는 대신에
// 짧은 이름으로 대체할 수 있다.
// <typeAliases>
// <typeAlias type="com.eomcs.mybatis.ex01.Board" alias="abc"/>
// </typeAliases>
mybatis에서 사용하는 별명
별칭 | 매핑된 타입 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
Method클래스 : 거울처럼 그 클래스에 무슨 메소드가 있는지 비춰준다 = reflaction
특정 번호 미만의 레코드만 출력하고싶을땐 CDATA로 묶어서 실행한다.
<select id="selectBoard1"
resultMap="BoardMap"
parameterType="int">
<![CDATA[
select
board_id,
title,
contents,
created_date,
view_count
from x_board
where board_id < #{ohora}
</select>
]]>
</select>
또는 아래처럼 한다.
<select id="selectBoard1"
resultMap="BoardMap"
parameterType="int">
select
board_id,
title,
contents,
created_date,
view_count
from x_board
where board_id < #{ohora}
</select>
하지만 <
처럼 하면 무슨 뜻인지 알아보기 힘드므로 CDATA로 묶어주는게 좋다.
<
이것만 있으면 xml parcer가 태그 시작인줄 알고 컴파일에러 띄움..
xml은 태그 안에 주석을 넣을 수 없다!
mariadb orderby할 때
MariaDB [studydb]> select * from x_board order by 'haha' desc;
이 문구에서 ‘haha’는 무시된다. 에러띄우는게 아니고 그냥 무시함
<select id="selectBoard2"
resultMap="BoardMap"
parameterType="string">
select
board_id,
title,
contents,
created_date,
view_count
from x_board
order by ${colname} asc
</select>
<!-- SQL 문에 SQL을 삽입하기
=> ${파라미터명}
=> 외부의 값을 이용하여 SQL 문장을 만들 수 있다.
=> 하지만 SQL 삽입 공격에 취약하다!
-->
위 코드는 SI쪽에선 절대 쓰면 안됀다.
dynamic sql? => 조건에 따라 SQL을 달리 생성하는 것 => mybatis는 이를 위해 조건에 따라 SQL을 변경하거나, 동일한 SQL을 반복적으로 생성할 수 있는 문법을 제공한다.
실행 예: => 사용자로부터 게시글의 번호를 입력 받아 조회한다. => 만약 오류가 발생하면 전체 게시글을 출력한다.
검색할때
<select id="select5" resultMap="BoardMap" parameterType="map">
select
board_id,
title,
contents,
created_date,
view_count
from x_board
where 1=0
<if test="no != null">
or board_id = #{no}
</if>
<if test="title != null">
or title like concat('%', #{title}, '%')
</if>
<if test="content != null">
or contents like concat('%', #{content}, '%')
</if>
</select>
1=0은 꼼수긴 하지만 if문을 자유롭게 탈착할수있다.