Lombok
,Validation
,Java Mail Sender
,WebSocket
,Spring Data JPA
,MyBatis Framework
,Oracle Driver
,Spring Security
,Spring Web
를 선택해준다.
Validation
: 유효성검사기본세팅하는 순서
package com.oracle.oBootMybatis01.model;
import lombok.Data;
@Data
public class Dept {
private int deptno;
private String dname;
private String loc;
}
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;
}
package com.oracle.oBootMybatis01.dao;
public interface EmpDao {
int totalEmp();
}
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;
}
}
package com.oracle.oBootMybatis01.service;
public interface EmpService {
int totalEmp();
}
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;
}
}
@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";
}
}
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();
}
}
여기까지가 기본세팅
classpath
는 resource
# Mybatis
mybatis:
config-location: classpath:configuration.xml
mapper-locations: classpath:mappers/*.xml
configuration
, mappers
만들기<?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>
<!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>
파샬맵핑을 한다.
SELECT *
FROM
(
select rownum rn, a.*
from
(select * from emp order by empno) a
)
WHERE rn BETWEEN 1 and 10;
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 아래 화면을 볼 수 있다.(번호는 추후에 수정예정)