JpaReposiory 사용 사 메소드 명으로 쿼리문을 작성 하는 경우 아래와 같은 형식으로 정의 할 수 있습니다.

 

1) findByXX ex>findByParentDataSeq 와 같이 ParentDataSeq 값을 기준으로 데이터를 검색 하고자 하는 경우 findBy 이후에 ParentDataSeq 컬럼을 명시해서 관련 쿼리문이 나오게  할 수 있습니다.


2) Like / NotLike ex> findByFileNameLike 와 같이 FileName, Like 를 붙여 주면 FileName 기준으로 like 검색을 쿼리문을 생성 해줍니다.


3) StartingWith / EndingWith ex> findByFileNameStartingWith("2021년") 와 같이 FileName 과 StartingWith 를 붙여 주면 FileName 에 '2021년' 으로 시작하는 데이터만 검색 하게 됩니다.
file명으로 검색 하는 경우 EndingWith(".jpg") 와 같이 확장자 기준으로 데이터를 가지고 오는데 사용하는게 유용 합니다.


4) IsNull / IsNotNull ex> findByFileNameIsNull() FileName 와 IsNull 을 같이 사용하는 경우 FILE_NAME이 NULL인 데이터만 조회 합니다.


5) True / False ex> findByFileCheckTrue 라면 FILE_CHECK컬럼이 값이 true인 경우에만 데이터를 조회 합니다. 컬럼 형식이 boolean인 경우 사용 할 수 있습니다.


6) Before / After  ex> findByRegDateBefore(new Date()) 인 경우 REG_DATE컬럼이 넘겨받는 new Date() 기분으로 이전 날짜인 경우에만 데이터를 조회 합니다. date, datetime 형식 인경우 사용 가능 합니다.


7) LessThan / GreaterThan ex> findByFileSeqLessThan(20) FILE_SEQ 컬럼의 값이 20보다 작은 데이터만 조회 합니다. (GreaterThan는 더 큰수만 조회 합니다.) number 형식인 경우 사용 가능 합니다.


8) Between ex> findByFileSeqBetween(10,20) FILE_SEQ의 값이 10~20사이인 데이터만 조회 합니다. BETWEEN 함수를 사용하는 것과 동일 합니다.(number, daste 형식인 경우 사용 가능 합니다.

 

9) And / OR ex> findByParentDataSeqAndFuncType(Integer parentDataSeq, String funcType) 같이 조건을 여러개 붙이는 경우 중간에 And, OR를 붙여서 데이터 조회를 할 수 있습니다.

반응형
Posted by 질주하는구
,

maven install 시 에러

spring 2021. 5. 11. 16:52

maven install 시 illegal character: '\ufeff' 같은 에러가 발생되는 경우

다른 IDE에서 복사해서 붙여 넣은 java파일에서 인코딩 문제로 발생되는 에러 입니다. 이 경우 해당 파일을

메모장 등에 붙여 복사 후 붙여넣기 후 저장하면 해결 되는데 그런 파일이 많은 경우 

 

에디트 플러스등을 이용 utf-8+bom -> utf-8로 변경 해주면 됩니다.

반응형
Posted by 질주하는구
,

spring-data-jpa 1.11.23 에 queryDsl(3.6.3)을 사용 하려는 경우 

 

Multiple markers at this line
- The type com.querydsl.core.types.Predicate cannot be resolved. It is indirectly referenced from required .class files
- The type com.querydsl.core.types.OrderSpecifier cannot be resolved. It is indirectly referenced from required .class files

 

에러가 발생되면 queryDsl 버전을 4로 변경 해주면 에러가 발생 되지 않습니다.

 

3버전은 페키지 경로가 com.mysema.querydsl 로 되어 있어서 4버전의 jar파일을 사용해야 합니다.

(버전 변경 시 기존 플러그인 경로를 com.querydsl.apt.jpa.JPAAnnotationProcessor 로 바꿔 줘야 QClass가 정상 생성 됩니다.)

 

