2022. 2. 22. 13:50ㆍksmart_Framework/spring
데이터소스에 대한 설정을 하지 않아서 dbcp 를 설정 할 수 없다.
application.properties에서 DB연결한다.
# db 연결 정보
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ksmart42db?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=ksmart42id
spring.datasource.password=ksmart42pw
mybatis pom.xml에 thymeleaf library 추가해준다.
<!-- https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect -->
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
Controller
요청에 대해서 응답받기 위해
Service
화면에 값을 전달하기 이전 로직 만드는 구간
Dto
계층간의 데이터 전송하기 위해
Mapper
Dao 역할을 한다.
package ksmart42.mybatis.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
//@Transactional dao 연결해서 db 작업
@Service
@Transactional
public class MemberService {
}
interface
상수와 추상메서드만 존재한다.
Mapper
Dao 역할을 한다.
package ksmart42.mybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MemberMapper {
}
Dto
계층간의 데이터 전송하기 위해 만든다.
package ksmart42.mybatis.dto;
public class Member {
private String memberId;
private String memberPw;
private String memberName;
private String memberLevel;
private String memberEmail;
private String memberAddr;
private String memberRegDate;
public String getMemberRegDate() {
return memberRegDate;
}
public void setMemberRegDate(String memberRegDate) {
this.memberRegDate = memberRegDate;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberLevel() {
return memberLevel;
}
public void setMemberLevel(String memberLevel) {
this.memberLevel = memberLevel;
}
public String getMemberEmail() {
return memberEmail;
}
public void setMemberEmail(String memberEmail) {
this.memberEmail = memberEmail;
}
public String getMemberAddr() {
return memberAddr;
}
public void setMemberAddr(String memberAddr) {
this.memberAddr = memberAddr;
}
@Override
public String toString() {
return "Member [memberId=" + memberId + ", memberPw=" + memberPw + ", memberName=" + memberName
+ ", memberLevel=" + memberLevel + ", memberEmail=" + memberEmail + ", memberAddr=" + memberAddr
+ ", memberRegDate=" + memberRegDate + "]";
}
}
Dto
계층간의 데이터 전송하기 위해 만든다.
mybatis 설정
# mybatis 설정
# mapper xml 파일 위치 경로 설정 ex)classpath:==src/main/resources/
mybatis.mapper-locations=classpath:mappper/**/*.xml
#mapper 안에 담겨져있는 모든 파일 안에 모든 xml 파일
mapper dto 설정
# mapper dto 설정
mybatis.type-aliases-package=ksmart42.mybatis.dto
mybatis 공홈
https://mybatis.org/spring/ko/index.html
mybatis-spring –
소개 MyBatis-Spring 은 무엇일까? 마이바티스 스프링 연동모듈은 마이바티스와 스프링을 편하고 간단하게 연동한다. 이 모듈은 마이바티스로 하여금 스프링 트랜잭션에 쉽게 연동되도록 처리한다.
mybatis.org
mybatis 흐름
6.2. Database Access (MyBatis3) — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.2.1.RELEASE documentation
How to implement a search process of Entity for different purposes, is explained below. The explanation below is the example wherein a setting is enabled to automatically map column name separated by an underscore in property name with camel case. Implemen
terasolunaorg.github.io
mybatis 작성방법
MyBatis 설정 파일 - SQL Mapper 작성 방법
관련 글 - [JAVA/WEB] 웹 프로젝트에 MyBatis 세팅 및 적용하기 MyBatis 설정 파일 - SQL Mapper 작성 방법 MyBatis 사용 목적 중 하나는 DAO로부터 SQL문을 분리하는 것이다. 분리된 SQL문은 SQL mapper..
atoz-develop.tistory.com
Mapper 설정
MemberMapper.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 xml을 보면 namespace가 있는데 이 namespace를 mapper interface의 이름과 맞춰주면 xml의 설정과 인터페이스에 선언한 설정을 같이 사용 할 수 있게 된다. 그리고 제약도 같이 적용이 된다.
<mapper namespace="ksmart42.mybatis.mapper.MemberMapper">
</mapper>
1. 회원의 전체 목록 가져온다.
SELECT 쿼리문을 작성한다.
SELECT
m.m_id
,m.m_pw
,m.m_name
,m.m_level
,m.m_email
,m.m_addr
,m.m_reg_date
FROM
tb_member AS m;
2, Dto에 값을 집어넣어 세팅한다.
dao 에 resultset으로 가져온다.
Member에 대한 property 는 카멜 방식으로 되어있다.
mapping 작업을 해준다.
SELECT
m.m_id AS memberId
,m.m_pw AS memberPw
,m.m_name AS memberName
,m.m_level AS memberLevel
,m.m_email AS memberEmail
,m.m_addr AS memberAddr
,m.m_reg_date AS memberRegDate
FROM
tb_member AS m;
setter 메서드를 통해서 값을 하나씩 넣어준다.
package ksmart42.mybatis.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import ksmart42.mybatis.dto.Member;
@Mapper
public interface MemberMapper {
//회원의 전체 목록을 조회하는 추상 메서드
public List<Member> getMemberList();
}
<?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="ksmart42.mybatis.mapper.MemberMapper">
<!-- id명은 추상 메서드가 된다.MemberMapper 에 있는getMemberList 가져온다.매개변수 받을 필요 없으므로 리턴 타입만 있으면 된다. -->
<select id="getMemberList" resultType="Member">
</select>
</mapper>
<?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="ksmart42.mybatis.mapper.MemberMapper">
<select id="getMemberList" resultType="Member">
SELECT
m.m_id AS memberId
,m.m_pw AS memberPw
,m.m_name AS memberName
,m.m_level AS memberLevel
,m.m_email AS memberEmail
,m.m_addr AS memberAddr
,m.m_reg_date AS memberRegDate
FROM
tb_member AS m;
</select>
</mapper>
service
Mapper라고 선언이 되어있어 스프링이 이미 객체를 만들어둔 상태이다.
Service에 DI 의존성 주입을 생성자 메서드 주입방식으로 한다.
서비스에 있는 리스트 멤버 객체를 호출하면 객체의 주소를 반환해주기 위함.
dao 메서드를 호출해서 list 객체 가지고 와야한다.
package ksmart42.mybatis.controller;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import ksmart42.mybatis.dto.Member;
import ksmart42.mybatis.dto.Member2;
import ksmart42.mybatis.service.MemberService;
import ksmart42.mybatis.service.MemberService2;
@Controller
@RequestMapping("/member")
public class MemberController {
private static final Logger log = LoggerFactory.getLogger(MemberController.class);
//di 의존성 주입 생성자 메서드 주입방식
private MemberService memberService;
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/memberList")
public String getMemberList(Model model) {
log.info("회원목록요청");
List<Member> memberList = memberService.getMemberList();
model.addAttribute("title","회원목록조회");
model.addAttribute("memberList", memberList);
return "member/memberList";
}
}
main.html 파일을 templates 파일 안에 member 파일 생성해서
main.html 복사해서 memberList.html으로 이름 변경한다.
'ksmart_Framework > spring' 카테고리의 다른 글
회원가입_sts (0) | 2022.02.22 |
---|---|
log4j_sts (0) | 2022.02.22 |
springboot 백업_sts (0) | 2022.02.20 |
@Service @Autowired 어노테이션, ModelAndView_sts (0) | 2022.02.20 |
thymeleaf 와 Model 객체 사용법_sts (0) | 2022.02.17 |