- dbinfos.java
package kr.co.sen;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
//@configuration : config.xml을 안쓰겠다!
@Configuration //환경설정
//properties를 로드
@PropertySource("classpath:/application.properties")
public class dbinfos {
@ConfigurationProperties(prefix="spring.datasource") //properties에서 사용하는 클래스명
@Bean //bean을 이용하여 환경설정 연결
public DataSource datasource() {
return DataSourceBuilder.create().build();
}
}
👀 coupon list 예제;
- mapper.xml
얘는 src/main/resources 패키지 안에 mapper폴더 안에 있는 mapper.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="kr.co.sen.coupon_repository">
<select id="getAllcoupon" resultType="kr.co.sen.coupon_dao">
select * from coupon order by cidx desc
</select>
</mapper>
mapper namespace= "Java Interface @Mapper명"
- coupon_repository.java
(interface)
얘는 mapper.xml이랑 연결
package kr.co.sen;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
@Mapper //mapper와 연동
public interface coupon_repository { //Mapper에서 연동되는 id를 로드함
List<coupon_dao> getAllcoupon(); //연결된거임
//전체 리스트 출력 - mapper의 id작성
}
- coupon_service.java
얘두 (interface)
=> repository + mapper.xml을 로드할 수 있는 interface를 생성
package kr.co.sen;
import java.util.List;
//repository + mapper.xml을 로드할 수 있는 interface를 생성
public interface coupon_service {
public List<coupon_dao> getAllCoupon();
}
- coupon_service_impl.java
얜 그냥 클래스
package kr.co.sen;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class coupon_service_impl implements coupon_service, 머시기_service..이렇게 추가..{
//Repository를 로드함 (mapper.xml에 있는 DDL명령어 실행)
@Autowired
private coupon_repository coupon_repository;
@Override
public List<coupon_dao> getAllCoupon(){
//여기서 뭐 배열을 만들거나..뭐시기 해서 return으로 보내버리면 됨
return coupon_repository.getAllcoupon();
}
//... 여기에 @override가 계속 추가되는 형태
}
- Controller
package kr.co.sen;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class main_controller {
@Autowired
private coupon_service coupon_service;
//interface를 최종 호출- 호출되자마자 @service부분이 발동됨
@GetMapping("/list.do")
public String coupon_list(Model m) {
List<coupon_dao> all = coupon_service.getAllCoupon();
int ea = all.size();
m.addAttribute("ea",ea);
m.addAttribute("all",all);
return null;
}
}
- list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠폰 리스트 spring-boot 페이지</title>
</head>
<body>
쿠폰 총 갯수 : ${ea}
<ul>
<cr:forEach var="data" items="${all}">
<li>
<div>${data.cpname}</div>
<div>${data.cprate}</div>
<div>${data.cpuse}</div>
<div>${data.cpdate}</div>
<div>${data.indate}</div>
</li>
</cr:forEach>
</ul>
</body>
</html>
🤷♂️❓
Service (interface)
(실제 파일명을 service를 포함해서 지어야함!)
🔼
| |
🔽
SerciceImpl (구현 class)
( 얜 맘대로 지어도 됨 )
⭐ @service 라는 annotation => 해당 interface를 로드하면 해당 class를 실행시켜주는 annotaion
(new 하고 뭐하고 해서 호출하는 과정을 boot에서 간소화시킨거임)
※ Impl :
implements의 약자
AOP에서 구현 형태의 인터페이스 객체 (추상화)=> 여기서 좀더 발전되면 OCP(다형성)
▶ 다음 게시글에서 insert 해볼거임!
'CLASS > SPRINGBOOT' 카테고리의 다른 글
#2-3 / AOP+springboot+로그기록(aop에서 dao 값 가져오기) (0) | 2024.08.13 |
---|---|
#2-2 / AOP-springboot (0) | 2024.08.13 |
#2-1 / AOP-java (0) | 2024.08.13 |
#1-3 / springboot 기본형태 + coupon insert,delete 및 boot정리.. (0) | 2024.08.12 |
#1-1 / springboot setting (0) | 2024.08.09 |