From 82a5898aa41bf6ca3f170f5fa37d19c915f60d4b Mon Sep 17 00:00:00 2001 From: chaewon <lvw3774@ajou.ac.kr> Date: Wed, 2 Apr 2025 19:23:44 +0900 Subject: [PATCH] 0402 --- .../com/example/demo/DemoApplication.java | 37 +++++++++++++++++-- .../demo/controller/UserController.java | 27 ++++++++++++++ .../java/com/example/demo/dao/UserDAO.java | 9 +++++ .../java/com/example/demo/dto/UserDTO.java | 14 +++++++ src/main/resources/mappers/UserMapper.xml | 15 ++++++++ 5 files changed, 98 insertions(+), 4 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 82e42ec..2dfef32 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -1,16 +1,45 @@ package com.example.demo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; 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; @RestController @SpringBootApplication -public class DemoApplication { +// @EntityScan(basePackageClasses = {Item.class}) +public class DemoApplication{// implements CommandLineRunner{ + + // @Autowired + // private ApplicationContext appContext; + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } - public static void main(String[] args) { - SpringApplication.run(DemoApplication.class, args); - } + @Bean + public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + + Resource[] res = new PathMatchingResourcePatternResolver().getResources("mappers/UserMapper.xml"); + sessionFactory.setMapperLocations(res); + + return sessionFactory.getObject(); + } + } + 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..8d3c0b9 --- /dev/null +++ b/src/main/java/com/example/demo/controller/UserController.java @@ -0,0 +1,27 @@ +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..dd01d34 --- /dev/null +++ b/src/main/java/com/example/demo/dao/UserDAO.java @@ -0,0 +1,9 @@ +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..28faba5 --- /dev/null +++ b/src/main/resources/mappers/UserMapper.xml @@ -0,0 +1,15 @@ +<?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