JSP

부트캠프51일차 (model2 idchk) , (MyBatis시작 , 세팅법 사용법)

동곤일상 2025. 4. 15. 17:48
반응형

1) index.jsp

2)idchk(아이디중복검사)

3)myBatis

 

3-1) myBatisStudy자바프로젝트 세팅

3-2)buildPath (2개의jar파일을 classPath에)

3-3)main

3-4)typeAliases(별명설정법)

 

4)Student테이블 활용해보기

 

5) MybatisSet(sqlSessionFactory 초기화 -> 생성메서드) 

[ try-catch문 쓰고 파일마다초기화하는것도 귀찮아서

따로 만들었음 ] 

 

6) 예제문제1

7)예제문제2

 

 

 

 


1)index.jsp (main창으로이동시켜주는 jsp)

프로젝트 우클릭후 실행

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <!-- /webapp/index.jsp 
   	http://localhost:8080/model2Study/ 요청시 자동으로실행되는페이지
   -->
<script>
	location.href = "/model2Study/member/main";
</script>

프로젝트 자체를 사진과같이 실행해도 되고 

위 파일을 실행하게되면

로그인X 시
로그인O 시

 

 


2)idchk(중복검사)

 

joinForm에추가

function idchk(){
if(document.f.id.value==''){
	alert("아이디를 입력하세요");
	document.f.id.focus();
	}
else{
	let op="width=500,height=200,left=50,right=150";
	open("idchk?id="+document.f.id.value,"",op);
}

 

controller에 idchk매핑

/*
	 * 1 id:파라미터
	 * 2.id이용해 DB 조회
	 * 3. DB에서 조회 안될 시 : 사용가능한아이디 (초록화면)
	 * 4. 사용중인 아이디입니다(빨간색화면)
	 * 
	 */

@RequestMapping("idchk")
	public String idchk(HttpServletRequest request, HttpServletResponse response) {
		String id = request.getParameter("id");
		Member m = dto.selectOne(id);
		String msg;
		boolean able = true;;
		if(m == null) {
			msg="사용가능한아이디";
			able = true;
		}
		else {
			msg="사용 중인 아이디";
			able = false;
		}
		request.setAttribute("msg",msg);
		request.setAttribute("able",able);
		return "member/idchk";
		
	}

 

idchk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디중복검색</title>
<link rel="stylesheet"
	href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
<style type="text/css">
.able {
	color: green;
	font-size: 15px;
}

.disable {
	color: red;
	font-size: 20px;
}
</style>
</head>
<body>
<div class="container">
<table class="table">
<tr>
  <td>아이디</td>
  <td>${param.id}</td>
</tr>
<tr>
  <td colspan="2"><div id="msg">${msg}</div></td>
</tr>
<tr>
  <td colspan="2"><button onclick="self.close()"
     class="btn btn-primary">닫기</button></td>
</tr>
</table>
</div>

<script type="text/javascript">
if(${able}){
	document.querySelector("#msg").className="able";
	opener.document.f.chk.className = "btn btn-success";

}
else{
	opener.document.f.id.value="" //아이디입력값 다 지워버리기
	opener.document.f.chk.className ="btn btn-warning"
	document.querySelector("#msg").className="disable";
}
</script>
</body>
</html>

 

 


3)myBatis사용해보기

 

 

3-1) myBatisStudy자바프로젝트 세팅

 

mybatis-3.5.13.jar
1.71MB

 

mariadb-java-client-3.5.1.jar
0.70MB

 

밑의 사진과같이 model2Study/web-INF/lib/ 에 넣고

myBatisStudy프로젝트 하위에 jar파일을 넣어준다

 


myBatisStudy하위의

mapper패키지를 생성하고

 

mybatis-config.xml

(DB연결 설정부분, SQL문장관련 파일설정)

다음과같은 이름으로  위코드를 넣자

