https://developer.android.com/studio?hl=ko
xml도 하나의 태그는 하나의 객체 취급
ref="dataSource" <- 이런게 객체 안에 객체 들어간거다.
내부에 데이터가 들어 있어서 ..?
Map으로 보내주면 pom.xml에 있는 jackson-databind가 알아서 json으로 해준다고 한다.
Map 방식이 편하긴 하지만 반드시 Map을 return할 필요는 없다.
RestFullController.java
@PostMapping("/idCheck")
public Map<String, Object> idCheck(@RequestParam("id") String id) {
//System.out.println(id);
int result = restService.idCheck(id);
System.out.println("가입된 아이디 수 : " + result);
// json 타입 -> { key:value, key2:value, key3: value }
// { key:value, {} }
// result : { count : 1/0 }
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("count", result);
return resultMap;
}
postman에 해보면 결과는 이런 모습으로 나온다.
{"count":1}
사용할 때는 data.count
로 하면 된다
Java - JSON 라이브러리 사용 방법 (JSONObject, JSONArray)
pom.xml
JSON object
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240205</version>
</dependency>
//JsonObject 이용 시
@PostMapping("/idCheck")
public String idCheck(@RequestParam("id") String id) {
int result = restService.idCheck(id);
System.out.println("가입된 아이디 수 : " + result);
JSONObject json = new JSONObject();
json.put("count", result);
return json.toString();
}
편한 걸로 쓰면 된다.
이게 제일 편하긴 하다.
제일 많이 쓰는 게 jackson-databind나 simple json
json은 제조사별로 다르다. 구글에서 만드는 json은 gson..?
RestFullController.java
// 게시판을 json으로 출력해주는 api
@GetMapping("/jsonBoard")
public String jsonBoard(@RequestParam("pageNo") String pageNo) {
// 전자정부 페이징 (BoardController에 있던 거)
int currentPageNo = 1;
if(util.str2Int(pageNo) > 0) {
currentPageNo = Integer.parseInt(pageNo);
}
int totalRecordCount = boardService.totalRecordCount();
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(currentPageNo);//현재 페이지 번호
paginationInfo.setRecordCountPerPage(10); //한 페이지에 게시되는 게시물 건수
paginationInfo.setPageSize(10); // 페이징 리스트의 사이즈
paginationInfo.setTotalRecordCount(totalRecordCount); //전체 게시물 건수
List<BoardDTO> list = boardService.boardList(paginationInfo.getFirstRecordIndex());
//List<BoardDTO> list = boardService.boardList(pageNo);
//JSON
JSONObject jsonList = new JSONObject();
jsonList.put("list", list);
return jsonList.toString();
}
이 API 또 쓸거다
아니면 크롬 익스텐션 json viewer
많은 기능이 들어갈 예정이다
mybatis if
board.jsp에서 페이징 위에 search form 만들어줬다.
<div class="m-2 bg-warning">
<div>
<form action="./board">
<div class="input-group">
<input type="text" name="search" class="form-control">
<input type="hidden" name="pageNo" value="${pageNo }" class="form-control">
<button type="submit" class="btn btn-light">search</button>
</div>
</form>
</div>
</div>
<input type="hidden" name="pageNo" value="${pageNo }" class="form-control">
얘는 안가도 된다. 함정 ㅎㅎ..
form action이 ./board인데
board controller에서 페이지 넣어서 들어가는거나 검색해서 들어가는거나 같은 메서드로 가도록한다.
search 파라미터 받는 메서드로 바꿔준다.
동적 쿼리
<select id="totalRecordCount" resultType="Integer" parameterType="String">
SELECT COUNT(*) FROM board WHERE board_del='1'
<if test="search != null">
AND board_title LIKE CONCAT('%', #{search}, '%')
OR board_content LIKE CONCAT('%', #{search}, '%')
</if>
</select>
where절이 없는 경우
<select id="totalRecordCount" resultType="Integer" parameterType="String">
SELECT COUNT(*) FROM board
<where>
<if test="search != null">
AND board_title LIKE CONCAT('%', #{search}, '%')
OR board_content LIKE CONCAT('%', #{search}, '%')
</if>
</where>
</select>
board에 mname이 없어서 mname은 안했다
동적 쿼리는 많이 알아두면 좋다.
SearchDTO 생성함
int pageNo와 String search를 인스턴스 변수로 둠.
alias도 해준다.
우리는 DTO많이 생성하는 스타일로 하고 있다. BoardDTO에 모든 걸 넣어서 운영하는 스타일도 있다고 한다.
ㅠㅠ
썼던거 날아갔다...
servlet-context.xml
할일
1. menu빼기
2. top빼기(선택, 권장)
- footer빼기(선택, 권장)
- 게시글 관리에 모든 글 뜨게. -> 수정, 삭제, 차단
- 회원관리에 모든 회원 뜨게. -> 수정, 비밀번호 초기화
- 공지사항에 공지 다 뜨게. -> 수정, 삭제, 차단
좋은 정리 감사합니다 :)