Spring

2023.03.03

연을 2023. 3. 3. 17:05
728x90

[MyBatis]

  • p232-233 참조하여 만든다.
  • sping starter project → next → 추가해야하는 것 : spring web, lombok, MaBatis Framework
[롬복추가하기]
추가할 파일 오른쪽 클릭 → Properties → Java Build Path → Classpath → AddExternal JARs → 롬복선택 → Apply close
[oracle 추가하기]
추가할 파일 오른쪽 클릭 → Properties → Java Build Path → Classpath → AddExternal JARs → D:\app\admin\product\11.2.0\dbhome_1\jdbc\lib → ojdbc6/jar 선택  → Apply close
둘다 추가하고 나서 Gradle을 하면 안된다. 하는 순간 날라감으로 주의
DAO/DTO
DTO를 사용할때는 select할 때만 사용
DAO는 CRUD
XML
<mapper namespace="DAO 경로와 이름">
     <select id="DAO안의 method" resultType="DTO경로와 이름">
         select SQL(';'없이)
     </select>
</mapper>
DAO
@Mapper
interface IDAO{
    ArrayList<DTO> method();
}
DTO
class 변수명==조회되는 컬럼명
Controller
@Autowired
private DAO dao;

       ArrayList<DTO> alDTO = dao.method();
       model.addattribute("dto",alDTO);
       return "JSP이름";
View(JSP)
<c:forEach items="dto" var="x">
      ${x.variable}
</c:forEach>

[DTO 만들기]

java class : StudentDTO

package com.human.springboot;

import lombok.Data;

@Data
public class StudentDTO {
	String name;
	String gender;
	String birthday;
	int math_score;
	int kor_score;
	int eng_score;
	
}

java interface : IDAO

package com.human.springboot;

import java.util.ArrayList;

public interface IDAO {
	ArrayList<StudentDTO> list();
}

mybastis.mapper → Student.xml : 나와야 하는 것들을 여기서 설정

<?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="com.human.springboot.IDAO">
	<select id="list" resultType="com.human.springboot.StudentDTO">
		select sname,gender,birthday,math_score,kor_score,eng_score
		from student
	</select>
</mapper>

application.properties

server.port=8081
#JSP 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
#DB연동설정
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/orcl
spring.datasource.username=ora_user
spring.datasource.password=human123
#MyBatis
mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml
  • IDAO : new → interface
  • StudentDTO : new → class
  • mybastis.mapper : src/main/resources의 New → package
  • application.properties : JSP 설정뿐만 아니라 DB연동,
    MyBatis도 추가해한다.

list

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Student</title>
</head>
<body>
<table border=1>
<c:forEach items="${students}" var="student">
	<tr><td>${student.sname}</td>
		<td>${student.gender}</td>
		<td>${student.birthday}</td>
		<td>${student.math_score}</td>
		<td>${student.kor_score}</td>
		<td>${student.eng_score}</td>
</c:forEach>
</table>
</body>
</html>

MyController

package com.human.springboot;

import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.human.springboot.IDAO;

@Controller
public class MyController {

	@Autowired
	private IDAO idao;

	@GetMapping("/list")
	public String doList(Model model) {
		ArrayList<StudentDTO> alStudent= idao.list();
		model.addAttribute("students",alStudent);
		return "list";
	}
}

<결과>

결과


[과제]

employee_id, emp_name, manager_id를 나타내는 화면 만들기

[EmpDTO]

package com.human.springboot;

import lombok.Data;

@Data
public class EmpDTO {
	String employee_id;
	String manager_id;
	String emp_name;
}

[IDAO]

package com.human.springboot;

import java.util.ArrayList;

import org.apache.ibatis.annotations.Mapper;

@Mapper//컨트롤+시프트+o
public interface IDAO {
	ArrayList<EmpDTO> getEmp(); 
}

[MyController]

package com.human.springboot;

import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.human.springboot.IDAO;