<?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">
<configuration>
<!-- config파일에서 사용되는 환경변수 설정 -->
  <properties resource="mapper/mybatis.properties" />
  
  <!-- Connection 객체  -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED" >
         <property name="driver" value="${driver}"/>
         <property name="url" value="${url}"/>
         <property name="username" value="${username}"/>
         <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 위에서 ${}로 properties에서 지정한값들을 가져온다 -->
  
  <!--  sql 구문을 가진 파일 목록 -->
  <mappers>
  	<mapper resource="mapper/MemberMapper1.xml"/>
  </mappers>
</configuration>

 

/mapper/MemberMapper1.xml(SQL문장설정)

<?xml version="1.0" encoding="UTF-8" ?>
<!--  /mybatisstudy/src/mapper/MemberMapper1.xml -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- sql문장 설정 -->

<mapper namespace="member">
	<!-- member.count : namespace.id명(id값) -->
	<select id="count" resultType="int"> 
		select count(*) from member
	</select>
	<select id="list" resultType="Member" >
	<!-- 클래스를 타입으로쓰려면 앞에 package명 붙여라
	(config에서 alias설정해서 별명을설정하는 방법도있음 -->
		select * from member
	</select>
	
	<!--session.selectxxx("id값","value")를 처리하는방법 -->
	<select id="selectId" parameterType="string" resultType="Member">
	select * from member where id=#{value}	 
	</select>
	
	<select id="selectName" parameterType="string" resultType="Member">
		select * from member where name like #{value}	 
	</select>
	<!-- value값 설정을 애초에 "%value%" 로 해주고보내야함 -->
	
	<select id="selectName2" parameterType="string" resultType="Member">
		select * from member where name like '%${value}%'	 
	</select>
<!--  
#{value} : value값+자료형인식
	where name like %#{value}% : 오류발생		
	where name like %'value'% 의 형식으로인식함
${value} : value값인식
	value의 값이 가 라고가정 할 떄
	where name like '%{value}'
	where name like '%가%'	
-->
	<select id="selectNameGender" parameterType="map" resultType="Member">
		select * from member 
		where name like '%${name}%' and gender=#{gender}	 
	</select>
<!-- 
	${name} : map객체중 key값이 name인 객체의값 리턴
	#{gender} : map객체중 key값이 gender인 객체값 리턴
 -->	

</mapper>

(이따가 main패키지에 Member 클래스를가져올거임)


/mapper/mybatis.properties 

(사람마다 DB명과 user , 비번이다를거임)

(환경변수값을 저장하는곳)

driver=org.mariadb.jdbc.Driver
url=jdbc:mariadb://localhost:3306/gdjdb
username=gduser
password=1234

3-2)buildPath (2개의jar파일을 classPath에)

Classpath에 Add jARs를 눌러

아까 가져온 jar파일을 넣어준 후 appley and close!!!

 


 

3-3) main패키지

 

Member클래스

/main/Member.java

package main;

/*
 Bean 클래스
  	get 프로퍼티 : getxxx(){}=> get xxx프로퍼티
  			
  	set 프로퍼티 : setxxx(){} => set xxx프로퍼티
 */
public class Member {
	private String id;
	private String pass;
	private String name;
	private int gender;
	private String tel;
	private String email;
	private String picture;
	
	//getter/setter , toString	
}

 


/main/Main1.java

(sqlSessionFactory) sqlMap

 : DB와의 세션(SqlSession)을 생성할 때 사용

package main;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;

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

