728x90
반응형

SpringFramework/BASIC 38

[ @ParhVariable ] 어노테이션을 통한 uri path로 파라미터를 처리하는 방법

@PathVariable 파라미터를 uri path로 처리하는 방법 기본적으로 주소창에 파라미터를 심어서 넘길때 주로 사용하는 QueryString에 대해서 아시나요 즉, /content?boardNo=${b.boardNo} 이와 같이 ?파라미터명=값 으로 처리하여서 파라미터값을 넘기게되면 @GetMapping("/content") public void content(int boardNo){ System.out.println("?boardNo="+boardNo) } 위와같이 메서드에서 매개변수를 부여하여 받을수 있었습니다. 하지만 새로운방법이 있습니다. 그것은 바로 uri매핑주소에 파라미터로 넘길 값을 바로 지정하여 넘기는방법입니다. 즉, /board/content/${b.boardNo} 이와같이 /co..

[JunitTest 1] 단일 테스트 / 오라클 DB 연결 Test / 자동 리소스 닫기

JunitTest란 test패키지에서 test를 사용할 때 간단하게 사용합니다 Junit Test는 메인메서드를 만들지 않고 바로 테스트를 해볼수 있습니다. 오라클 DB 연결 Test 우선 void메서드를 만듭니다. public class DbConnectTest { private static final String DRIVER = "oracle.jdbc.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; private static final String UID = "week"; private static final String PWD = "week"; public void connectTest() ..

[MyBatis] resultType / 객체 별칭 관리기능 mapperLocations 주입

resultType 속성 resultType이란 MyBatis에서 쿼리문 수행후 메서드 반환타입이 String이나 객체를 반환할수 있도록 지정하는 속성입니다. 어떤타입으로 반환할것이다. 라고 반환 유형을 정해주는것 입니다. 이 속성은 문에서 주로 쓰입니다. 쿼리문 에서는 주로 결과값이 한 행이 나오도록 조건절을 설정하여 한행의 결과를 반환 받을것 이라면 객체 결과값이 모든 행을 반환하거나 여러행을 반환게 된다면 List, 하나의 컬럼만을 반환할때는 String으로 반환을 합니다 JDBC에서는 쿼리문의 수행결과를 반환하는데 있어서 결과 값이 객체에 반환될때 객체에 저장을 해줘야했습니다. class BoardMapper implements RowMapper{ @Override public BoardVO ma..

[MyBatis] resultMap / #{ } 문법 바인딩변수 처리

resultMap 과 #{ } 문법 [resultMap] MyBatis에서는 SqlSessionTemplate를 사용하거나 MapperInterface를 사용할때 모두 resultMap이라는 기능을 사용할 수 있습니다. 먼저, 우리가 목록을 조회하거나 하나의 특정 행의 정보를 얻어DB로부터 얻어오고자 할 때, DB에 접근해서 해당 컬럼의 값을 가져와 VO객체의 getter()메서드를 통해 객체에 저장해주는 작업을 해주며, 이때에 타입까지 맞게 변환시켜주는 작업을 해야합니다 SqlSessionTemplate에서는 이 작업을 RowMapper라는 인터페이스로 대신 처리 해줬습니다. class BoardMapper implements RowMapper{ @Override public BoardVO mapRow..

[Mybatis]SqlSessionTemplate/MapperInterface(3.0이전 / 3.0이후) 구현방식 차이

SqlSessionTemplate / MapperInterface MyBatis에 대한 간단한 설명 : https://u-it.tistory.com/36 Mapper xml파일 SqlSessionTemplate, MapperInterface 공통 Mapper.xml파일을 생성합니다. Mybatis xml파일이라는것을 doc타입 선언을 해줘야합니다. 매퍼 xml파일을 시작해주는 태그는 태그 입니다. 태그 안에서 SQL 쿼리문을 작성과 객체별칭을 등록하는것 등을 작성합니다. SqlSessioTemplate SqlSessionTemplate는 쿼리문을 Mapper xml에서 수행하며 쿼리문을 수행해주는 객체를 DAO클래스에 주입받고 DAO클래스에 오버라이딩 구현된 메서드를 통해 반환타입과 매개변수(key)를 ..

[Mybatis]란? / SqlSessionTemplate, MapperInterface 개념/빈 등록 설정

[MyBatis]란 무엇인가 에 대해서 또 SqlSessionTemplate/MapperInterface 두가지 방식에 따른 전체적인 구조 차이와 Mapper.xml 속성 차이에 대해 정리합니다. [MyBatis]란? 앞서 사용해 보았던 Jdbc-Template도 상당히 좋은 방식 중 하나지만 이것보다 좀더 편하게 데이터베이스 엑세스를 할 수있는 추가 프레임워크가 있습니다. MyBatis라는건데요, 이것은 꼭 스프링이 아니더라도 스프링 뿐만아니라 다른 언어와도 결합할 수 있는 프레임워크이기 때문에 배워둔다면 스프링 프레임워크가 아닌 다른언어로 웹 어 플리케이션을 제작할때도 활용할수 있는 추가 프레임워크입니다. 스프링에서 제공하는것은 아니고 iBatis라는곳에서 제공을 했지만 구글이 인수를하면서 MyBat..

[Jdbc-Template] select문 / query() , queryForObject() / RowMapper<Type> / 익명클래스, 람다식 , 내부클래스 활용

Jdbc-Template를 활용한 select처리 query() Multi row 쿼리문 수행결과가 한개 이상 List로 반환해줍니다 queryForObject() Single row 쿼리문 수행결과가 한개 객체 그대로 반환해줍니다. Jdbc-Template의 select는 query() 와 queryForObject() 라는 메서드를 사용합니다. 기존 JDBC의 executeQuery()나 executeUpdate()메소드와 이름에서 공통점을 찾을수 있습니다. query(sql, new Object[] {}, new RowMapper() { 익명클래스 }); query()메서드의 매개값으로는 'sql' , 'new Object[] {}' , 'newRowMapper()'을 인자값으로 받으며 제네릭타입에..

Jdbc-Template 과 mybatis의 SqlSessionTemplate의 각각의 개념과 차이점

Jdbc-Template 과 mybatis 의 SqlSessionTemplate Jdbc-Template란? 전통방식으로 구현하는 JDBC로직을 단 두,세줄로 처리해버릴수 있는 Spring API입니다. update문 같은 경우에는 쿼리문을 포함하여 단 두줄로도 구현하여 처리할수도 있습니다. 자원을 내부적으로 생성하고 해제함으로써 전통방식의 JDBC의 코드구현을 단순화시킵니다. Connection, PrepareStatement, ResultSet - 각각 연결, 수행, 결과를 수행해주는 객체들 을 사용 한 후 이것을 닫아줘야 하는데 Jdbc-Template에서는 수행객체 사용을 마친 후 닫아주는 처리 또한 내부적으로 해줍니다. 우리가 Jdbc-Template를 사용하기위해 컨테이너에 jdbcTempla..

OracleDriver [Junit] 주입한 OracleDriver라이브러리가 올바로 작동하는지 스프링의 단위테스트인 Junit를 통해 Test

[try-catch-finally] public class OraDBConTest { private static final String Driver = "oracle.jdbc.OracleDriver"; private static final String URL = "jdbc:oracle:thin:HostIp:포트번호:DB명"; private static final String USER="사용자명"; private static final String PW="비밀번호"; @Test public void testCon() throws Exception{ try { Class.forName(driver); con = DriverManager.getConnection(URL,USER,PW); if(conㅜ != n..

컨트롤러의 GET/POST Mapping 메서드에 등록된 uri가 같다면 Form action uri생략 가능 (시작과 끝이 같음) , 핸들러매핑으로 인한 동일한 uri간의 파라미터의 상태유지와 파라미터값 공유

우리가 Get매핑방식과 Post매핑방식의 uri가 같은 uri로 지정되있을때 get방식은 해당 뷰페이지를 출력시켜주며 Post방식은 출력된 뷰페이지로부터 전송을받습니다 뷰페이지의 form에서 action을 생략해도 알아서 찾아갑니다 뷰페이지의 action url이 컨트롤러의 GET uri와 POST uri가 똑같으면 안써도됩니다. action uri를 적지 않아도 form으로 요청을 발생시켜주는 페이지의 uri와 form으로부터 요청이 들어오는 uri가 같을때 뷰페이지로(화면)부터 요청이 들어오는 컨트롤러의 메서드 전송방식를 POST로 지정을 해놨다면 자동으로 POST방식의 해당 메서드로 잡혀 전송이됩니다. uri가 동일하면서, GET과 POST로 나눠져 있다면 HandlerMapping의 uri정보수집..

스프링의 redirect 와 RedirectAttribute

redirect: 뷰리졸버에 보내는 방식은 기본적으로는 forwarding 처리가 되있습니다. 가끔 때로는 redirect처리를 해야할 때가 있습니다. 예를들어 글쓰기 요청이 끝난 후에 바로 글목록 페이지가 떠야합니다. 바로 글목록페이지로 연결 해버리면 글목록을 띄우기위해서는 다시한번 DB에 접근해야합니다. select문을 돌린 후 insert된 게시물목록을 포함한 새롭게 목록이 갱신된 게시물목록을 가져와야합닌다. 그렇다면 요청을 두번보내야 한다는것입니다. 첫번째 요청은 insert 요청으로 게시물을 추가하는 처리를 해야하는 메서드 이후에 두번째 요청은 select 요청으로 insert요청으로 추가한 게시글을 포함한 새로운 목록을 갱신하여 가져오도록 처리하는 메서드로 요청을 한번 더 보내주는 것 입니다...

Controller에서 view로 데이터 전송요청 Model / @ModelAttribute/ ModelAndView / redirectAttribute

Controller에서 view로 데이터 전송요청 1. Model 2. @ModelAttribute 3. ModelAndView 4. redirectAttribute - u-it.tistory.com/2 Model 1.Model타입을 메서드의 파라미터로 주입하게 되면 'view'로 전달하는 데이터를 담아서 보낼 수 있습니다. 2.request.setAttribute()와 유사한 역할을 합니다. 3. Http header에 객체를 담아 객체를 통으로 전송시킵니다 ex) 메서드(Model model) ex) addAttribute() @ModelAttribute 커맨드객체를 통해 파라미터를 객체화하여 통으로 받을때 주로 사용합니다. 이때 객체의 이름을 받을때와 보낼때 각각 다르게 구분지어야할 때 사용합니다...