@Controller
public class MyController {

	@Autowired
	private IDAO idao;
	
	@GetMapping("/employee")
	public String doemploy(Model model) {
		ArrayList<EmpDTO> alEmployee = idao.getEmp(); //<>안에 들어가는건 java이름 
        //idao.뒤에 오는 이름은 IDAO에서 만든 이름 
		model.addAttribute("employees",alEmployee);
		return "emp"; //.jsp의 이름을 써줘야 한다
	}
}

[emp.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Employee</title>
</head>
<body>
<table border=1>
<c:forEach items="${employees}" var="employee">
	<tr><td>${employee.employee_id}</td>
		<td>${employee.emp_name}</td>
		<td>${employee.manager_id}</td>
</c:forEach>
</table>
</body>
</html>

[Employee.xml] : 화면에 보여지는 코드

<?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="com.human.springboot.IDAO">
	<select id="getEmp" resultType="com.human.springboot.EmpDTO">
		select employee_id,emp_name,manager_id 
		from employees
	</select>
</mapper>

<결과>

값이 나온다.


<사원 아이디 불러와서 보여주기>

[workerDTO]

package com.human.springboot;

import lombok.Data;

@Data
public class workerDTO {
	int employee_id;
	String emp_name;
	String manager_id;
}
 

[IDAO]

package com.human.springboot;

import java.util.ArrayList;

import org.apache.ibatis.annotations.Mapper;

@Mapper//컨트롤+시프트+o
public interface IDAO {
	ArrayList<EmpDTO> getEmp();
	EmpDTO getOne();
	workerDTO getWorker(int employee_id);
}

[xml]

<?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="com.human.springboot.IDAO">
	<select id="getWorker" resultType="com.human.springboot.workerDTO">
		select employee_id,emp_name,manager_id 
		from employees
		where employee_id=#{param1}
	</select>
</mapper>

[Controller]

package com.human.springboot;

import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import com.human.springboot.IDAO;
@Controller
public class MyController {

	@Autowired
	private IDAO idao;
	
	@GetMapping("/worker/{eid}")
	public String getworker(@PathVariable("eid") int eid,Model model) {
		workerDTO edto=idao.getWorker(eid);
		model.addAttribute("one",edto);
		return "oneman";
	}
}

[oneman.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>124</title>
</head>
<body>
사번 :${one.employee_id }<br>
이름 : ${one.emp_name }<br>
매니저아이디 : ${one.manager_id}<br>
</body>
</html>

<월급받아서 나오게 하기>

Controller

package com.human.springboot;

import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import com.human.springboot.IDAO;
@Controller
public class MyController {

	@Autowired
	private IDAO idao;

	@GetMapping("/salary/{low}/{high}")
	public String getSalary(@PathVariable("low") int low, @PathVariable("high") int high, Model model) {
		ArrayList<SalaryDTO> alSalary = idao.getSalary(low, high);
		model.addAttribute("salarys",alSalary);
		return "salaryemp";
	}
}

salaryemp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border=1>
<c:forEach items="${salarys}" var="salary">
	<tr><td>${salary.employee_id}</td>
	<td>${salary.emp_name}</td>
	<td>${salary.salary}</td></tr>
</c:forEach>
</table>
</body>
</html>

IDAO

package com.human.springboot;

import java.util.ArrayList;

import org.apache.ibatis.annotations.Mapper;

@Mapper//컨트롤+시프트+o
public interface IDAO {
	ArrayList<EmpDTO> getEmp();
	EmpDTO getOne();
	workerDTO getWorker(int employee_id);
	ArrayList<SalaryDTO> getSalary(int salary, int salary1);
}

SalaryDTO

package com.human.springboot;

import lombok.Data;

@Data
public class SalaryDTO {
	int employee_id;
	String emp_name;
	int salary;
}

<결과>

빨간부분에 월급을 써야한다.

불금!!!

 

 

 

 

728x90