(

spring-data-jpa 중간다리 역활을 하는 뭔가를 추가 해야 하는 걸 수 도 있을거 같은데... 근본적인 원인은 jar파일을 까서 봐야 알거 같습니다.

)

반응형

'spring' 카테고리의 다른 글

aop:pointcut 여러개 지정  (0) 2021.06.03
maven install 시 에러  (0) 2021.05.11
spring csrf 데이터 확인  (0) 2021.04.30
ajax 전송시 415에러 발생  (0) 2021.04.30
spring 다중 DB접속 mapper scan  (0) 2020.09.04
Posted by 질주하는구
,

spring security CSRF사용시 정상적으로 토큰값이 넘어오는 지 확인 하기 위한 테스트 클래스 작업

<bean id="csrfSecurityRequestMatcher" class="xxx.xxxx.xxxx.CsrfSecurityRequestMatcher"/>

securty http설정 부분에

<csrf disabled="false" request-matcher-ref="csrfSecurityRequestMatcher"/>

 

소스를 아래와 같이 작성 후 정상적으로 토큰값이 넘어오는지 확인 할 수 있습니다.

public class CsrfSecurityRequestMatcher implements RequestMatcher{
	private static final Logger logger = LoggerFactory.getLogger(CsrfSecurityRequestMatcher.calss);

	private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)&");
	
	private RequestMatcher imgMatcher = new RegexRequestMatcher("/img/*", null, true);
	private RequestMatcher orMatcher = new OrRequestMatcher(imgMatcher);

	@Override
	public boolean matches(HttpServletRequest request){
		//전송 url의 mothod가  post 가 아닌경우 예외처리
		if(allowedMethods.matcher(request.getMethod()).matches()){
			return false;
		}
		logger.debug("=================================");
		logger.debug("URL: "+reuqest.getRequestURI());
		logger.debug("X-CSRF-TOKEN: "+reuqest.getHeader("X-CSRF-TOKEN"));
		logger.debug("=================================");

		return !orMatcher.matches(request);
	}
}
반응형
Posted by 질주하는구
,

ajax로 데이터 전송 시 415에러가 발생되고 controller가 호출 되지 않는 경우 

contentType 을 확인 해주면 됩니다. ajax와 controller의 contentType이 맞지 않는 경우 발생 됩니다.

 

혹은 전달 받으려는 parameter 설정시 @RequestBody ModelName tempModel 같이 @RequestBody를 설정 하는

경우 데이터가 정상적으로 전달 되지 않아 에러가 발생 될 수 있습니다.

(ajax post여서 requestbody에 데이터가 쌓이는게 맞는데... 안되는 경우 제거 해주면 됩니다.)

반응형
Posted by 질주하는구
,
spring interface dao<->xml mapper 연동을 위한 MapperScannerConfigurer 설정 interface와 xml연동 설정시 다중 세션을 사용하는 경우 mapper scan 시 자신이 사용할 세션을 정의 하기 위해 xml 및 dao에 아래와 같이 설정 합니다. 임의의 scan인터페이스를 생성 합니다.
package egovframework.cmmn;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.stereotype.Component;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface AddMapperScan {
	String value() default "";
}
context-mapper.xml에 mapper설정시 아래와 같이 scan을 지정 합니다.

	
	
	

mapper생성시 해당 스캐너를 사용 할 수 있게 지정 해줍니다.
package egovframework.mapper.sky;

import java.util.HashMap;
import java.util.List;

import egovframework.cmmn.SkyMapperScan;
import egovframework.cmmn.service.UserVO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.sub.sendReport.service.OpenDeptVO;
import egovframework.sub.sendReport.service.OpenPersonVO;

@AddMapperScan
@Mapper("addOpenMapper")
public interface AddOpenMapper {
	List selectList(String tempStr) throws Exception;
	
	List selectOpenList(HashMap paramMap) throws Exception;
	
	List selectList() throws Exception;
	
	EgovMap selectInfo(String tempStr) throws Exception;
}
반응형

'spring' 카테고리의 다른 글