public class Main1 {
	public static void main(String[] args) {
		SqlSessionFactory sqlMap = null;
		Reader reader= null;
		try {
			//reader : 입력스트림(파일읽어오기)
			reader = Resources.getResourceAsReader("mapper/mybatis-config.xml");
			//reader를 읽어 mybatis 환경설정
			//sqlMap : sql구문들을 저장 (id속성값으로 sql구문저장)
			sqlMap = new SqlSessionFactoryBuilder().build(reader);			
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		int x= 0;
		//session : Connection객체를 mybatis에서 연결한객체
		SqlSession session = sqlMap.openSession();
		//selectOne(sql구문의id값) : 결과레코드가 1건인경우
		x = (Integer)session.selectOne("member.count");
		System.out.println("member테이블의 레코드갯수 : "+x);
		System.out.println("member테이블의 전체레코드조회 ===");
		List<Member>list = session.selectList("member.list");
		for(Member m : list) {
			System.out.println(m);
		}
		System.out.println("member테이블의 admin레코드조회");
		Member admin = session.selectOne("member.selectId","admin");
		//session.selectxxx("namespace.id","value")
		System.out.println(admin);
		
		System.out.println("테이블에서 이름에 '이'를 가진 레코드조회===");
		list = session.selectList("member.selectName","%이%");
		for (Member m : list) {
			System.out.println(m);
		}
		
		System.out.println("테이블에서 이름에 '이'를 가진 레코드조회2===");
		list = session.selectList("member.selectName2","이");
		for (Member m : list) {
			System.out.println(m);
		}
		
		System.out.println("member테이블에서 이름에'이'를 가진 남자정보조회");
		HashMap<String,Object> map = new HashMap<>();
		map.put("name", "이");
		map.put("gender", "1");
		//("member.selectNameGender","이",1)의형태로는 들어갈수없음
		list = session.selectList("member.selectNameGender",map);
		for (Member m : list) {
			System.out.println(m);
		}
		
		
	}
}

혹시나 주소값같은게 뜬다면 Member객체를 toString했는지확인하자


3-4) typeAliases(별명설정법)

mybatis-config.xml 에 추가해보자 (별명설정)

<typeAliases>
  	<typeAlias type="main.Member" alias="Member"/>
  </typeAliases>

 

MemberMapper1.xml 의 일부분

	<select id="list" resultType="Member" >
	<!-- 클래스를 타입으로쓰려면 앞에 package명 붙여라
	(config에서 alias설정해서 별명을설정하는 방법도있음 -->
		select * from member
	</select>

원래 main.Member로 패키지명까지붙여야했지만

cofing에 Aliases를 설정함으로써 안적어도됨!!!

 


4)Student테이블 활용해보기

 

/main / Student.java

package main;

import java.util.Date;

public class Student {
	private int studno;
	private String name;
	private String id;
	private int grade;
	private String jumin;
	private Date birthday;
	private int height;
	private int weight;
	private int major1;
	private int major2;
	private int profno;
	
	//getter , setter

}

mybatis-config.xml  코드에 추가해야하는 내용(연결과 별명설정)

  <typeAliases>
  	....
  	<typeAlias type="main.Student" alias="Student"/>
  </typeAliases>
  
  .....
  
<mappers>
  	...
  	<mapper resource="mapper/StudentMapper1.xml"/>
  </mappers>

/mapper/StudentMapper1.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--  /mybatisstudy/src/mapper/MemberMapper1.xml -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- sql문장 설정 -->

