본문 바로가기
수업 문제(국비 지원)/JSP

[JSP] 2022.10.18 (Test1.java 소스를 실행 했을때 각각 test1결과.txt ProfessorMapper2 인터페이스를 구현하기)

by byeolsub 2023. 4. 29.
문제 : Test1.java 소스를 실행 했을때 각각 test1결과.txt
       ProfessorMapper2 인터페이스를 구현하기

 

1.모든 교수 정보 조회하기
Professor [profno=1001, name=김명선, id=captain, position=전임강사, salary=0, hiredate=Sat Jun 23 00:00:00 KST 1990, bonus=100, deptno=101, email=captain@abc.net, url=null]
Professor [profno=1002, name=김명신, id=sweety, position=정교수, salary=0, hiredate=Thu Jan 30 00:00:00 KST 1997, bonus=60, deptno=101, email=sweety@abc.net, url=null]
Professor [profno=1003, name=김자바, id=powerman, position=전임강사, salary=0, hiredate=Sat Mar 22 00:00:00 KST 2008, bonus=0, deptno=101, email=pman@power.com, url=null]
Professor [profno=2011, name=엄호선, id=lamb1, position=전임강사, salary=0, hiredate=Thu Sep 01 00:00:00 KST 2011, bonus=0, deptno=102, email=lamb1@hamail.net, url=null]
Professor [profno=2012, name=장혜진, id=number1, position=조교수, salary=0, hiredate=Thu Nov 30 00:00:00 KST 1995, bonus=80, deptno=102, email=number1@naver.com, url=null]
Professor [profno=2013, name=이창익, id=bluedragon, position=정교수, salary=0, hiredate=Wed Apr 29 00:00:00 KST 1992, bonus=90, deptno=102, email=bdragon@naver.com, url=null]
Professor [profno=3001, name=김도형, id=angel1004, position=정교수, salary=0, hiredate=Wed Oct 23 00:00:00 KST 1991, bonus=110, deptno=103, email=angel1004@hanmir.com, url=null]
Professor [profno=3002, name=나한열, id=naone10, position=조교수, salary=0, hiredate=Sun Jul 01 00:00:00 KST 2007, bonus=50, deptno=103, email=naone10@empal.com, url=null]
Professor [profno=3003, name=김현정, id=only-u, position=전임강사, salary=0, hiredate=Fri Feb 24 00:00:00 KST 2012, bonus=0, deptno=103, email=only_u@abc.com, url=null]
Professor [profno=4001, name=심슨, id=simson, position=정교수, salary=0, hiredate=Wed Oct 23 00:00:00 KST 1991, bonus=130, deptno=201, email=chebin@daum.net, url=null]
Professor [profno=4002, name=최슬기, id=gogogo, position=조교수, salary=0, hiredate=Fri Aug 30 00:00:00 KST 2019, bonus=0, deptno=201, email=gogogo@def.com, url=null]
Professor [profno=4003, name=나몰라, id=mypride, position=조교수, salary=0, hiredate=Tue Dec 01 00:00:00 KST 2009, bonus=50, deptno=202, email=mypride@hanmail.net, url=null]
Professor [profno=4004, name=아이유, id=ironman, position=전임강사, salary=0, hiredate=Mon Jan 28 00:00:00 KST 2019, bonus=0, deptno=202, email=ironman@naver.com, url=null]
Professor [profno=4005, name=바비, id=standkang, position=정교수, salary=0, hiredate=Mon Sep 18 00:00:00 KST 1995, bonus=80, deptno=203, email=standkang@naver.com, url=null]
Professor [profno=4006, name=비, id=napeople, position=전임강사, salary=0, hiredate=Mon Jun 28 00:00:00 KST 2010, bonus=0, deptno=301, email=napeople@jass.com, url=null]
Professor [profno=4007, name=김태희, id=silver-her, position=조교수, salary=0, hiredate=Mon May 23 00:00:00 KST 2011, bonus=30, deptno=301, email=silver-her@daum.net, url=null]
2.101 학과 교수 정보 조회하기
Professor [profno=1001, name=김명선, id=captain, position=전임강사, salary=0, hiredate=Sat Jun 23 00:00:00 KST 1990, bonus=100, deptno=101, email=captain@abc.net, url=null]
Professor [profno=1002, name=김명신, id=sweety, position=정교수, salary=0, hiredate=Thu Jan 30 00:00:00 KST 1997, bonus=60, deptno=101, email=sweety@abc.net, url=null]
Professor [profno=1003, name=김자바, id=powerman, position=전임강사, salary=0, hiredate=Sat Mar 22 00:00:00 KST 2008, bonus=0, deptno=101, email=pman@power.com, url=null]
3.교수 번호가 1001번인 교수 정보 조회하기
Professor [profno=1001, name=김명선, id=captain, position=전임강사, salary=0, hiredate=Sat Jun 23 00:00:00 KST 1990, bonus=100, deptno=101, email=captain@abc.net, url=null]
4.정교수 정보 조회하기
Professor [profno=1002, name=김명신, id=sweety, position=정교수, salary=0, hiredate=Thu Jan 30 00:00:00 KST 1997, bonus=60, deptno=101, email=sweety@abc.net, url=null]
Professor [profno=2013, name=이창익, id=bluedragon, position=정교수, salary=0, hiredate=Wed Apr 29 00:00:00 KST 1992, bonus=90, deptno=102, email=bdragon@naver.com, url=null]
Professor [profno=3001, name=김도형, id=angel1004, position=정교수, salary=0, hiredate=Wed Oct 23 00:00:00 KST 1991, bonus=110, deptno=103, email=angel1004@hanmir.com, url=null]
Professor [profno=4001, name=심슨, id=simson, position=정교수, salary=0, hiredate=Wed Oct 23 00:00:00 KST 1991, bonus=130, deptno=201, email=chebin@daum.net, url=null]
Professor [profno=4005, name=바비, id=standkang, position=정교수, salary=0, hiredate=Mon Sep 18 00:00:00 KST 1995, bonus=80, deptno=203, email=standkang@naver.com, url=null]
5.101 학과의 정교수 정보 조회하기
Professor [profno=1002, name=김명신, id=sweety, position=정교수, salary=0, hiredate=Thu Jan 30 00:00:00 KST 1997, bonus=60, deptno=101, email=sweety@abc.net, url=null]
6.101,201 학과의 교수 정보 조회하기 
Professor [profno=1001, name=김명선, id=captain, position=전임강사, salary=0, hiredate=Sat Jun 23 00:00:00 KST 1990, bonus=100, deptno=101, email=captain@abc.net, url=null]
Professor [profno=1002, name=김명신, id=sweety, position=정교수, salary=0, hiredate=Thu Jan 30 00:00:00 KST 1997, bonus=60, deptno=101, email=sweety@abc.net, url=null]
Professor [profno=1003, name=김자바, id=powerman, position=전임강사, salary=0, hiredate=Sat Mar 22 00:00:00 KST 2008, bonus=0, deptno=101, email=pman@power.com, url=null]
Professor [profno=4001, name=심슨, id=simson, position=정교수, salary=0, hiredate=Wed Oct 23 00:00:00 KST 1991, bonus=130, deptno=201, email=chebin@daum.net, url=null]
Professor [profno=4002, name=최슬기, id=gogogo, position=조교수, salary=0, hiredate=Fri Aug 30 00:00:00 KST 2019, bonus=0, deptno=201, email=gogogo@def.com, url=null]
7.101,201 학과  조교수 정보 조회하기
Professor [profno=4002, name=최슬기, id=gogogo, position=조교수, salary=0, hiredate=Fri Aug 30 00:00:00 KST 2019, bonus=0, deptno=201, email=gogogo@def.com, url=null]

 

  • Test1.java
