▼ 코드로 예시보기 ▼
section02
Application
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MenuController menuController = new MenuController();
do {
System.out.println("========== 메뉴 관리 ==========");
System.out.println("1. 메뉴 전체 조회");
System.out.println("2. 메뉴 코드로 메뉴 조회");
System.out.println("3. 신규 메뉴 추가");
System.out.println("4. 메뉴 수정");
System.out.println("5. 메뉴 삭제");
System.out.print("메뉴 관리 번호를 입력하세요 : ");
int no = sc.nextInt();
switch(no) {
case 1 : menuController.selectAllMenu(); break;
case 2 : menuController.selectMenuByCode(inputMenuCode()); break;
case 3 : menuController.registMenu(inputMenu()); break;
case 4 : menuController.modifyMenu(inputModifyMenu());break;
case 5 : menuController.deleteMenu(inputMenuCode()); break;
default : System.out.println("잘못 된 메뉴를 선택하셨습니다.");
}
} while(true);
}
private static Map<String, String> inputMenuCode() {
Scanner sc = new Scanner(System.in);
System.out.print("메뉴 코드를 입력하세요 : ");
String code = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("code", code);
return parameter;
}
private static Map<String, String> inputMenu() {
Scanner sc = new Scanner(System.in);
System.out.print("메뉴 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("메뉴 가격을 입력하세요 : ");
String price = sc.nextLine();
System.out.print("카테고리 코드를 입력하세요 : ");
String categoryCode = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("name", name);
parameter.put("price", price);
parameter.put("categoryCode", categoryCode);
return parameter;
}
private static Map<String, String> inputModifyMenu() {
Scanner sc = new Scanner(System.in);
System.out.print("수정할 메뉴 코드를 입력하세요 : ");
String code = sc.nextLine();
System.out.print("수정할 메뉴 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("수정할 메뉴 가격을 입력하세요 : ");
String price = sc.nextLine();
System.out.print("수정할 카테고리 코드를 입력하세요 : ");
String categoryCode = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("code", code);
parameter.put("name", name);
parameter.put("price", price);
parameter.put("categoryCode", categoryCode);
return parameter;
}
}
MenuController
import java.util.List;
import java.util.Map;
public class MenuController {
private final PrintResult printResult;
private final MenuService menuService;
public MenuController() {
printResult = new PrintResult();
menuService = new MenuService();
}
public void selectAllMenu() {
List<MenuDTO> menuList = menuService.selectAllMenu();
if(menuList != null) {
printResult.printMenuList(menuList);
} else {
printResult.printErrorMessage("selectList");
}
}
public void selectMenuByCode(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
MenuDTO menu = menuService.selectMenuByCode(code);
if(menu != null) {
printResult.printMenu(menu);
} else {
printResult.printErrorMessage("selectOne");
}
}
public void registMenu(Map<String, String> parameter) {
String name = parameter.get("name");
int price = Integer.parseInt(parameter.get("price"));
int categoryCode = Integer.parseInt(parameter.get("categoryCode"));
MenuDTO menu = new MenuDTO();
menu.setName(name);
menu.setPrice(price);
menu.setCategoryCode(categoryCode);
if(menuService.registMenu(menu)) {
printResult.printSuccessMessage("insert");
} else {
printResult.printErrorMessage("insert");
}
}
public void modifyMenu(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
String name = parameter.get("name");
int price = Integer.parseInt(parameter.get("price"));
int categoryCode = Integer.parseInt(parameter.get("categoryCode"));
MenuDTO menu = new MenuDTO();
menu.setCode(code);
menu.setName(name);
menu.setPrice(price);
menu.setCategoryCode(categoryCode);
if(menuService.modifyMenu(menu)) {
printResult.printSuccessMessage("update");
} else {
printResult.printErrorMessage("update");
}
}
public void deleteMenu(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
if(menuService.deleteMenu(code)) {
printResult.printSuccessMessage("delete");
} else {
printResult.printErrorMessage("delete");
}
}
}
MenuDTO
public class MenuDTO {
private int code;
private String name;
private int price;
private int categoryCode;
private String orderableStatus;
public MenuDTO() {}
public MenuDTO(int code, String name, int price, int categoryCode,
String orderableStatus) {
super();
this.code = code;
this.name = name;
this.price = price;
this.categoryCode = categoryCode;
this.orderableStatus = orderableStatus;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(int categoryCode) {
this.categoryCode = categoryCode;
}
public String getOrderableStatus() {
return orderableStatus;
}
public void setOrderableStatus(String orderableStatus) {
this.orderableStatus = orderableStatus;
}
@Override
public String toString() {
return "MenuDTO [code=" + code + ", name=" + name + ",
price=" + price + ", categoryCode=" + categoryCode
+ ", orderableStatus=" + orderableStatus + "]";
}
}
MenuMapper
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
public interface MenuMapper {
@Results(id="menuResultMap", value = {
@Result(id = true, property = "code", column = "MENU_CODE"),
@Result(property = "name", column = "MENU_NAME"),
@Result(property = "price", column = "MENU_PRICE"),
@Result(property = "categoryCode", column = "CATEGORY_CODE"),
@Result(property = "orderableStatus", column = "ORDERABLE_STATUS")
})
@Select("SELECT \n" +
" MENU_CODE\n" +
" , MENU_NAME\n" +
" , MENU_PRICE\n" +
" , CATEGORY_CODE\n" +
" , ORDERABLE_STATUS\n" +
" FROM TBL_MENU\n" +
" WHERE ORDERABLE_STATUS = 'Y'\n" +
" ORDER BY MENU_CODE")
List<MenuDTO> selectAllMenu();
@Select("SELECT \n" +
" MENU_CODE\n" +
" , MENU_NAME\n" +
" , MENU_PRICE\n" +
" , CATEGORY_CODE\n" +
" , ORDERABLE_STATUS\n" +
" FROM TBL_MENU\n" +
" WHERE ORDERABLE_STATUS = 'Y'\n" +
" AND MENU_CODE = #{ code }")
@ResultMap("menuResultMap") // 위에서 작성한 resultMap 재사용 할 수 있다.
MenuDTO selectMenuByCode(int code);
@Insert("INSERT\n" +
" INTO TBL_MENU\n" +
"(\n" +
" MENU_CODE\n" +
", MENU_NAME\n" +
", MENU_PRICE\n" +
", CATEGORY_CODE\n" +
", ORDERABLE_STATUS\n" +
")\n" +
"VALUES\n" +
"(\n" +
" SEQ_MENU_CODE.NEXTVAL\n" +
", #{ name }\n" +
", #{ price }\n" +
", #{ categoryCode }\n" +
", 'Y'\n" +
")")
int insertMenu(MenuDTO menu);
@Update("UPDATE\n" +
" TBL_MENU\n" +
" SET MENU_NAME = #{ name }\n" +
" , MENU_PRICE = #{ price }\n" +
" , CATEGORY_CODE = #{ categoryCode }\n" +
" WHERE MENU_CODE = #{ code }")
int updateMenu(MenuDTO menu);
@Delete("DELETE\n" +
" FROM TBL_MENU\n" +
" WHERE MENU_CODE = #{ code }")
int deleteMenu(int code);
}
MenuService
import java.util.List;
import static com.greedy.section02.javaconfig.Template.getSqlSession;
import org.apache.ibatis.session.SqlSession;
public class MenuService {
private MenuMapper menuMapper;
public List<MenuDTO> selectAllMenu() {
SqlSession sqlSession = getSqlSession();
/* sqlSession은 요청 단위 생성이다. 따라서 getMapper로
메소드 스코프로 매번 불러와야 한다. */
menuMapper = sqlSession.getMapper(MenuMapper.class);
List<MenuDTO> menuList = menuMapper.selectAllMenu();
sqlSession.close();
return menuList;
}
public MenuDTO selectMenuByCode(int code) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
MenuDTO menu = menuMapper.selectMenuByCode(code);
sqlSession.close();
return menu;
}
public boolean registMenu(MenuDTO menu) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.insertMenu(menu);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
public boolean modifyMenu(MenuDTO menu) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.updateMenu(menu);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
public boolean deleteMenu(int code) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.deleteMenu(code);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
}
PrintResult
import java.util.List;
public class PrintResult {
public void printMenuList(List<MenuDTO> menuList) {
for(MenuDTO menu : menuList) {
System.out.println(menu);
}
}
public void printMenu(MenuDTO menu) {
System.out.println(menu);
}
public void printSuccessMessage(String successCode) {
String successMessage = "";
switch(successCode) {
case "insert" : successMessage = "신규 메뉴 등록에 성공하셨습니다."; break;
case "update" : successMessage = "메뉴 수정에 성공하셨습니다."; break;
case "delete" : successMessage = "메뉴 삭제에 성공하셨습니다."; break;
}
System.out.println(successMessage);
}
public void printErrorMessage(String errorCode) {
String errorMessage = "";
switch(errorCode) {
case "selectList" : errorMessage = "메뉴 목록 조회에 실패하셨습니다."; break;
case "selectOne" : errorMessage = "메뉴 조회에 실패하셨습니다."; break;
case "insert" : errorMessage = "신규 메뉴 등록에 실패하셨습니다."; break;
case "update" : errorMessage = "메뉴 수정에 실패하셨습니다."; break;
case "delete" : errorMessage = "메뉴 삭제에 실패하셨습니다."; break;
}
System.out.println(errorMessage);
}
}
Template
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
public class Template {
private static String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static String URL = "jdbc:log4jdbc:oracle:thin:@localhost:1521:xe";
private static String USER = "C##GREEDY";
private static String PASSWORD = "GREEDY";
private static SqlSessionFactory sqlSessionFactory;
public static SqlSession getSqlSession() {
if(sqlSessionFactory == null) {
Environment environment =
new Environment("dev"
, new JdbcTransactionFactory()
, new PooledDataSource(DRIVER, URL, USER, PASSWORD));
Configuration configuration = new Configuration(environment);
configuration.addMapper(MenuMapper.class);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
}
return sqlSessionFactory.openSession(false);
}
}
section03
Application
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MenuController menuController = new MenuController();
do {
System.out.println("========== 메뉴 관리 ==========");
System.out.println("1. 메뉴 전체 조회");
System.out.println("2. 메뉴 코드로 메뉴 조회");
System.out.println("3. 신규 메뉴 추가");
System.out.println("4. 메뉴 수정");
System.out.println("5. 메뉴 삭제");
System.out.print("메뉴 관리 번호를 입력하세요 : ");
int no = sc.nextInt();
switch(no) {
case 1 : menuController.selectAllMenu(); break;
case 2 : menuController.selectMenuByCode(inputMenuCode()); break;
case 3 : menuController.registMenu(inputMenu()); break;
case 4 : menuController.modifyMenu(inputModifyMenu());break;
case 5 : menuController.deleteMenu(inputMenuCode()); break;
default : System.out.println("잘못 된 메뉴를 선택하셨습니다.");
}
} while(true);
}
private static Map<String, String> inputMenuCode() {
Scanner sc = new Scanner(System.in);
System.out.print("메뉴 코드를 입력하세요 : ");
String code = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("code", code);
return parameter;
}
private static Map<String, String> inputMenu() {
Scanner sc = new Scanner(System.in);
System.out.print("메뉴 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("메뉴 가격을 입력하세요 : ");
String price = sc.nextLine();
System.out.print("카테고리 코드를 입력하세요 : ");
String categoryCode = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("name", name);
parameter.put("price", price);
parameter.put("categoryCode", categoryCode);
return parameter;
}
private static Map<String, String> inputModifyMenu() {
Scanner sc = new Scanner(System.in);
System.out.print("수정할 메뉴 코드를 입력하세요 : ");
String code = sc.nextLine();
System.out.print("수정할 메뉴 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("수정할 메뉴 가격을 입력하세요 : ");
String price = sc.nextLine();
System.out.print("수정할 카테고리 코드를 입력하세요 : ");
String categoryCode = sc.nextLine();
Map<String, String> parameter = new HashMap<>();
parameter.put("code", code);
parameter.put("name", name);
parameter.put("price", price);
parameter.put("categoryCode", categoryCode);
return parameter;
}
}
MenuController
import java.util.List;
import java.util.Map;
public class MenuController {
private final PrintResult printResult;
private final MenuService menuService;
public MenuController() {
printResult = new PrintResult();
menuService = new MenuService();
}
public void selectAllMenu() {
List<MenuDTO> menuList = menuService.selectAllMenu();
if(menuList != null) {
printResult.printMenuList(menuList);
} else {
printResult.printErrorMessage("selectList");
}
}
public void selectMenuByCode(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
MenuDTO menu = menuService.selectMenuByCode(code);
if(menu != null) {
printResult.printMenu(menu);
} else {
printResult.printErrorMessage("selectOne");
}
}
public void registMenu(Map<String, String> parameter) {
String name = parameter.get("name");
int price = Integer.parseInt(parameter.get("price"));
int categoryCode = Integer.parseInt(parameter.get("categoryCode"));
MenuDTO menu = new MenuDTO();
menu.setName(name);
menu.setPrice(price);
menu.setCategoryCode(categoryCode);
if(menuService.registMenu(menu)) {
printResult.printSuccessMessage("insert");
} else {
printResult.printErrorMessage("insert");
}
}
public void modifyMenu(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
String name = parameter.get("name");
int price = Integer.parseInt(parameter.get("price"));
int categoryCode = Integer.parseInt(parameter.get("categoryCode"));
MenuDTO menu = new MenuDTO();
menu.setCode(code);
menu.setName(name);
menu.setPrice(price);
menu.setCategoryCode(categoryCode);
if(menuService.modifyMenu(menu)) {
printResult.printSuccessMessage("update");
} else {
printResult.printErrorMessage("update");
}
}
public void deleteMenu(Map<String, String> parameter) {
int code = Integer.parseInt(parameter.get("code"));
if(menuService.deleteMenu(code)) {
printResult.printSuccessMessage("delete");
} else {
printResult.printErrorMessage("delete");
}
}
}
MenuDTO
public class MenuDTO {
private int code;
private String name;
private int price;
private int categoryCode;
private String orderableStatus;
public MenuDTO() {}
public MenuDTO(int code, String name, int price, int categoryCode,
String orderableStatus) {
super();
this.code = code;
this.name = name;
this.price = price;
this.categoryCode = categoryCode;
this.orderableStatus = orderableStatus;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(int categoryCode) {
this.categoryCode = categoryCode;
}
public String getOrderableStatus() {
return orderableStatus;
}
public void setOrderableStatus(String orderableStatus) {
this.orderableStatus = orderableStatus;
}
@Override
public String toString() {
return "MenuDTO [code=" + code + ", name=" + name + ",
price=" + price + ", categoryCode=" + categoryCode
+ ", orderableStatus=" + orderableStatus + "]";
}
}
MenuMapper
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
public interface MenuMapper {
List<MenuDTO> selectAllMenu();
MenuDTO selectMenuByCode(int code);
int insertMenu(MenuDTO menu);
int updateMenu(MenuDTO menu);
int deleteMenu(int code);
}
MenuService
import java.util.List;
import static com.greedy.section03.remix.Template.getSqlSession;
import org.apache.ibatis.session.SqlSession;
public class MenuService {
private MenuMapper menuMapper;
public List<MenuDTO> selectAllMenu() {
SqlSession sqlSession = getSqlSession();
/* sqlSession은 요청 단위 생성이다.
따라서 getMapper로 메소드 스코프로 매번 불러와야 한다. */
menuMapper = sqlSession.getMapper(MenuMapper.class);
List<MenuDTO> menuList = menuMapper.selectAllMenu();
sqlSession.close();
return menuList;
}
public MenuDTO selectMenuByCode(int code) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
MenuDTO menu = menuMapper.selectMenuByCode(code);
sqlSession.close();
return menu;
}
public boolean registMenu(MenuDTO menu) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.insertMenu(menu);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
public boolean modifyMenu(MenuDTO menu) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.updateMenu(menu);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
public boolean deleteMenu(int code) {
SqlSession sqlSession = getSqlSession();
menuMapper = sqlSession.getMapper(MenuMapper.class);
int result = menuMapper.deleteMenu(code);
if(result > 0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result > 0 ? true : false;
}
}
PrintResult
import java.util.List;
public class PrintResult {
public void printMenuList(List<MenuDTO> menuList) {
for(MenuDTO menu : menuList) {
System.out.println(menu);
}
}
public void printMenu(MenuDTO menu) {
System.out.println(menu);
}
public void printSuccessMessage(String successCode) {
String successMessage = "";
switch(successCode) {
case "insert" : successMessage = "신규 메뉴 등록에 성공하셨습니다."; break;
case "update" : successMessage = "메뉴 수정에 성공하셨습니다."; break;
case "delete" : successMessage = "메뉴 삭제에 성공하셨습니다."; break;
}
System.out.println(successMessage);
}
public void printErrorMessage(String errorCode) {
String errorMessage = "";
switch(errorCode) {
case "selectList" : errorMessage = "메뉴 목록 조회에 실패하셨습니다."; break;
case "selectOne" : errorMessage = "메뉴 조회에 실패하셨습니다."; break;
case "insert" : errorMessage = "신규 메뉴 등록에 실패하셨습니다."; break;
case "update" : errorMessage = "메뉴 수정에 실패하셨습니다."; break;
case "delete" : errorMessage = "메뉴 삭제에 실패하셨습니다."; break;
}
System.out.println(errorMessage);
}
}
Template
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
public class Template {
private static String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static String URL = "jdbc:log4jdbc:oracle:thin:@localhost:1521:xe";
private static String USER = "C##GREEDY";
private static String PASSWORD = "GREEDY";
private static SqlSessionFactory sqlSessionFactory;
public static SqlSession getSqlSession() {
if(sqlSessionFactory == null) {
Environment environment =
new Environment("dev"
, new JdbcTransactionFactory()
, new PooledDataSource(DRIVER, URL, USER, PASSWORD));
Configuration configuration = new Configuration(environment);
configuration.addMapper(MenuMapper.class);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
}
return sqlSessionFactory.openSession(false);
}
}