반응형 SMALL 분류 전체보기120 회원 관리 시스템 (CRUD) 1. 프로젝트 구조src/├── main/java│ └── com.example.member│ ├── controller│ ├── domain (User.java)│ ├── mapper (UserMapper.java, UserMapper.xml)│ └── service (UserService.java)└── main/resources └── mappers └── UserMapper.xml2. User 엔티티 (DTO)public class User { private int id; private String name; private String email; private String password; private .. 2025. 4. 17. 트랜잭션 처리 및 예외 관리 1. MyBatis + Spring Boot 트랜잭션 구조MyBatis는 내부적으로 JDBC 기반이기 때문에, 트랜잭션은 Spring의 트랜잭션 매니저에 의해 처리됩니다. MyBatis Starter를 사용하면 아래 구성은 자동으로 설정돼요.spring: datasource: ... transaction: default-timeout: 30s2. 트랜잭션 처리 방법A. 선언적 트랜잭션 (@Transactional)가장 많이 사용되는 방식입니다. Service 계층에서 트랜잭션 범위를 지정할 수 있어요.@Service@RequiredArgsConstructorpublic class UserService { private final UserMapper userMapper; @Tran.. 2025. 4. 17. @MapperScan, @Mapper 어노테이션 사용 핵심 요약 어노테이션 역할 적용 위치 @MapperMapper 인터페이스 개별 등록각 Mapper 인터페이스에 직접@MapperScan지정된 패키지의 Mapper 일괄 등록@SpringBootApplication 클래스 위1. @Mapper 어노테이션 – 인터페이스에 직접 명시예시@Mapperpublic interface UserMapper { User selectUserById(int id);}Spring이 이 인터페이스를 자동으로 Bean 등록해 줍니다.인터페이스 하나하나에 다 붙여야 해서, Mapper가 많은 경우 번거로움이 있어요.2. @MapperScan 어노테이션 – 패키지 단위로 한 번에 처리예시@SpringBootApplication@MapperScan("com.example.proj.. 2025. 4. 17. Spring Boot에서 MyBatis 설정하기 1. 프로젝트 구조 및 의존성Gradle 사용 시 (build.gradle)dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2' implementation 'mysql:mysql-connector-j:8.0.33'}Maven 사용 시 (pom.xml) org.mybatis.spring.boot mybatis-spring-boot-starter 3.0.2 mysql mysql-connector-j 8.0.33 2. application.yml 또는 .properties 설정application.yml 예시spring: datasource: .. 2025. 4. 17. 동적 정렬/페이징 구현 예시 시나리오사용자가 아래와 같은 조건을 넘겨준다고 가정해요:검색어: name = "홍길동"정렬 기준: orderBy = "created_at"정렬 방향: orderDir = "desc"페이지 번호: page = 2, 페이지 크기: size = 101. 검색 + 정렬 + 페이징 DTOpublic class UserSearchCondition { private String name; private String orderBy; // 정렬할 컬럼명 private String orderDir; // ASC / DESC private int page; // 현재 페이지 private int size; // 페이지당 개수}2. Mapper 인터페이스Lis.. 2025. 4. 17. 동적 조건 검색 처리 목표: 조건이 있을 때만 WHERE절에 포함예를 들어, name, email, status 중 입력된 값만으로 검색하고 싶다면 어떻게 해야 할까요?1. DTO(검색 조건용 클래스) 만들기public class UserSearchCondition { private String name; private String email; private String status; // getter, setter}2. Mapper 인터페이스 정의List searchUsers(UserSearchCondition cond);3. XML Mapper에 동적 조건 구성 SELECT * FROM users AND name LIKE CONCAT('%', #{name}, '%') .. 2025. 4. 17. 이전 1 2 3 4 5 6 7 ··· 20 다음 LIST