본문 바로가기

전체 글293

C++에서 string을 넘길 때, 받아올 때, 고민할 사항 함수를 만들다보면, string을 넘길 일이 많다.이럴 때, 한번쯤은 고민해도 좋을 것들에 대해 끄적여본다. 먼저.. 함수에 파라미터로 인자를 넘길 때, 아래 두 코드의 차이는 무엇일까?void CMyClass::ChangeName(CString newName){ //m_myName을 갱신}void CMyClass::ChangeName2(const CString& newName2){ //m_myName을 갱신} PC성능이 워낙 좋은 요즘에야 잘 모르겠지만.. (그래도 모른다. 벌크로 반복작업이 수십만~수백만 회 일어난다면 다른 이야기다.)  만약 전달받은 newName을 read only로 사용한다면 당연히 아래 const CString&이 더 낫다.먼저 const를 붙여서 readonly가 된 .. 2024. 10. 18.
Spring에서 file upload를 구현하고, DB에 저장 시.. exception발생 제목 그대로 spring에서, Multipart file을 저장하고, 해당 정보를 DB에 기록한다. 코드는 아래와 같이 구현했다. private void function(MultipartFile file){ String fileName = file.getOriginalFilename(); Path saveLoc = Path.get(pathparam1, pathparam2...).resolve(fileName); Files.copy( file.getInputStream(), saveLoc, StandardCopyOption.REPLACE_EXISTING); .. //Save to DB Map param = new HashMap(); param.put("saveLocation", saveLoc); param.. 2023. 11. 14.
MyBatis에서 SQL로그 남기기. Mybatis를 이용해서 SQL을 처리하다보면 디버깅을 해야할 때가 있다. 근데 무슨 쿼리가 어떻게 나가는지 알아야할것 아닌가? 그래서 로그를 남겨야한다. 1. maven에 패키지 설정 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 위와 같이 로그 남기기 위한 패키지를 정하고 2. log4jdbc.log4j2.properties파일 추가 resources패키지 밑에 log4jdbc.log4j2.properties파일을 만들고, 아래와 같이 내용 채우자. log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength=0 이 파.. 2023. 11. 3.
MyBatis에서 char(nn)컬럼이 String으로 맵핑되지 않을 때. MyBatis를 이용하여 SQL문을 처리하고있는데, 디버깅하다가 알게 된 사실. varchar컬럼은 String으로 알아서 맵핑되는데 char컬럼은 맵핑이 안되고 error가 발생하더라. (아님 null) 왜이러지? 하고 한참 찾아보았다. 그러다 아래 원글님의 resultMap을 사용하는 것을 참고하여 해결했다. https://goodteacher.tistory.com/650 [MyBatis] 03. 조회 결과의 매핑 조회 결과의 매핑 이번 포스트에서는 database에서 select로 조회한 내용을 java object 즉 DTO에 매핑하는 내용에 대해 다양하게 살펴보자. MyBatis의 조회 결과 매핑 방식 MyBatis는 다양한 방식으로 조회 goodteacher.tistory.com 결과만 요약하.. 2023. 11. 1.
Mybatis에서 조건부로 쿼리 붙이기. Mapper를 이용해서 쿼리를 보낼 때, 조건부로 쿼리를 붙여야하는 경우가 있다. 예를 들어, '전체보기' , '날짜필터링', '그룹필터링', '권한필터링'.. 이런 메뉴가 있다고 할때, 사용자가 가능한 선택은 전체보기나 날짜만으로 필터링 또는 날짜+권한 이런식으로 선택이 가능하다고 할때, 다음과 같이 조건이 필요해질 수 있다. WHERE뒤에.. 전체보기면 그냥 통과, 그룹필터링이면 table.GroupCode in ('GroupA', 'GroupB') 이렇게, 권한필터링이면 table.AuthorCode in ('Admin1', 'admin2')... 권한과 그룹을 같이 적용하는 경우에는 table.GroupCode in ('GroupA', 'GroupB') AND table.AuthorCode in .. 2023. 10. 27.
Data Binding #2 - DataContext와 Binding mode xaml에서 DataBinding을 사용하면, 화면에 표시될 값을 어디선가 가져와야한다. 그 값을 제공해 주는 개체가 필요하고, 그 개체를 DataContext를 이용해 지정해준다고 보면 된다. DataContext의 대상은 ElementName을 통해 xaml에 있는 다른 control을 통해 Binding할수도 있으나, User가 정의한 Class로 Binding하는것도 가능하다.(근데 사실 이 목적이 제일 강하다. WPF에서는 View에 해당하는 xaml에서는 화면에 값을 표시해주는 역할, 사용자의 입력을 Backend( Controller or ViewModel)에 전달해주기만 하면 된다. View는 로직에 관여하지 말고, Controller는 화면에 관여하지 않아야 좋다고 생각. 그리고 Data.. 2023. 10. 20.
728x90