[spring Boot]_16일차_Mybatis

youuu·2022년 11월 8일
0

SPRING

목록 보기
25/33
post-thumbnail

🌱 Mybatis 만들기

Lombok, Validation, Java Mail Sender, WebSocket, Spring Data JPA, MyBatis Framework, Oracle Driver, Spring Security, Spring Web 를 선택해준다.

  • Validation : 유효성검사


1. 기본세팅


기본세팅하는 순서

📋 Dept.java

package com.oracle.oBootMybatis01.model;

import lombok.Data;

@Data
public class Dept {
	private int 	deptno;
	private String  dname;
	private String  loc;
}

📋 Emp.java

package com.oracle.oBootMybatis01.model;

import lombok.Data;

@Data
public class Emp {
	private int 	empno;
	private 		String ename;
	private 		String job;
	private int 	mgr;
	private String	hiredate;
	private int 	sal;
	private int 	comm;
	private int 	deptno;

	//조회용
	private String 	search;
	private int 	keyword;
	private String 	pageNum;
	private int 	start;
	private int 	end;
}

📋 EmpDao.java

package com.oracle.oBootMybatis01.dao;

public interface EmpDao {
	int totalEmp();
	
	
}

📋 EmpDaoImpl.java

package com.oracle.oBootMybatis01.dao;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Repository
@RequiredArgsConstructor
@Slf4j
public class EmpDaoImpl implements EmpDao {

	private final SqlSession session;
	
	@Override
	public int totalEmp() {
		int tot = 0;
		log.info("EmpDaoImpl START totalEmp ...........");
		return 0;
	}
}

📋 EmpService.java

  • interface
package com.oracle.oBootMybatis01.service;

public interface EmpService {
	int totalEmp();
	
}

📋 EmpServiceImpl.java

package com.oracle.oBootMybatis01.service;

import org.springframework.stereotype.Service;

import com.oracle.oBootMybatis01.dao.EmpDao;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
@RequiredArgsConstructor
public class EmpServiceImpl implements EmpService {

	private final EmpDao ed;
	
	@Override
	public int totalEmp() {
		log.info("EmpServiceImpl START totalEmp ........");
		return 0;
	}
}

📋 EmpServiceImpl.java

@RequestMapping : 들어온 요청을 특정 메서드와 매핑하기 위해 사용힌디.

  • value와 method가 있다. method에서 (GET, POST, PUT, DELETE)을 정의
  • 사용방법 : 맨 위에서 @RequestMapping를 한번 써준 후
    @GetMapping(), @PostMapping(), @PutMapping(), @DeleteMapping()를 건다
package com.oracle.oBootMybatis01.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.oracle.oBootMybatis01.model.Emp;
import com.oracle.oBootMybatis01.service.EmpService;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Controller
@RequiredArgsConstructor
@Slf4j
public class EmpController {

	private final EmpService es;
	
	@RequestMapping(value = "listEmp")
	public String empList(Emp emp, String currentPage, Model model) {
		log.info("EmpController listEmp START ..........");

	return "list";
	}
}

📋 EmpServiceImpl.java

package com.oracle.oBootSecurity01.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;


@Configuration		//IoC 빈(bean)을 등록
@EnableWebSecurity //필터 체인 관리 시작 어노테이션
public class SecurityConfig {

	@Bean 			// 컨트롤러 로직 어디에서든 암호화를 사용할 수 있다.
	public BCryptPasswordEncoder encoderPwd() {
		return new BCryptPasswordEncoder(); 
	}
	
	
	@Bean
	protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
		
		http.csrf().disable();
		http.authorizeHttpRequests()	//인가,권한
			.anyRequest()
			.permitAll(); //permitAll : 다 허용
		
		return http.build();
	}
}

여기까지가 기본세팅


  1. yml에서 Mybatis 설정

classpath는 resource

# Mybatis
mybatis:
  config-location: classpath:configuration.xml
  mapper-locations: classpath:mappers/*.xml

  1. yml에서 기술한 classpath configuration, mappers 만들기

📋 configuration.xml

<?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>
	<typeAliases>
		<typeAlias alias="Emp" type="com.oracle.oBootMybatis01.model.Emp;" />
		<typeAlias alias="Dept" type="com.oracle.oBootMybatis01.model.Dept;"/>
	</typeAliases>

</configuration>

📋 Emp.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.oracle.oBootMybatis01.EmpMapper">
	
	<select id="empTotal" resultType="int">
		select Count(*) from emp
	</select>

</mapper>

파샬맵핑을 한다.


🧶 DB에서 쿼리 만들기 :

SELECT *
FROM
(
    select rownum rn, a.*
    from 
        (select * from emp order by empno) a
)
WHERE rn BETWEEN 1 and 10;

Emp.xml에 작성


📋 Emp.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!-- ======= mapper 기본설정 ======= -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- ==== 루트 엘리먼트 & 네임스페이스 설정(프로젝트 전체 내에서 유일해야 한다.) ==== -->
<mapper namespace="com.oracle.oBootMybatis01.EmpMapper">
	<select id="empTotal" resultType="int">
		SELECT Count(*) FROM emp
	</select>

	<select id="tkEmpListAll" parameterType="Emp" resultType="Emp">
		SELECT *
		FROM
		(
		    select rownum rn, a.*
		    from 
		        (select * from emp order by empno) a
		)
		WHERE rn BETWEEN #{start} and #{end}
		
	
	</select>
</mapper>

EmpDaoImpl.java에서 List형으로 한다.

list.jsp 와 header.jsp를 만든후 실행하면0 아래 화면을 볼 수 있다.(번호는 추후에 수정예정)

Mybatis, JPA 비교

  • 정리해보기.
profile
공부중인 주니어 개발자

0개의 댓글