spring csrf 데이터 확인  (0) 2021.04.30
ajax 전송시 415에러 발생  (0) 2021.04.30
@Valid 사용시 xml 변경 및 jar파일  (0) 2017.02.10
aspect bofore 관련  (0) 2016.07.01
sessionFactory annotatedClasses/packagesToScan 방식  (0) 2015.07.27
Posted by 질주하는구
,

@Valid 사용시 


<annotation-driven />

을 사용해서 어노테이션을 설정하고 2개의 패키지를 기본으로 import해야 합니다.


validation-api , hibernate-validator 로 2개의 패키지는 버전 의존성이 있어 


org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean 와 같은 에러가 발생 되면 

jar파일의 버전을 확인 해야 합니다.


hibernate-validator 5.x = validation-api 1.1.0.Final 과

hibernate-validator 4.x = validation-api 1.0.0.GA 과 동작 하게 됩니다.


hibernate-validator 는 기본적으로 hibernate-core 와 버전을 맞춰 주는 작업 역시 진행 해야 합니다.


@ModelAttribute @Valid DTO_MODEL dtoInfo,

BindingResult bindingResult,


선언 후 dto 변수에

@AssertFalse : false 값만 통과 가능

 @AssertTrue : true 값만 통과 가능

 @DecimalMax(value=) : 지정된 값 이하의 실수만 통과 가능

 @DecimalMin(value=) : 지정된 값 이상의 실수만 통과 가능

 @Digits(integer=,fraction=) : 대상 수가 지정된 정수와 소수 자리수보다 적을 경우 통과 가능

 @Future : 대상 날짜가 현재보다 미래일 경우만 통과 가능

 @Past : 대상 날짜가 현재보다 과거일 경우만 통과 가능

 @Max(value) : 지정된 값보다 아래일 경우만 통과 가능

 @Min(value) : 지정된 값보다 이상일 경우만 통과 가능

 @NotNull : null 값이 아닐 경우만 통과 가능

 @Null : null일 겨우만 통과 가능

 @Pattern(regex=, flag=) : 해당 정규식을 만족할 경우만 통과 가능

 @Size(min=, max=) : 문자열 또는 배열이 지정된 값 사이일 경우 통과 가능

선언을 이용해서 제약을 줄 수 있으며 BindingResult 를 이용해서 단순히 에러 페이지로 이동 시키거나 form태그를 이용해서 jsp페이지에서 에러 메시지를 출력 할 수도 있습니다.


java에서 에러 메시지를 가지고 오고자 하는경우 


FieldError fieldError = bindingResult.getFieldError();

fieldError.getDefaultMessage()

메소드를 이용해서 아래와 같이 설정한 메시지를 java단에서 호출도 가능 합니다.


 @Size(max=50,message="데이터는 50자미만으로 작성해야 합니다.")

반응형

'spring' 카테고리의 다른 글

ajax 전송시 415에러 발생  (0) 2021.04.30
spring 다중 DB접속 mapper scan  (0) 2020.09.04
aspect bofore 관련  (0) 2016.07.01
sessionFactory annotatedClasses/packagesToScan 방식  (0) 2015.07.27
spring+hsqldb 사용설정  (0) 2015.07.15
Posted by 질주하는구
,

aspect bofore 관련

spring 2016. 7. 1. 16:42

spring 설정 xml에

aop관련 설정을 추가

 

xmlns:aop=http://www.springframework.org/schema/aop

 

xsi:schemasLocation에

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

추가 및

<aop:aspectj-autoproxy/>

추가

 

작업 하려는 class에

 

@Aspect추가 후 @Before메소드 추가 및 해당 메소드 실행 관련 설정

(execution(public * .....)) 추가

반응형

'spring' 카테고리의 다른 글

spring 다중 DB접속 mapper scan  (0) 2020.09.04
@Valid 사용시 xml 변경 및 jar파일  (0) 2017.02.10
sessionFactory annotatedClasses/packagesToScan 방식  (0) 2015.07.27
spring+hsqldb 사용설정  (0) 2015.07.15
스프링 관련 문서  (0) 2015.03.05
Posted by 질주하는구
,

