Mybatis-기본Test

임재헌·2023년 5월 22일

Mybatis

목록 보기
4/6

DB연결

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
  <!--DBOpen+DAO클래스 -->
   <configuration>
   
  	<!-- 클래스에 대한 별칭 부여  -->
  <typeAliases>
   <typeAlias type="net.mem.MemDTO" alias="memDTO"/>
  </typeAliases>
  
  	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<!-- Oracle DB 연결 정보 (DBOpen 클래스 역할) -->
				<property name="driver"   value="oracle.jdbc.driver.OracleDriver" />
				<property name="url"      value="jdbc:oracle:thin:@localhost:1521:xe" />
				<property name="username" value="system" />
				<property name="password" value="1234" />
			</dataSource>
		</environment>
	</environments>	
	
	<!--sql문을 작성해 놓은 xml문서 DAO역할  -->
	<mappers>
	<mapper resource="config/mem.xml"/>
	
	</mappers>
  </configuration>

MAPPER

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     
<!-- 종결 문자 ; 생략해야 한다  -->
<mapper namespace="mem">

<!--?기호를 대신하는 문법: 파라미터 바인딩 #{property} -->
<insert id="insertRow" parameterType="memDTO">
insert into mem(num,name,age)
values(mem_seq.nextval,#{name},#{age})
</insert>

<select id="selectALL" resultMap="rs">
select *
from mem
order by num desc
</select>
<!-- RESULTSET에서 행 값을 가져와서 DTO에 담고 , ARRAYLIST에 추가  -->
<!--DB에서 가져온 행값을 객체에 매핑하는 방법을 정의 -->
<resultMap type="net.mem.MemDTO" id="rs">
<result column="num" property="num"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>

<update id="UpdateRow" parameterType="memDTO">
update mem
set name=#{name},age=#{age}
where num=#{num}
</update>

<!-- sql문에서 특수문자 <> /  등을 사용해야 하는 경우 -->
<!-- int age 매개변수  -->
 <delete id="deleteRow" parameterType="int">
 <![CDATA[
 delete from mem
 where  age>=#{age}
 ]]>
 </delete>
 
 <sql id="tablename">
 select * from mem
  </sql>
 
 <sql id="sort">
 order by num desc
  </sql>
 
 
 <select id="search" parameterType="String" resultMap="rs">
 <include refid="tablename"></include>
<![CDATA[
 where name like '%' || #{name} || '%'
  ]]>
  <include refid="sort"></include>
 </select>
 
 <select id="selectRead" parameterType="Integer" resultType="net.mem.MemDTO">
 <![CDATA[
 select * from mem
 where num = #{num}
   ]]>
 </select>
 
 <select id="rowCount" parameterType="hashmap" resultType="int">
 
 <![CDATA[
 select count(*)
 from mem
    ]]>
 </select>
</mapper>

Maintest

package net.mem;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.javassist.expr.NewArray;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MemMainTest {

	public static void main(String[] args) {
		try {
			//factory 공장
			//->어떤 특정 정보를 주면 객체로 생성해 줌
			// 객체 생성: new  | bean			
			
			//1.DB연결 환경 설정 파일 가져오기
			String resource="config/jdbc.xml";
			InputStream is=Resources.getResourceAsStream(resource);
			
			//2. DB연결하기 위한 팩토리 빈 생성
			SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
			System.out.println("DB연결 성공");
			
			//3.쿼리문 생성 및 변환 
			// ->Prepared Statement
			SqlSession sql=ssf.openSession(true);
			/////////////////////////////////////
			
			//4.쿼리문 실행
			//int cnt=sql.insert("mem.insertRow",new MemDTO("김영희",20));
			//System.out.println("행추가 결과"+cnt);
			
			////////////////
			//수정 		"num=3" 수정
			//int cnt=sql.update("mem.UpdateRow",new MemDTO(3,"김김김",10));
			//System.out.println("행수정 결과"+cnt);
			
			//삭제
			// 나이가 50이상~
			//int cnt= sql.delete("mem.deleteRow",50);
			//System.out.println("행삭제 결과"+cnt);
			
			//목록 조회
			/*
			List<MemDTO> list=sql.selectList("mem.selectALL");
			for(int i=0;i<list.size();i++) {
				MemDTO dto=list.get(i);
				System.out.print(dto.getNum()+"");
				System.out.print(dto.getName()+"");
				System.out.print(dto.getAge()+"");
				System.out.println();
			}
			*/
			
			//검색
			// 김이라는 사람을 조회
			/*List<MemDTO> list=sql.selectList("mem.search","김");
			for(int i=0;i<list.size();i++) {
				MemDTO dto=list.get(i);
				System.out.print(dto.getNum()+"");
				System.out.print(dto.getName()+"");
				System.out.print(dto.getAge()+"");
				System.out.println();
			}
			 */
			
			//상세보기
			// 김김김 상세보기
			/*MemDTO dto=sql.selectOne("mem.selectRead",3);
			System.out.print(dto.getNum()+"");
			System.out.print(dto.getName()+"");
			System.out.print(dto.getAge()+"");
			System.out.println();
			*/
			//전체 행 갯수
			System.out.println("전체 행 갯수:"+sql.selectOne("mem.rowCount"));
			
		} catch (Exception e) {
			System.out.println("실패"+e);
		}

	}

}

결과는 콘솔창에 출력

Insert-행 추가

Update-행 수정

Delete-행 삭제

List- 목록 조회

List-검색

List-상세보기

0개의 댓글