From 5eee28d13c30970fec22e860b514c74be50a1950 Mon Sep 17 00:00:00 2001 From: wonbin <wonbin3977@ajou.ac.kr> Date: Wed, 2 Apr 2025 18:59:34 +0900 Subject: [PATCH] spring-basic --- .../com/example/demo/DemoApplication.java | 35 ++++++++++++++++--- .../demo/controller/MemberController.java | 2 +- .../demo/controller/UserController.java | 28 +++++++++++++++ .../java/com/example/demo/dao/UserDAO.java | 8 +++++ .../java/com/example/demo/dto/UserDTO.java | 14 ++++++++ src/main/resources/mappers/UserMapper.xml | 18 ++++++++++ 6 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/example/demo/controller/UserController.java create mode 100644 src/main/java/com/example/demo/dao/UserDAO.java create mode 100644 src/main/java/com/example/demo/dto/UserDTO.java create mode 100644 src/main/resources/mappers/UserMapper.xml diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index 2139ef8..09110f4 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -1,16 +1,41 @@ package com.example.demo; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.ApplicationContext; +import java.util.Arrays; +import com.example.demo.entity.Item; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.springframework.context.annotation.Bean; +import javax.sql.DataSource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.Resource; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.SpringApplication; + @RestController @SpringBootApplication +// @EntityScan(basePackageClasses = {Item.class}) + public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); - } - -} \ No newline at end of file + } + + + @Bean + public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + + Resource[] res = new PathMatchingResourcePatternResolver().getResources("mapper/Mapper.xml"); + sessionFactory.setMapperLocations(res); + + return sessionFactory.getObject(); + } + +} diff --git a/src/main/java/com/example/demo/controller/MemberController.java b/src/main/java/com/example/demo/controller/MemberController.java index 265e24c..065ae80 100644 --- a/src/main/java/com/example/demo/controller/MemberController.java +++ b/src/main/java/com/example/demo/controller/MemberController.java @@ -21,7 +21,7 @@ public class MemberController { public Member createMember(){ MemberDto memberDto = new MemberDto(); - memberDto.setEmail("test1@email.com"); + memberDto.setEmail("test@email.com"); memberDto.setName("홍길동"); memberDto.setAddress("서울시 마포구 합정동"); memberDto.setPassword("1234"); diff --git a/src/main/java/com/example/demo/controller/UserController.java b/src/main/java/com/example/demo/controller/UserController.java new file mode 100644 index 0000000..646e25e --- /dev/null +++ b/src/main/java/com/example/demo/controller/UserController.java @@ -0,0 +1,28 @@ +package com.example.demo.controller; + +import java.util.List; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.example.demo.dao.UserDAO; +import com.example.demo.dto.UserDTO; + +@RestController +@MapperScan(basePackages="com.example.demo.dao")//탐색할 패키시 설정 +public class UserController { + @Autowired + private UserDAO userDAO;//UserDAO bean을 자동으로 주입 + + @RequestMapping("/users") + public List<UserDTO> users(@RequestParam(value="country", defaultValue = "")String country) throws Exception { //query String으로 country를 받도록 설정 + final UserDTO param = new UserDTO(0, null, country); + final List<UserDTO> userList = userDAO.selectUsers(param); + return userList; + } + +} + diff --git a/src/main/java/com/example/demo/dao/UserDAO.java b/src/main/java/com/example/demo/dao/UserDAO.java new file mode 100644 index 0000000..d298f5b --- /dev/null +++ b/src/main/java/com/example/demo/dao/UserDAO.java @@ -0,0 +1,8 @@ +package com.example.demo.dao; + +import java.util.List; +import com.example.demo.dto.UserDTO; + +public interface UserDAO { + List<UserDTO> selectUsers(UserDTO param) throws Exception; +} diff --git a/src/main/java/com/example/demo/dto/UserDTO.java b/src/main/java/com/example/demo/dto/UserDTO.java new file mode 100644 index 0000000..4fc23cf --- /dev/null +++ b/src/main/java/com/example/demo/dto/UserDTO.java @@ -0,0 +1,14 @@ +package com.example.demo.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +@AllArgsConstructor // 자동으로 모든 매개변수를 받는 생성자를 생성 +@Getter // Getter 생성 +@Setter // Setter 생성 +public class UserDTO { + private int seq; + private String name; + private String country; +} diff --git a/src/main/resources/mappers/UserMapper.xml b/src/main/resources/mappers/UserMapper.xml new file mode 100644 index 0000000..a4ca9bd --- /dev/null +++ b/src/main/resources/mappers/UserMapper.xml @@ -0,0 +1,18 @@ + +<?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.example.demo.dao.UserDAO"><!--namespace를 통해 UserDAO와 연결합니다. --> + + <select id="selectUsers" parameterType="com.example.demo.dto.UserDTO" +resultType="com.example.demo.dto.UserDTO"> + SELECT `seq`, `name`, `country` FROM lab03 + <if test='country != null and country != ""'> + WHERE country = #{country} + </if> + </select> + +</mapper> + + -- GitLab