정리정돈 개발블로그~
[58일차] 국비교육 본문
시험!!
<인테페이스 시험예상>
1. Mybatis 설정파일에서 오류가 발생하는 부분을 해결한 구문을 작성하시오
<settings>
<setting name="jdbcTypeForNull" value="null"/>
=> 답: null이 대문자(Null)이여야함
</settings>
2. Select 문을 choose,when,otherwise 를 이용하여 and 구문이 적절하게 출력될 수있도록 수정하시오.
(MyBatis의 동적 쿼리 작성 문제)
[문제]
<select id="selectSearchList" resultMap="boardResultSet">
SELECT BOARD_NO, BOARD_TITLE, USER_ID, COUNT, CREATE_DATE
FROM BOARD B
JOIN MEMBER ON(BOARD_WRITER=USER_NO)
<trim prefix="WHERE" prefixOverrides="AND|OR">
AND USER_ID LIKE '%' || #{writer} || '%'
AND BOARD_TITLE LIKE '%' || #{title} || '%'
AND BOARD_CONTENT LIKE '%' || #{content} || '%'
</trim>
<![CDATA[
AND B.STATUS<>'N'
ORDER BY BOARD_NO DESC
]]>
</select>
=> 답 : choose,when,otherwise를 구문에 넣어주면 됨
<select id="selectSearchList" resultMap="boardResultSet">
SELECT BOARD_NO, BOARD_TITLE, USER_ID, COUNT, CREATE_DATE
FROM BOARD B
JOIN MEMBER ON(BOARD_WRITER=USER_NO)
<trim prefix="WHERE" prefixOverrides="AND|OR">
=> 답 :
<choose>
<when test="writer" != null>
AND USER_ID LIKE '%' || #{writer} || '%'
</when>
<when test="title" != null>
AND BOARD_TITLE LIKE '%' || #{title} || '%'
</when>
<otherwise>
AND BOARD_CONTENT LIKE '%' || #{content} || '%'
</otherwise>
</choose>
</trim>
<![CDATA[
AND B.STATUS<>'N'
ORDER BY BOARD_NO DESC
]]>
</select>
3. mybatis-config.xml의 environment 앨리먼트에 아래의 요구사항들을 작성하여 완성
[문제] environment 설정값 : id="oracledb"
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.10.33:1521:xe
username=mybatis
password=mybatis
<environment id="oracledb">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@192.168.10.33:1521:xe" />
<property name="username" value="mybatis" />
<property name="password" value="mybatis" />
</dataSource>
</environment>
4.Mybatis 설정파일 mybatis-config.xml 에서 아래클래스의 클래스명으로 별칭을 부여하는 구문을 작성
[문제] com.kh.myBatis.member.model.vo.Member
com.kh.myBatis.board.model.vo.Board
com.kh.myBatis.board.model.vo.SearchCondition
<typeAliases>
<typeAlias type="com.kh.myBatis.member.model.vo.Member" alias="Member" />
<typeAlias type="com.kh.myBatis.board.model.vo.Board" alias="Board" />
<typeAlias type="com.kh.myBatis.board.model.vo.SearchCondition" alias="SearchCondition" />
</typeAliases>
[서술형]
1. mapper.xml 에 작성하는 namespace의 역할을 설명
💡: DAO 인터페이스를 연결하는데 사용함.(바인딩)
패키지 경로를 포함한 전체 이름을 가진 구문을 구분하기 위해 필수로 사용
2. session = getSqlSessionFactory().openSession(false); 일 때, false의 역할을 기술하시오.
💡 : 자동 커밋 설정을 의미하며, false인 경우 commit 을 직접 관리해야 함
3. 2번의 true인 경우 ->💡 : 자동 커밋
4. Statement에 대해 설명하시오.
💡 : connection을 통해서 얻어지며, DB에 SQL문을 전달하여 SQL을 실행시키고 결과값을 반환받는 역할을 하는 객체
5. Framework에 대해 설명
💡 : Framework란, 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 제공하는 라이브러리를 구현해 놓은 것을 말한다
6. '영속성 Framework'에 대해 간단히 설명
💡 : 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들을 라이브러리화하여 구현한 프레임워크이다.
(ex. Mybatis)
7. mybatis-config.xml에서 <settings>태그에 대해 작성
💡 : mybatis 구동 시 선언할 설정들을 작성하는 태그명
8. mybatis-config.xml 에서 <typeAliases> 태그에 대해 작성
💡 : mybatis에서 사용할 자료형의 별칭을 선언하는 태그명
9. mybatis-config.xml 에서 <environments> 태그에 대해 작성
💡 : mybatis에서 연동할 DataBase 정보를 등록하는 태그명
10. mybatis-config.xml 에서 최초 Connection 객체를 생성할 때 해당 정보를 pool 영역에 저장해두고, 이후 Connection 객체를 생성할 때 이를 재 사용 하고자 한다.
<environments> 에서 이에 맞게 작성해야 할 dataSource구문을 작성하시오.
💡 : <dataSource type="POOLED">
11.Mybaits 에서 SQL을 동적으로 제어할 수 있는 구문 종류 4가지를 작성
💡 :if, choose, trim, foreach
12.mybatis-config 설정 시, <datasource type= POOLED>로 설정시 장점을 설명
💡 : 시간을 단축 할 수 있음
13.resultType과 resultMap의 차이점에 대해 설명하시오.
💡 : resultType : resultset 결과를 매핑해서 반환되는 타입의 전체 클래스명이나 별명
resultMap : resultset 결과를 매핑할 resultMap 참조 아이디명
14. Servlet을 이용한 웹 프로젝트에서 Mybatis를 사용하기 위한 순서를 기술하시오.
💡 : 1. ojdbc6.jar를 lib 폴더에 추가
2. mybatis-x.x.x.jar를 다운로드 후 lib 폴더에 추가
3. config.xml 작성
4. mapper.xml 작성
5. dao 작성
15. SqlSession의 메소드 중, selectOne과 selectList의 차이점을 기술하시오.
💡 : selectOne : 오직 하나의 객체만을 리턴받을 때 사용한다.
selectList : 한 개 이상의 갯수를 리턴받을 때 사용한다.
16. insert, update, delete의 경우 resultType이나 resultMap을 사용하지 않는 이유를 기술하시오.
💡 : insert, update, delete는 sql구문을 수행한 후 적용된 행의 개수를 자동으로 리턴하며, select sql 구문을 수행하는 select 앨리먼트가 resultset 한 결과를 리턴하거나 매핑하기 위해 resultType 이나 resultMap 을 사용한다.
17. openSession() 과 openSession(boolean autoCommit) 의 차이점을 기술하시오.
💡: openSession() : SqlSession 객체를 생성한다. autoCommit은 false로 설정된다.
openSession(boolean autoCommit) : SqlSession 객체를 생성한다. autoCommit을 개발자가 설정할 수 있다.
18. String resource = ""; InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
resource 변수에 들어가야 하는 내용을 기술하시오.
💡: configuration file(config.xml)의 경로
19. (scott/tiger 계정) DEPT 테이블의 특정 row의 dname과 loc를 수정하는 기능을 작성 할 때, mapper xml 에 알맞은 태그를 작성하시오.
💡:
<update id="selectDept" parameterType="deptDto">
UPDATE DEPT SET DNAME=#{dname}, LOC=#{loc} WHERE DEPTNO=#{deptno}
</update>
</aside>
20. config.xml에서 domain.blog.Author 클래스를 Author 라는 별칭으로 사용하려고 할 때, 필요한 태그와 해당 태그의 속성에 값을 넣어서 작성하시오.
💡:
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
</typeAliases>
21. MyBatis가 제공하는 동적 SQL 구문 중에서 자바의 if문과 같은 역할을 수행하는 if 구문을 사용하여, 아래 명시된 내용을 처리하는 select 앨리먼트를 완성하시오.
💡:
<select id="findActiveBlogWithTitleLike" parameterType="Blog" resultType="Blog">
SELECT * FROM BLOG
WHERE state = ‘ACTIVE’
<if test="title != null">
AND title like #{title}
</if>
</select>
22. (scott/tiger 계정)DEPT 테이블의 모든 row를 출력하기 위해 다음과 같이 정의되어 있을 때, mapper xml 에 알맞은 앨리먼트를 작성하시오
💡:
<select id="selectDept" resultType="deptDto">
SELECT * FROM DEPT
</select>
23. config.xml에서 domain.blog.Comment 클래스를 Comment 라는 별칭으로 사용하려고 할 때, 필요한 앨리먼트와 해당 앨리먼트의 속성에 값을 넣어서 작성하시오
💡:
<typeAliases>
<typeAlias alias="Commant" type="domain.blog.Comment"/>
</typeAliases>
24. MyBatis가 제공하는 동적 SQL 구문 중에서 자바의 for문과 같은 역할을 수행하는 foreach 구문을 사용하여, 아래 명시된 내용을 처리하는 select 앨리먼트를 완성하시오.
💡:
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
'국비학원 교육 일지' 카테고리의 다른 글
[57일차] 국비 교육 (0) | 2022.10.13 |
---|---|
[56일차] 국비 교육 (0) | 2022.10.12 |
[55일차] 국비 교육 (0) | 2022.10.07 |
[54일차] 국비 교육 (1) | 2022.10.06 |
[53일차] 국비교육 (1) | 2022.10.05 |