๋ฐ์ํ ์ ์ฒด ๊ธ71 [๊ฐ๋ฐ์ ๋ฉด์ ๋๋น ์ง๋ฌธ์ ๋ฆฌ] ๋ง์ด๋ฐํฐ์ค mybatis ๋?? mybatis๋? sql๋ฌธ์ xmlํ์ผ์ ์์ฑํ๋ฉด ๋งคํํด์ฃผ๋ sql mapper. ๋น์ทํ ๊ธฐ๋ฅ์ผ๋ก๋ procedure๊ฐ ์๋ค. ์๋ฐ์์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ์ ํ๊ธฐ์ํด JDBC๋ฅผ ์ ๊ณต, JDBC๋ ๋คํฅํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ์ ์ํด API์ ๊ณต --> Mybatis๋ JDBC๋ฅผ ๋ณด๋ค ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ๋ฐ๋จ. mybatis ์ procedure์ ์ฐจ์ด? mybatis๋ xmlํ์ผ์ ์์ฑ๋ sql๋ฌธ์ ์์ ํ๊ณ ์๋ฒ์ ์ฌ๋ ค์ผ ํ์ง๋ง procedure๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ procedure๋ฅผ ์์ ํ๋ฉด ๋. ์ฆ, procedure๋ ์๋ฒ์ ์ฌ๋ฆฌ๋ ์์ ์ด ํ์์๋ค. mybatis ํน์ง? sql๋ฌธ์ด ์ฝ๋๋ก๋ถํฐ ์์ ํ ๋ถ๋ฆฌ๋จ - ๊ธฐ์กด์๋ DAOํ์ผ์ ๋ชจ๋ SQL๋ฌธ์ ์์ฑํ์๋๋ฐ, Mybatis์์๋.. l ๐ค ์ฝ๋ l 2020. 5. 26. [์คํ๋ง ๋ฉด์ ๋๋น ๊ธฐ์ด์ง๋ฌธ] ์คํ๋ง์ด๋?? ๊ฐ๋จ์ ๋ฆฌ!! ์คํ๋ง์ด๋? - ์๋ฐ๋ฅผ ํ์ฉํด์ ์น ๋ฐ ์ฑ๊ฐ๋ฐ์ ์ํ ์คํ์์ค ๊ฒฝ๋ ์ปจํ ์ด๋ ์ปจํ ์ด๋๋? - jsp์ ์๋ธ๋ฆฟ์ ์คํ์์ผ์ฃผ๋ ์ํํธ์จ์ด ํ๊ฒฝ ์๋ธ๋ฆฟ์ด๋? - ์ปจํ ์ด๋๊ฐ ์ดํดํ ์ ์๋๋ก ์์ ์๋ฐ์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์๋ฐ์์ html์ ์๋ฏธ jsp๋? - html ๊ธฐ๋ฐํ์ ์๋ฐ์ฝ๋๋ฅผ ๋ธ๋กํํ์ฌ ์ฝ์ , html์์ ์๋ฐ ์ ์คํ๋ง์ ์ฐ๋๊ฐ?? - ์คํ๋ง์ ํน์ง๋๋ฌธ (ํน์ง 3๊ฐ์ง -> DI, IOC, AOP) *** DI (Dependency Injection) ์์กด์ฑ ์ฃผ์ - ์๋น์ค๋ค๊ฐ์ ์์กด์ฑ์ด ์กด์ฌํ๋ฉด ํ๋ ์์ํฌ๊ฐ ์ฐ๊ฒฐํด์ค ex) autowired *** IOC (Inversion Of Control) ์ ์ด ์ญ์ - ์ปจํธ๋กค์ ์ ์ด๊ถ์ ํ๋ ์์ํฌ๊ฐ ์์ , ํ์์๋ฐ๋ผ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ํธ์ถํด ์ฌ์ฉํ๋๊ฒ์ .. l ๐ค ์ฝ๋ l 2020. 5. 26. (์์ ๊ฐ๋จ!!) ๊น(git) ํ์ผ์ถ๊ฐ ํ๋๋ฒ ์ฐ๋๋ ๊น์ ํ์ผ์ ์ถ๊ฐ ํ๊ณ ์ถ์ ๋๋์, ๊น์ด ์ฐ๋๋์ด ์๋ ํด๋์ ์ถ๊ฐํ์ผ์ ๋ฃ์ด์ค๋๋ค. ๊น์ด ์ฐ๋๋์ด ์๋ ํด๋์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ํด๋ฆญ, git bash์ ๋ค์ด๊ฐ๋๋ค. ์จ์ผ ํ๋ ๋ช ๋ น์ด๋ ๋ฑ ์ธ๊ฐ!! 1. git add . (ํ์ผ ์คํ ์ด์ง์ ๋ํ๊ธฐ ( .์ add ํ์นธ ๋๊ณ .์ด์์!!)) 2. git status (ํ์ผ ์คํ ์ด์ง์ ์ ์ฌ๋ผ๊ฐ๋ ํ์ธ) (2-1. git commit -m "ํ์ผ ์ ๋ฐ์ดํธ ๋ฉ์ธ์ง" (-->์ปค๋ฐ ๋ฉ์์ง ์ฌ๋ฆฌ๋๊ฑฐ๋ ์๋ต๊ฐ๋ฅ)) 3. git push origin master 100% done ๋์ค๋ฉด ๋~~~~~~~ ๊นํ๋ธ ๋ณด๋ฌ ๋๋ฌ์ค์ธ์ ๐ (๋งํํ์) https://github.com/Joowon0220 Joowon0220 - Overview ๐ ๐๐ค๐ฅ๐ ๐ข๐ฎ ๐๐ค๐๐'๐จ.. l ๐ค ์ฝ๋ l 2020. 5. 22. ๊น์ ์์ ํ์ผ ์ ๋ฐ์ดํธ ํ๋๋ฒ (์ด๊ฐ๋จ) ๊น์ ์์ ํ ์ฝ๋ ํ์ผ์ ์ ๋ฐ์ดํธ ํ๊ณ ์ถ์ ๋๋์, ๊น์ด ์ฐ๋๋์ด ์๋ ํด๋์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ํด๋ฆญ, git bash์ ๋ค์ด๊ฐ๋๋ค. ์จ์ผ ํ๋ ๋ช ๋ น์ด๋ ๋ฑ ์ธ๊ฐ!! 1. git add . (ํ์ผ ์คํ ์ด์ง์ ๋ํ๊ธฐ ( .์ add ํ์นธ ๋๊ณ .์ด์์!!)) 2. git status (ํ์ผ ์คํ ์ด์ง์ ์ ์ฌ๋ผ๊ฐ๋ ํ์ธ) (2-1. git commit -m "ํ์ผ ์ ๋ฐ์ดํธ ๋ฉ์ธ์ง" (-->์ปค๋ฐ ๋ฉ์์ง ์ฌ๋ฆฌ๋๊ฑฐ๋ ์๋ต๊ฐ๋ฅ)) 3. git push origin master 100% done ๋์ค๋ฉด ๋~~~~~~~ ๊นํ๋ธ ๋ณด๋ฌ ๋๋ฌ์ค์ธ์ ๐ (๋งํํ์) https://github.com/Joowon0220 Joowon0220 - Overview ๐ ๐๐ค๐ฅ๐ ๐ข๐ฎ ๐๐ค๐๐'๐จ ๐ฌ๐๐ง๐ข๐ฉ๐ ๐ฉ๐ค๐ช๐๐๐๐จ ๐ฎ๐ค๐ช :) .. l ๐ค ์ฝ๋ l 2020. 5. 22. ์ดํด๋ฆฝ์ค mssql ์ฐ๋ํ๊ธฐ 1. jdbc ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ด๋ฐ์์ค๋๋ค. https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 Microsoft JDBC Driver for SQL Server - SQL Server Microsoft provides a JDBC driver for use with SQL Server and Azure SQL Database, enabling connectivity from any Java application, server, or applet. docs.microsoft.com ์์ ๋งํฌ๋ก ๋ค์ด๊ฐ์ ์ ์ ๋นจ๊ฐ๋ฐ์ค ๋ถ๋ถ์ ๋๋ฌ์ฃผ๋ฉด ๋ฉ๋๋น. 2. ์์ถ ํด์ ํ์๊ณ ์ดํด.. l ๐ค ์ฝ๋ l 2020. 5. 21. ์ดํด๋ฆฝ์ค์์ ms-sql ์ ์ํ๊ธฐ 1. Data Source Explorer์์ New SQL Server ๋ฅผ ๋๋ฌ์ค๋๋ค. Data Source Explorer๊ฐ ์ด๋ ค์์ง ์์ผ์ ๋ถ๋ค์ window > Show view > Other ์์ Data Management ์๋ Data Source Explorer ๋ค์ด๊ฐ์ ๋ ๋๊ณ ์, ์๋์๋ฉด ๋ฐ๋ก other์์ ๊ฒ์ํ๊ณ ๋ค์ด๊ฐ์ ๋ ๋ฉ๋๋น~ 2. ์ค์ ๊ฐ๋ค์ ์๋ง๊ฒ ๋ฃ์ด์ค๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ, ํธ์คํธ๋ localhost ํด์ฃผ์๊ณ ํฌํธ๋๋ฒ๋ 1433(๊ธฐ๋ณธ๋๋ฒ์ ๋๋น), ์ ์ ๋ค์, ํจ์ค์๋ ๋ฃ๊ณ Test Connection์ ํด์ฃผ์ธ์! ping succeeded!๊ฐ ์๋์ฒ๋ผ ๋จ๋ฉด ์ฑ๊ณต์ด์์! Apply and Closeํ๊ณ ๋ค์๋จ๊ณ๋ก ๋์ด๊ฐ์ฃผ์ธ์~ 3. ์์ ํ์์ผ๋ก ๋ type ๋ถ๋ถ์ ์ค์ ํด์ฃผ์๋ฉด.. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ ๋ ์จapi ์ ํด์ง ์๊ฐ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ฐ์ดํธ ํ๊ธฐ (์๋ฐํ์ด๋จธ Java Timer ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ) ์๋ฐ ํ์ด๋จธ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์ ํด์ง ์๊ฐ๊ฐ๊ฒฉ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋ ์ ์๊ฒ ๋ง๋ค์์ด์!! 1000*5 5์ด 1000*60 1๋ถ 1000*60*60 1์๊ฐ 1000*60*60*24 1์ผ //ํ๋ก์ ํธ ํต์ผ๋ก ์ฌ๋ ค๋ ๊นํ๋ธ ์ฃผ์์ ๋๋ค. ๋ค๋ฅธ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ํ์ธ ํด ์ฃผ์ธ์. github.com/Joowon0220/weather.git package com.weather03.mvc; import java.io.IOException; import java.util.Calendar; import java.util.List; import java.util.Timer; import java.util.TimerTask; import org.json.simple.parser.ParseExcept.. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ ๋ ์จapi JSON์ผ๋ก ๋ฐ์์์ ํ์ฑํ๊ธฐ (์๋ถ๋ฌ์์ง๋!! ์๋ฌํด๊ฒฐ) ์ธ์ฆ๋ฐ์ ํค๋ฅผ ๋ฃ๊ณ url์ ๋ง๋ค์ด์ ์ ๋ณด๋ฅผ json์ผ๋ก ๋ฐ์์ค๊ณ ํ์ฑํฉ๋๋ค. ํ์ฑํ ๋ jar ํ์ผ์ ํ๋ ์ถ๊ฐํด์ผ ํด์!!! ์์ถํด๋๋ก ์ฌ๋ ค๋๋ฆฝ๋๋น ๋ค์ด๋ฐ์ผ์๊ณ ์์ถ ํด์ ํด์ฃผ์ธ์ฉ ํ๋ก์ ํธ ์ฐํด๋ฆญ > bulid path > Configuration build path ๋ค์ด๊ฐ์ฃผ์ธ์. Libraries > modulepath> add external jars ํด์ jar ํ์ผ์ ์ถ๊ฐํด์ค๋๋น. ------> url์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ชป๋ฐ์์ค๋!!! ์ ์๋ถ๋ฌ์ง๋!!!! ๊ทธ๋ด๋๋?? ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ ๋๋ ์ฝ๋๋ก ์ง url์ ์ฝ์์ ์ฐ์ด๋ณด์๊ณ , ๊ธฐ์์ฒญ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ํ์ด์ง์ url๊ณผ ๋.๊ฐ.๋ ๋น๊ตํด๋ด ๋๋ค. ๋,์๋ฌธ์, ๋ฌผ์ํ, ์์ ์ด๋ค๊ฑฐ ํ๋ ๋น ์ง์์ด ๋.๊ฐ.๋ค.๋ฉด ๋ค~ ๋ถ๋ฌ์์ ธ์ฉ!! ํ๋ด์ธ์!! ์๋ ํ.. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ api ๋ฐ์์ค๋ ๋ฒ (์ธ์ฆํค ๋ฐ๊ธ๋ฐ๊ธฐ) 1. ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์ ์ ์ํฉ๋๋ค. https://data.go.kr/index.do 2. ํ์๊ฐ์ ์ ํ๊ณ ๋ก๊ทธ์ธํฉ๋๋ค. ์ ๋ sns๋ก๊ทธ์ธ์ ์ด์ฉํ๋๋ฐ wifiํ๊ฒฝ์์๋ ์ ์๋ ์ ์๋ค๋๋ ์ง์ง ๊ทธ๋ฌ๋๋ผ๊ณ ์? ๊ทผ๋ฐ ๋นํฉํ์ง ๋ง์๊ณ ๊ณต๊ณต๋ฐ์ดํฐํฌํ ํ์ผ๋ก ๊ฐ์ ๋ค์์ ๋ค์ ๋ก๊ทธ์ธ๋ฒํผ ๋๋ฅด์๋ฉด ๋ก๊ทธ์ธ์ด ์ ๋ ๊ฒ์ ์์์์ด์ฉ~~~ 3. ์คํ api ํ์ฉ์ ์ฒญ์ ํฉ๋๋ค. ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ ํ ์๋์ชฝ์ผ๋ก ์คํฌ๋กค์ ๋ด๋ฆฌ๋ฉด ์ธ๊ธฐ๋ฐ์ดํฐ์ ๋กํ๋ ๋๋ค์๋ณด ์กฐํ์๋น์ค๊ฐ ์๋๋ฐ์ฉ ๊ท์ฐฎ์ผ์ ๋ถ๋ค์ ์๋ ๋งํฌ๋ฅผ ํ๊ณ ๋ค์ด๊ฐ์ฃผ์ธ์~ https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15057682 ํ์ฉ์ ์ฒญ ๋๋ฌ์ฃผ์ธ์~ 5. ๋ง์ดํ์ด์ง๋ก ๊ฐ์ ๋๋ค์๋ณด ์กฐํ ์๋น์ค์.. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ ๋ ์จ api ๋ฐ์์์ db์ ์ ์ฅํ๊ธฐ (sql) ms-sql๋ก ์ง ์ฟผ๋ฆฌ์ ๋๋ค. //ํ๋ก์ ํธ ํต์ผ๋ก ์ฌ๋ ค๋ ๊นํ๋ธ ์ฃผ์์ ๋๋ค. ๋ค๋ฅธ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ํ์ธ ํด ์ฃผ์ธ์. github.com/Joowon0220/weather.git CREATE TABLE WEATHER_API( INSERT_TIME DATETIME NOT NULL PRIMARY KEY, BASE_DATE CHAR(8) NOT NULL, BASE_TIME CHAR(4) NOT NULL, T3H CHAR(8), REH CHAR(8) ); CREATE TABLE VILLAGE_WEATHER( INSERT_TIME DATETIME NOT NULL PRIMARY KEY, BASE_DATE CHAR(8) NOT NULL, BASE_TIME CHAR(4) NOT NULL, T3H CHAR(8), RE.. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ ๋ ์จ api ๋ฐ์์์ db์ ์ ์ฅํ๊ธฐ (DTO) ์ ๋ dbํ ์ด๋ธ์ seq๋ก row๋๋ฒ ๋ฐ๊ณ inserttime์๋ ์ธ์ํธ ํ๋ ์๊ฐ์ date๋ก ๋ฐ์์ด์. //ํ๋ก์ ํธ ํต์ผ๋ก ์ฌ๋ ค๋ ๊นํ๋ธ ์ฃผ์์ ๋๋ค. ๋ค๋ฅธ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ํ์ธ ํด ์ฃผ์ธ์. github.com/Joowon0220/weather.git package com.weather03.mvc; import java.sql.Date; public class VillageWeather { int seq; Date insertime; String baseDate; String baseTime; String t3h; String reh; public VillageWeather() { } public VillageWeather(int seq, Date insertime, String baseDate, .. l ๐ค ์ฝ๋ l 2020. 5. 21. ๊ธฐ์์ฒญ ๋ ์จ api ๋ฐ์์์ db์ ์ ์ฅํ๊ธฐ (DAO)2 (1์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ ์ฅํ๊ธฐ) ๊ธฐ์์ฒญ api๋ 3์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๋ ์จ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์์ด์. ๊ทธ๊ฑฐ๋ฅผ 1์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ์ง๋ณธ ์ฝ๋์ ๋๋ค. //ํ๋ก์ ํธ ํต์ผ๋ก ์ฌ๋ ค๋ ๊นํ๋ธ ์ฃผ์์ ๋๋ค. ๋ค๋ฅธ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ํ์ธ ํด ์ฃผ์ธ์. github.com/Joowon0220/weather.git package com.weather03.mvc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import ja.. l ๐ค ์ฝ๋ l 2020. 5. 21. ์ด์ 1 2 3 4 5 6 ๋ค์ ๐ฒ ์ถ์ฒ ๊ธ ๋ฐ์ํ