단순 코드 기록/Spring

Spring_myBatis_selectAll

일일일코_장민기 2024. 2. 15. 16:01
728x90
jdbc.properties
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.userid=scott
jdbc.passwd=tiger

 

DeptMapper
<?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.dto.DeptMapper">

<select id="testList" resultType="dept">
	select *
	from dept
</select>


</mapper>

 

MainController
package com.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.dto.DeptDTO;
import com.service.MemberService;

@Controller
public class MainController {

	public MainController() {
		super();
		System.out.println("메인 기본 생성자 호출");
	}

	@Autowired
	SqlSessionTemplate session;
	
	@Autowired 
	MemberService service;
 
	@RequestMapping("/aaa")
	@ResponseBody
	public String testList() {
		System.out.println("main testList");
		service.testList();
		return "test";
	}
	
	@RequestMapping("/bbb")
	public String testList2(Model m) {
		System.out.println("main testList2");
		List<DeptDTO> list = service.testList2();
		m.addAttribute("list", list);
		return "list";
	}
	
	@RequestMapping("/ccc")
	public ModelAndView testList3() {
		System.out.println("main testList3");
		List<DeptDTO> list = service.testList2();
		ModelAndView mav = new ModelAndView();
		mav.addObject("list", list);	//key = list
		mav.setViewName("list");		//list.jsp
		return mav;
	}
	
	
	@RequestMapping("/ddd")
	public String testList4(HttpServletRequest request) {
		System.out.println("main testList4");
		List<DeptDTO> list = service.testList2();
		request.setAttribute("list", list);	//key = list
		return "list";						//list.jsp
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	@RequestMapping("/test")
	@ResponseBody
	public String test() {
		System.out.println("===========");
		System.out.println("sessionTemplate: "+session);
		System.out.println("service: "+service);
		service.test();
		System.out.println("===========");
	return "aa";	//jsp없이도 aa라는 문자열이 화면에 출력							
	}
}

 

DAO
package com.dao;

import java.util.ArrayList;
import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.dto.DeptDTO;

@Repository
public class DeptDAO {
	
	public DeptDAO() {
		super();
		System.out.println("DAO 기본 생성자 호출");
	}

	@Autowired
	SqlSessionTemplate session;
	
	public void testList() {
		List<DeptDTO> list = session.selectList("testList");
		System.out.println(list);
	}
	
	public List<DeptDTO> testList2() {
		List<DeptDTO> list = session.selectList("testList");
		System.out.println(list);
		return list;
	}
	
	
	
	
	public void test() {
		System.out.println("DAO: "+ session);
	}
}

 

DTO(lombok 설명 추가)(Alias 주의)

 

package com.dto;

import org.apache.ibatis.type.Alias;

//  lombok 설정(lombok 디펜던시 추가할 경우)
//	@Alias위에 @Data @AllArgsConstructor를 입력
//	--> 오버라이드, 기본생성자, 필드, Getter/Setter 자동 설정(입력해줄 필요 없음)

@Alias("dept")
public class DeptDTO {
	
	private int deptno;
	private String dname;
	private String loc;
	@Override
	public String toString() {
		return "DeptDTO [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
	}
	public DeptDTO() {
		super();
		// TODO Auto-generated constructor stub
	}
	public DeptDTO(int deptno, String dname, String loc) {
		super();
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
}

 

Service
package com.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dao.DeptDAO;
import com.dto.DeptDTO;

@Service
public class MemberService {
	
	public MemberService() {
		super();
		System.out.println("서비스 기본 생성자 호출");
	}

	@Autowired
	DeptDAO dao;
	
	public void testList() {
		System.out.println("service testList");
		dao.testList();
	}
	
	
	public List<DeptDTO> testList2() {
		System.out.println("service testList2");
		List<DeptDTO> list = dao.testList2();
		return list;
	}
	
	
	
	public void test() {
		System.out.println("서비스에서 DAO의 test함수 호출");
		dao.test();
	}

}

 

servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

	<annotation-driven />
	<default-servlet-handler/>

	<resources mapping="/resources/**" location="/resources/" />

	<view-controller path="/" view-name="main"/>

	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.*" />
	<!-- context:annotation이 기본으로 포함됨(생성할 필요 X) -->
	<!-- properties + SQLSessionFactory의 Bean생성은 root-context.xml -->
	
	
</beans:beans>

 

root-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

	<!-- 1. placeholder -->	
	<context:property-placeholder location="classpath:com/config/jdbc.properties"/>

	
	<!-- 2. jdbc연결 -->
	<bean id="myDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${jdbc.driver}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.userid}"/>
		<property name="password" value="${jdbc.passwd}"/>
	</bean>


	<!-- 3. transaction -->
	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="myDataSource">						<!-- ref에 2번의 id -->
		</property>
	</bean>
	<tx:annotation-driven transaction-manager="txManager"/>
		
		
	<!-- 4. SQLSessionFactoryBean -->	
	<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="myDataSource">						<!-- ref에 2번의 id -->
		</property>
		<property name="mapperLocations">
			<list>
				<value>classpath:com/config/DeptMapper.xml</value>
			</list>
		</property>
		<property name="typeAliases">
			<list>
				<value>com.dto.DeptDTO</value>
			</list>
		</property>
	</bean>
	
	
	<!-- 5. SQLSessionTemplate : SQLSession 기능 -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sessionFactory">		<!-- ref에 4번의 id -->
		</constructor-arg>
	</bean>
		
</beans>

 

main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>main.jsp</h1>


</body>
</html>

 

list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>list.jsp</h1>

${list}


</body>
</html>

 

'단순 코드 기록 > Spring' 카테고리의 다른 글

Spring_암호화와 복호화  (0) 2024.02.24
Spring_myBatis_DML  (0) 2024.02.15
Spring_myBatis  (0) 2024.02.15
Spring_RESTFul  (0) 2024.02.15
Spring_Context주소  (0) 2024.02.15