spring에서 sessionFactory를 생성시 모델 데이터를 초기화 하기 위해서 2가지 방식을 사용 할 수 있습니다.


property name="annotatedClasses"


property name="packagesToScan"

2가지 방식으로 생성 할 수 있습니다. 우선 annotatedClasses의 경우 


<list>

<value>model.T_DATA_SET</value>

<value>model.T_DATA_INFO</value>

</list>

등과 같이 모델의 위치를 지정해주면 되고

packagesToScan의 경우 


<property name="packagesToScan" value="model"/>

과 같이 패키지 위치를 지정 하여 스캔하는 방식을 사용 할 수 있습니다.

반응형

'spring' 카테고리의 다른 글

@Valid 사용시 xml 변경 및 jar파일  (0) 2017.02.10
aspect bofore 관련  (0) 2016.07.01
spring+hsqldb 사용설정  (0) 2015.07.15
스프링 관련 문서  (0) 2015.03.05
스프링 버전 변경시 에러 사항(3.1.1->3.2.1)  (0) 2015.03.03
Posted by 질주하는구
,

spring+hsqldb 사용설정

spring 2015. 7. 15. 13:46

hsqldb를 이용해서 프로그램 작업을 하는 경우 아래와 같이 applicationContext.xml에 설정을 추가 하면 됩니다.

메모리 디비를 사용하는 경우

 

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:mem:test" />
        <property name="username" value="sa" />
        <property name="password" value="" />
 </bean>

 

메모리+파일시스템 을 같이 사용하는경우

<bean id="hsqldb" class="extra.HsqlDbSys" init-method="start">
          <constructor-arg>
               <value>
               server.database.0 = file:C:/workspace/sampleSpring/WebContent/WEB-INF/hsqldb/test
               server.dbname.0 = test
               server.remote_open = true
               server.port = 9002
               hsqldb.reconfig_logging = false
               </value>
          </constructor-arg>
     </bean>
     <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:hsql://localhost:9002/test" />
        <property name="username" value="sa" />
        <property name="password" value="" />
 </bean>

 

이때 start를 하기 위해서 HsqlDbSy 클래스를 만들어서 사용하게 됩니다.

 

 

 

package extra;

import java.io.IOException;
import java.util.Properties;

import org.hsqldb.Server;
import org.hsqldb.persist.HsqlProperties;
import org.hsqldb.server.ServerAcl.AclFormatException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;

public class HsqlDbSys implements SmartLifecycle{
	private final Logger logger = LoggerFactory.getLogger(this.getClass());
    private HsqlProperties properties;
    private Server server;
    private boolean running = false;

    public HsqlDbSys(){}
    
    public HsqlDbSys(Properties props) {
         properties = new HsqlProperties(props);
    }

    public boolean isRunning() {
         if(server != null)
              server.checkRunning(running);
              return running;
         }

    public void start() {
         if(server == null) {
              logger.info("디비 시작");
              server = new Server();

              try {
                   server.setProperties(properties);
                   server.start();
                   running = true;
              } catch(AclFormatException afe) {
                   logger.error("start hsqldb", afe);
              } catch (IOException e) {
                   logger.error("start hsqldb", e);
              }
         }
    }

    public void stop() {
         logger.info("디비 종료");
         if(server != null) {
              server.stop();
              running = false;
         }
    }

    public int getPhase() {
         return 0;
    }

    public boolean isAutoStartup() {
         return true;
    }

    public void stop(Runnable runnable) {
         stop();
         runnable.run();
    }
}

반응형

'spring' 카테고리의 다른 글

aspect bofore 관련  (0) 2016.07.01
sessionFactory annotatedClasses/packagesToScan 방식  (0) 2015.07.27
스프링 관련 문서  (0) 2015.03.05
스프링 버전 변경시 에러 사항(3.1.1->3.2.1)  (0) 2015.03.03
s:message 태그 설명  (0) 2014.09.25
Posted by 질주하는구
,