package test1018;

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

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 mapper.ProfessorMapper2;

public class Test1 {
	private static SqlSessionFactory sqlMap;
	private static Map<String, Object> map = new HashMap<>();
	static {
		InputStream input = null;
		try {
			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();
		System.out.println("1.모든 교수 정보 조회하기");
		List<Professor> list = 
			session.getMapper(ProfessorMapper2.class).select(null);
		for (Professor s : list)System.out.println(s);
		
		System.out.println("2.101 학과 교수 정보 조회하기");
		//select * from professor where deptno=101
		map.clear();
		map.put("deptno", 101);
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list)System.out.println(s);

		System.out.println("3.교수 번호가 1001번인 교수 정보 조회하기");
		map.clear();
		map.put("profno", 1001);
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list) System.out.println(s);

		System.out.println("4.정교수 정보 조회하기");
		//select * from professor where position='정교수'
		map.clear();
		map.put("position", "정교수");
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list) System.out.println(s);

		System.out.println("5.101 학과의 정교수 정보 조회하기");
		//select * from professor where deptno=101 and position='정교수'
		map.clear();
		map.put("deptno", 101);
		map.put("position", "정교수");
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list) System.out.println(s);
		
		System.out.println("6.101,201 학과의 교수 정보 조회하기 ");
		map.clear();
		map.put("datas", Arrays.asList(101,201));
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list) System.out.println(s);

		
		System.out.println("7.101,201 학과  조교수 정보 조회하기");
		//select * from professor where position=#{position} and deptno in (101,201)
		map.clear();
		map.put("datas", Arrays.asList(101,201));
		map.put("position", "조교수");
		list = session.getMapper(ProfessorMapper2.class).select(map);
		for (Professor s : list) System.out.println(s);		
	}
}

 

  • ProfessorMapper2.java -interface로 생성
package mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Select;

import test1018.Professor;

public interface ProfessorMapper2 {

    @Select({"<script>",
    	    "select * from professor ",
    	    "<trim prefix='where' prefixOverrides='AND||OR'>",
    	     "<if test='deptno != null'>and deptno = #{deptno}</if>",
    	     "<if test='profno != null'>and profno = #{profno}</if>",
    	     "<if test='position != null'>and position = #{position}</if>",
    	     "<if test='datas != null'>and deptno in ",
    		 "<foreach collection='datas' item='d' separator=',' open='(' close=')'>#{d}</foreach></if>",
    		 "</trim>",
            "</script>" })
	List<Professor> select(Map<String,Object> map);

}