반응형

H2 DB 연동 중에 다음과 같은 오류가 발생했다.

 

그림1. H2 Console 설정

H2 콘솔 설정은 다음과 같이 연결 후에

 

인텔리제이에서 아래와 같이 테스트 코드를 작성 하고 돌리면

 

다음과 같은 오류가 발생하였다.

오류 내용 : org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use

 

해결 방법 : 

H2 콘솔 페이지에서 연결을 해제하고 하면 오류가 발생하지 않았다. 하지만 H2 콘솔과 인텔리제이에서 동시에 접속이 가능해야 했기때문에 방법을 찾아보았고, 해결 방법은 다음과 같았다.

 

application.properties

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
#spring.datasource.url=jdbc:h2:~/Db명 # 수정 전
spring.datasource.url=jdbc:h2:tcp://localhost/~/Db명 # 수정 후
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

H2 콘솔 접속 페이지

반응형
반응형

 

- MySQL , postgreSQL, MariaDB

SELECT * FROM 테이블이름
	WHERE 컬럼명 LIKE CONCAT(‘%’, #{파라미터}, ‘%’)

 

- Oracle

SELECT * FROM 테이블명
	WHERE 컬럼명 LIKE '%'||#{파라미터}||'%'
반응형

'SQL' 카테고리의 다른 글

SQL 기본편 - INSERT / UPDATE / DELETE  (0) 2020.03.08
SQL 기본편 - SELECT  (0) 2020.03.06
반응형

sql.xml

<select id="Dao랑 매핑시킬 ID" parameterType="파라미터 type" resultType="반환할 결과 type">
	SELECT CONCAT(T1.컬림A, ' > ', T1.컬럼B) FROM 테이블 T1
</select>

 

위와 같이 xml 파일에 쿼리문을 작성 할 떄, 다음과 같은 오류가 발생하게 됩니다.

 

Multiple annotations found at this line:

- The content of elements must consist of well-formed character data or markup.

- Start tag of element <select>

 

해당 오류가 발생하는 이유는 XML 에서 부등호를 문자열이 아닌 <select> </select>와 같이 시작과 끝을 알리는 TAG로 인식하기 때문입니다.

 

해결 방법

 

<select id="Dao랑 매핑시킬 ID" parameterType="파라미터 type" resultType="반환할 결과 type">
	<![CDATA[
		SELECT CONCAT(T1.컬림A, ' > ', T1.컬럼B) FROM 테이블 T1
	]]>
</select>

 

부등호를 사용 할 쿼리문에 <![CDATA[ ]]> 를 사용해주면 오류가 발생하지 않습니다.

반응형
반응형

파일 업로드를 할 때, TIF , TIFF와 같은 썸네일을 뽑아내야 하는 상황이 생겼습니다.

 

처음에는 단순하게

import javax.imageio.ImageIO;

기본적으로 제공되는 위 라이브러리만 불러와서 사용하면 되는줄 알았습니다.

 

하지만, 모든 확장자에 대해 가능한 것이 아닌 대중적으로 사용하는 JPEG, PNG, BMP ..등등 에 대한 것만 가능하다는 것을 알게되었습니다.

 

여기서 조금 해매다가 얻은 결과로는 추가적으로 라이브러리가 필요하다는 정보를 얻었습니다.

 

https://mvnrepository.com/artifact/com.twelvemonkeys.imageio

 

위 사이트에서 필요한 파일 확장자에 대해서만 maven에 등록하여도 되고, 그냥 전체적으로 파일에 대한 모든 확장자들을 추가하고싶으면 

 

Maven 프로젝트의 경우 

<dependency>
    <groupId>com.twelvemonkeys.imageio</groupId>
    <artifactId>imageio-core</artifactId>
    <version>3.8.2</version>
</dependency>

의 내용을 pom.xml 에 추가해주시고,

 

Gadle 프로젝트의 경우

implementation group: 'com.twelvemonkeys.imageio', name: 'imageio-core', version: '3.8.2'

위 내용을 build.gradle 에 추가해주시면 될 것 같습니다.

 

 

공식 라이센스 제공 사이트

https://github.com/haraldk/TwelveMonkeys#license 

 

GitHub - haraldk/TwelveMonkeys: TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO

TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO - GitHub - haraldk/TwelveMonkeys: TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO

github.com

 

반응형

'Spring > 새롭게 얻은 정보들' 카테고리의 다른 글

[MaBatis] MyBatis 란?  (0) 2020.12.15
Spring - @Autowired & @Qualifier  (0) 2020.05.04
Spring - 의존(Dependency Injection)  (0) 2020.05.04
반응형

추가 기능 개발 후 테스트 중에 크롬에서는 replaceAll이 정상적으로 먹었지만, IE에서는 에러가 발생하는 현상을 볼 수 있었습니다.

 

그래서 찾아본 결과 정규식을 통해서 변경해야 했습니다.

 

아래 사진은 IE의 디버깅 모드에서 해본 화면입니다.

 

g : 전역에서 발생할 모든 패턴에 대한 검색
i : 대/소문자 미구분
m : 여러 줄 검색

반응형

'JS·JQuery·AJAX' 카테고리의 다른 글

자바스크립트 - 변수 & 연산자  (0) 2020.05.05
자바스크립트 위치  (0) 2020.05.04
반응형

오류 상황 : 스프링 부트와 AWs로 혼자 구현하는 웹 서비스를 따라 하던 도중

제목과 같은 오류가 발생하였다. 처음에는 저자분의 깃허브를 가서 동일하게 적용해보았으나 해결되지 않았습니다.

그 이후 구글링을 하였을 때, 다른 사람들이 해결한 방법 몇 가지는 다음과 같았습니다.

 

1.

테스트 클래스에 @WebAppConfiguration를 추가해주자.

-> 실패-> 저는 jUnit5로 테스트를 진행중이였는데, 위 방법은 jUnit4를 사용하는 환경에서 사용중이였습니다. 4버전과 5버전에 따라 차이가 있는지까지는 좀 더 공부해야 할 것 같습니다.

 

2.

테스트 클래스에 @ContextConfiguration() 를 추가해주자.

1번과 같은 이유로 실패하였습니다.

 

3.

메인 Application을 실행하여, h2-database 서버를 실행 후 다시 테스트를 돌려보자.-> 성공

 

h2 데이터베이스 서버를 실행 후 다시 테스트를 하니 성공적으로 실행 되었습니다.

반응형
반응형

www.acmicpc.net/problem/1037

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net

 

해당 문제는 N의 진짜 약수가 구해진다고 하였기 때문에 간단하게 가장 작은 수와 가장 큰 수를 곱하면 그 수가 N이 된다.

 

n = int(input())
N = list(map(int, input().split()))

N_max = max(N)
N_min = min(N)

print(N_max * N_min)
 
반응형
반응형

이번에는 게시판에 적힌 글을 조회하는 포스팅을 하도록 하겠습니다.

 

우선 reviewVo에 조회할 때 필요한 조회 종류를 추가해주도록 하겠습니다.

 

reviweVo.java

조회 기능까지 추가된 후의 reviewVo.java

package com.example.mall.domain;


public class reviewVo {

	/*
	 CREATE TABLE reviewTable (
	reNum INT AUTO_INCREMENT PRIMARY key,
	reTitle VARCHAR(20) NOT null,
	reContent text not null,
	reUser VARCHAR(20) NOT null,
	reregisterDate DATE DEFAULT NOW(),
	reCnt INT DEFAULT 0 # 조회수
	
	  
	 */
	
	private int reNum;
	private String reTitle;
	private String reContent;
	private String reUser;
	private String reregisterDate;
	private int reCnt;
	
	private String searchName, searchValue; // 이름별 검색, 제목별 검색
	public String getSearchName() {
		return searchName;
	}
	public void setSearchName(String searchName) {
		this.searchName = searchName;
	}
	public String getSearchValue() {
		return searchValue;
	}
	public void setSearchValue(String searchValue) {
		this.searchValue = searchValue;
	}
	public int getReNum() {
		return reNum;
	}
	public void setReNum(int reNum) {
		this.reNum = reNum;
	}
	public String getReTitle() {
		return reTitle;
	}
	public void setReTitle(String reTitle) {
		this.reTitle = reTitle;
	}
	
	public String getReContent() {
		return reContent;
	}
	public void setReContent(String reContent) {
		this.reContent = reContent;
	}
	public String getReUser() {
		return reUser;
	}
	public void setReUser(String reUser) {
		this.reUser = reUser;
	}
	public String getReregisterDate() {
		return reregisterDate;
	}
	public void setReregisterDate(String reregisterDate) {
		this.reregisterDate = reregisterDate;
	}
	public int getReCnt() {
		return reCnt;
	}
	public void setReCnt(int reCnt) {
		this.reCnt = reCnt;
	}
	
}

reviewMapper.xml

<!-- 게시글 검색하기 -->
	<select id="selectsearch" resultType="reviewVo">
		select * from reviewTable where ${searchName} like concat('%',#{searchValue},'%') <!-- #은 데이터값 -->
	</select>

 

reviewmapper.java

// 게시글 검색하기
	public List<reviewVo> selectsearch(reviewVo reviewvo) throws Exception;

 

reviewService.java

	// 게시글 제목 또는 작성자로 검색하기
	public List<reviewVo> selectsearch(reviewVo reviewvo) throws Exception {
		return reviewmapper.selectsearch(reviewvo);
	}

 

view에 검색할 수 있는 form 양식 작성

 

list.jsp 

기능 검색 추가된 list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
게시글 불러오기 
<br>
<table border="2">
<tr>
	<th>글번호</th><th>제목</th><th>내용</th><th>작성자</th><th>등록일</th><th>조회수</th>
</tr>
<c:forEach var="item" items="${relist}">
<tr>
<td>${item.reNum}</td>
<td><a href="detailreview?reNum=${item.reNum}">${item.reTitle}</a></td>
<td>${item.reContent}</td>
<td>${item.reUser}</td>
<td>${item.reregisterDate}</td>
<td>${item.reCnt}</td>
</c:forEach>
</table>
<a href="write">글쓰기</a>
<form action="search">
<table>
<tr>
<td><select name="searchName">
		<option value="reUser">작성자</option>
		<option value="reTitle">글제목</option>
		</select></td>
	<td colspan="2">
	<input type="text" name="searchValue">
	</td>
	<td>
	<input type="submit" value="검색">
	</td>
</tr>	
</table>
</form>
</body>
</html>

 

결과창

 

작성자 '롤'이 들어가는 글자로 검색해보겠습니다.

 

반응형

+ Recent posts