728x90
반응형

SpringFramework 63

새로 생성한 게시물 제목에 new 마크 붙히기

우선 게시물이 등록된 시간을 판단하기 위해서는 reg_date라는 컬럼을 읽어야합니다. 사용자가 게시물 목록요청을 했을 때 DB로부터 읽어들인 목록 안에 들어있는 reg_date 컬럼을 읽습니다. 읽힌 reg_date 컬럼의 값과 현재시간을 읽은 후 둘의 차이를봐서 만약 그게 하루 미만이면 new마크를 붙히는 증표를남기고 3일 이내의 게시물에 처리한다면 3일 미만인지 시간차를 봐서 지정한 기간 내의 게시글이라면 new마크를 붙힐 수 있는 논리적 증거를 vo에 처리하고 화면쪽에서 그 증표를 보고 html로 new를 만들 지 안만들지를 구현합니다. BoardVO에 newMark 필드 추가 public class BoardVO { private Integer boardNo; private String titl..

[미완성] 페이징 쪽나누기 (rowNum 쿼리 해설 완성)

@GetMapping("/list") public String list(Model m, HttpServletRequest request, @ModelAttribute PageVO b) throws Exception{ /* 페이징 => 쪽나누기 코드 추가*/ int page = 1; //현재 쪽수 번호 int limit = 10; //한페이지에 보여지는 목록개수 if(request.getParameter("page")!=null) { //get으로 전달된 쪽 번호가 있는 경우 page = Integer.parseInt(request.getParameter("page"));//전달 받은 페이지번호(쪽번호)를 정수 숫자로 바꿔서 저장시킴. } //예를들어 현재페이지가 3페이지면 임의의 번호값 컬럼에서 31번부..

[DELETE] 요청 POST방식/ (GET방식 불가)

html의 하이퍼링크나 자바스크립트의 Location같은 겟방식의 요청으로는 데이터를 조작명령 요청을 취해서는 안됩니다. (delete, update) GET방식은 주소창에 파라미터값이 노출되므로 주소의 파라미터 값을 조작해서 임의로 글을 수정,삭제 되는 경우가 발생할수 있기 때문입니다. 삭제 만약 삭제요청이 이렇게 GET방식으로 들어가고 @GetMapping("/delete") public String delete(int boardNo,RedirectAttributes ra) { System.out.println("URL : /board/delete GETT "); ra.addFlashAttribute("boardNo",boardNo); return "redirect:/board/delete_ok"; ..

[ @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..

미완성 [ property / 커맨드객체 / ${EL} / #{ } ] 문법별 set/get 메서드명 필드명 참조 기준 확인]

미완성 포스팅 입니다. property name속성명과 setter( ) (basci/ex02) property name속성명 : url 필드명 : url 메서드명 : setUrl2() 메서드명 변경 실험 결과 : 경고: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'db1' defined in class path resource [db-config.xml]: Error setting property values; nested exception is ..

SpringFramework 2020.09.04

[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..

[MyBatis] , [spring-jdbc ](Jdbc-template) / pom.xml 등록

org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 마이바티스의 핵심 객체는 SqlSessionFactiory라는 핵심기능을 가진 클래스를 스프링 컨테이너에 객채화 빈으로 등록해야합니다. MyBatis 사용시 기본적으로 spring-jdbc라이브러리가 있어야 합니다. 이말은 즉, spring-jdbc 라이브러리 디펜던시를 하나 더 추가해야합니다. spring-jdbc라이브러리는 jdbcTemplate을 제공해 주지만 만약 을 안쓰고 MyBatis 를 쓰겠다고 하더라도 MyBatis 를 쓰기위해서는 spring-jdbc디펜던시가 꼭 필요합니다. jdbcTemplate를 쓰지 않더라도 spring-jdbc 라이브러리가 있어야 Mybatis가 작동을 하게 ..

SpringFramework/XML 2020.09.03

[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..