<mapper namespace="student" >
	<insert id="insert" parameterType="Student">
	<!-- Student : main.Student클래스 -->
	<!-- config에서 Alias설정을 해야 Student와같이 별명으로사용가능! -->
		insert into student(studno,name,id,jumin,grade,major1)
		values(#{studno},#{name},#{id},#{jumin},#{grade},#{major1})
	</insert>
	<!-- #{xxx} : Student.getxxx()호출 (get프로퍼티)
		Student클래스에서 getter를구현하지않으면 사용불가능함
	 -->

	<select id="selectNo" resultType="Student" parameterType="int">
		select * from student where studno=#{value}
	</select>
<!-- 
	resultType(반환값) : "클래스명" 
	조회된결과의 컬럼명과 클래스의 setxx 프로퍼티를 호출 
	컬럼명 studno => Student.setStudno(컬럼studno)
 -->
 
 	<update id="update" parameterType="Student">
 	update student 
 	set grade=#{grade},weight=#{weight},height=#{height},profno=#{profno}
 	where id=#{id}
 	</update>
 	<!-- Student의 getter들  = #{xx}-->
 	<!-- where문에 기본키를 넣지않는다면 테이블의모든정보가업데이트될것이다 -->
 	
 	<delete id="delete" parameterType="int">
 		delete from student where studno=#{value}
 	</delete>
 	
 	
<!-- ========== test1에서 사용되는 부분들 ============= -->
 	<select id="countAll" resultType="int">
 		select count(*) from student order by grade
 	</select>
 	
 	<select id="selectAll" resultType="Student">
 	select * from student 
 	</select>
 	
 	<select id="selectGrade1" resultType="Student" parameterType="int">
 	select * from student where grade=#{val}  
 	</select>
	
	<select id="selectNameKim" resultType="Student" parameterType="String">
	select * from student where name like'%${val}%'
	</select>
	
	<select id="selectjumin" resultType="Student" parameterType="map">
		select * from student where grade=#{grade} and
		substr(jumin,7,1) in(#{jumin1},#{jumin2})
	</select>
</mapper>

 


/main/Main2_student.java

package main;

import java.io.IOException;
import java.io.InputStream;

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

public class Main2_student {
	private final static SqlSessionFactory sqlMap;
	static { //static변수 초기화
		InputStream input = null;
		try {
			//해당파일을 읽어 myBatis환경을 설정
			input = Resources.getResourceAsStream("mapper/mybatis-config.xml");		
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		//
		sqlMap = new SqlSessionFactoryBuilder().build(input);
	}
	public static void main(String[] args) {
		//Connection객체를 이용해 mybatis와 DB를 연결
		SqlSession session = sqlMap.openSession();
		System.out.println("학생테이블에 레코드추가하기");
		//DB의 Student테이블컬럼과같은 프로퍼티를가진클래스
		Student st = new Student();
		st.setStudno(1002);
		st.setName("김삿갓2");
		st.setGrade(1);
		st.setId("sakgak2");
		st.setJumin("0003443355111");
		st.setMajor1(101);
		//insert(namespace.id값 , 파라미터값)
		// 파라미터이용해 DB에 새로운레코드추가(추가된레코드 건수 리턴)
		int cnt=session.insert("student.insert",st);
		System.out.println("student레코드 추가 : "+cnt);
		
		Student stResult = session.selectOne("student.selectNo",st.getStudno());
		//1002 을넣어도 상관X
		
		System.out.println("추가한 레코드 조회 ===: ");
		System.out.println(stResult);
		//1002번의 학생의 학년을 2학년, 몸무게:80 , 키:170 지도교수:1001 으로수정		
		st.setGrade(2);
		st.setWeight(80);
		st.setHeight(170);
		st.setProfno(1001);
		int update = session.update("student.update",st);
		System.out.println("update!!"+update);
		
		stResult = session.selectOne("student.selectNo",st.getStudno());
		System.out.println("변경한 레코드조회 == ");
		System.out.println(stResult);	
		
		//1002번 학생을 삭제하자
		int delete = session.delete("student.delete",1002);
		System.out.println("삭제된 건수 : "+delete);
		
		stResult = session.selectOne("student.selectNo",st.getStudno());
		System.out.println("삭제 레코드조회 : "+stResult);
		
		
//		session.commit(); 실제 DB에 Commit
		
	}

}

 

 

 

 


5) MybatisSet(sqlSession 반환해주는 메서드) 

초기화를 하고 다시 DB를 불러오는 작업을 메서드화

package mapper;

import java.io.IOException;
import java.io.InputStream;

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

public  class MybatisSet {
	
	private MybatisSet() {} //생성자막기
	private  static SqlSessionFactory sqlMap;
	
	//한 번만 초기화되는 전역 SqlSessionFactory를 만들기 위한 구조
	//MyBatis 설정 파일을 읽고 파싱하는 작업을 중앙집중화해서 중복 제거 및 관리 용이성 확보
	public final static  SqlSession getSession() {
		InputStream input = null;
		try {
			input = Resources.getResourceAsStream("mapper/mybatis-config.xml");		
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		sqlMap = new SqlSessionFactoryBuilder().build(input);
		return sqlMap.openSession();
	}

}

 


6) 예제문제 1

 


 * StudentMapper1.xml 파일을 이용하기
 * 1. 학생테이블의 등록된 레코드의 건수를 출력하기
 * 2. 학생테이블의 등록된 레코드의 정보를 출력하기
 * 3. 학생테이블의 등록된 레코드의 1학년 학생의 정보를 출력하기
 * 4. 학생테이블의 등록된 레코드의 성이 김씨인 학생의 정보를 출력하기
 * 5. 학생테이블의 등록된 레코드의 3학년 학생 중 주민번호 기준 여학생 정보를 출력하기

 

StudentMapper1.xml 파일(test1에관련한부분만)

<?xml version="1.0" encoding="UTF-8" ?>
<!--  /mybatisstudy/src/mapper/MemberMapper1.xml -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- sql문장 설정 -->

<mapper namespace="student" >
 <select id="countAll" resultType="int">
 		select count(*) from student order by grade
 	</select>
 	
 	<select id="selectAll" resultType="Student">
    <!-- 한번더 말하겠지만 Student는 config.xml에서 typeAlias을설정해줘야함 
 			설정안할 시 (패키지.클래스명)main.Student로 사용해야함
 		-->
 	select * from student 
 	</select>
 	
 	<select id="selectGrade1" resultType="Student" parameterType="int">
 	select * from student where grade=#{val}  
 	</select>
	
	<select id="selectNameKim" resultType="Student" parameterType="String">
	select * from student where name like'%${val}%'
    <!--
    	like문을 사용시엔 like'${xx}'을 활용해보자!! 
    	like%#{xx}% ==> like %'xx'% 와같이 됨
        사용하고싶다면 그냥 "%xx%"을 전달해 #{xx}로 하자
    -->
	</select>
	
	<select id="selectjumin" resultType="Student" parameterType="map">
		select * from student where grade=#{grade} and
		substr(jumin,7,1) in(#{jumin1},#{jumin2})
	</select>
</mapper>

Test1

package test0415;


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

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

import main.Student;

public class Test1 {
	private final static SqlSessionFactory sqlMap;
	static { //static변수 초기화
		InputStream input = null;
		try {
			//해당파일을 읽어 myBatis환경을 설정
			input = Resources.getResourceAsStream("mapper/mybatis-config.xml");		
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		sqlMap = new SqlSessionFactoryBuilder().build(input);
	}
	
	public static void main(String[] args) {
		SqlSession session = sqlMap.openSession();
		Student st = new Student();
		//1. 학생테이블의 등록된 레코드의 건수를 출력하기(countAll)
		 int cnt = (Integer)session.selectOne("student.countAll");
		 System.out.println("---studentTable 전체레코드 수 : "+cnt);
		 
		 //2. 학생테이블의 등록된 레코드의 정보를 출력하기(selectAll)
		 List<Student> list = session.selectList("student.selectAll");
		 System.out.println("--- student레코드의 모든정보----");
		 for(Student s : list) {
			 System.out.println(s);
		 }
		 
		 //3. 학생테이블의 등록된 레코드의 1학년 학생의 정보를 출력하기
		 list = session.selectList("student.selectGrade1",1);
		 System.out.println("----1학년 학생의 정보----");
		 for(Student s : list) {
			 System.out.println(s);
		 }
		 
		 //4학생테이블의 등록된 레코드의 성이 김씨인 학생의 정보를 출력하기
		 list = session.selectList("student.selectNameKim","김");
		 System.out.println("-------- 김씨 정보 --------");
		 for(Student s : list) {
			 System.out.println(s);
		 }
		 
		 //5. 학생테이블의 등록된 레코드의 3학년 학생 중 주민번호 기준 여학생 정보를 출력하기
		 HashMap<Object,String> map = new HashMap<>();
		 map.put("grade", "3");
		 map.put("jumin1", "2"); //여자의주민번호7자리는 2 or 4임
		 map.put("jumin2", "4");
		 list = session.selectList("student.selectjumin",map);
		 System.out.println("-------- 3학년여자 --------");
		 for(Student s : list) {
			 System.out.println(s);
		 }
 
	}

}

7) 예제문제2

 

* ProfessorMapper.xml 파일을 이용하기

* Professor.java 파일 이용하기

1. 교수테이블에 등록된 레코드의 건수를 출력하기.

2. 교수테이블에 등록된 모든 정보를 출력하기

3. 교수중 101번 학과의 교수 정보를 출력하기

4. 교수중 성이 김씨인 시간강사 정보를 출력하기

 

1) Professor 클래스등록하기(getter setter toString은 IDE의 힘을빌려!)

package main;

import java.util.Date;

public class Professor {
	private int no;
	private String name;
	private String id;
	private String position;
	private int salary;
	private int bonus;
	private int deptno;
	private Date hiredate;
	private String email;
	private String url;
	//getter ,setter, toString 구현하기
}

 

2) ProfessorMapping1.xml

(sql문장 설정용)

<?xml version="1.0" encoding="UTF-8" ?>
<!--  /mybatisstudy/src/mapper/professor1.xml -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- sql문장 설정 -->

<mapper namespace="professor">
	<select id="selectCount" resultType="int">
	select count(*) from professor
	</select>
	
	<select id="selectAll" resultType="Professor">
		select * from professor
	</select>
	
	<select id="select101" parameterType="int" resultType="Professor">
		select * from professor where deptno=#{val}
	</select>
	
	<select id="selectTimeKim" parameterType="map" resultType="Professor">
	select * from professor where name like'%${name}%' and position=#{position}
	</select>
</mapper>

mybatis-config.xml (DB연결설정)

ProfessorMapping1 연결해주기 및 별명설정

<?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">
<configuration>
<!-- config파일에서 사용되는 환경변수 설정 -->
  <properties resource="mapper/mybatis.properties" />
  
  <!-- 별명들 -->
  <typeAliases>
  	<typeAlias type="main.Member" alias="Member" />
  	<typeAlias type="main.Student" alias="Student" />
  	<typeAlias type="main.Professor" alias="Professor" />
  </typeAliases>
  
  <!-- Connection 객체  -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED" >
         <property name="driver" value="${driver}"/>
         <property name="url" value="${url}"/>
         <property name="username" value="${username}"/>
         <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 위에서 ${}로 properties에서 지정한값들을 가져온다 -->
  
  <!--  sql 구문을 가진 파일 목록 -->
  <mappers>
  	<mapper resource="mapper/MemberMapper1.xml"/>
  	<mapper resource="mapper/StudentMapper1.xml"/>
  	<mapper resource="mapper/professorMapper1.xml"/>
  </mappers>

</configuration>

 

Test2.java

(myBatis.getSessionFactory() 이용)

그냥 위에처럼 static변수선언하고 해도 상관없음

package test0415;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import main.Professor;
import mapper.MybatisSet;

/*
 * ProfessorMapper.xml 파일을 이용하기
 * Professor.java 파일 이용하기
1. 교수테이블에 등록된 레코드의 건수를 출력하기.
2. 교수테이블에 등록된 모든 정보를 출력하기
3. 교수중 101번 학과의 교수 정보를 출력하기
4. 교수중 성이 김씨인 시간강사 정보를 출력하기 
*/
public class Test2 {
	public static void main(String[] args) {
	
		SqlSession session = MybatisSet.getSession();
		Professor pf = new Professor();
		List<Professor> pfList = new ArrayList<>();
		//1. 교수테이블에 등록된 레코드의 건수를 출력하기.
		 int cnt = session.selectOne("professor.selectCount");
		 System.out.println("professor테이블 레코드 건수 : "+cnt);
		 
		 //2. 교수테이블에 등록된 모든 정보를 출력하기
		 pfList = session.selectList("professor.selectAll");
		 System.out.println("==== professor테이블 모든 정보 === ");
		 for (Professor p : pfList) {
			 System.out.println(p);	
		}
		 
		 //3. 교수중 101번 학과의 교수 정보를 출력하기
		 pfList= session.selectList("professor.select101",101);
		 System.out.println("==== 101번 학과 교수 === ");
		 for (Professor p : pfList) {
			 System.out.println(p);	
		}
		 
		 //4. 교수중 성이 김씨인 시간강사 정보를 출력하기 
		 Map<Object, String> map = new HashMap<>();
		 map.put("name", "김");
		 map.put("position", "시간강사");
		 pfList = session.selectList("professor.selectTimeKim",map);
		 System.out.println("---------김씨 시간강사-----");
		 for (Professor p : pfList) {
			 System.out.println(p);	
		}
	}
	
}