# for Windows
docker run --name mysql-lecture -p 53306:3306 -v c:/dev/docker/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=admin_123 -d mysql:8.3.0
# for Mac
docker run --name mysql-lecture -p 53306:3306 -v ~/dev/docker/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=admin_123 -d mysql:8.3.0
pom.xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.16</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.2</version>
</dependency>
mybatis-spring
의존성 추가할 때 spring-context
, spring-jdbc
와 호환되는 버전을 확인하자. spring
버전 5.x.x
와 호환되는 것을 확인할 수 있다.
src/main/resources/context-beans.xml
<!-- MyBatis start -->
<!-- DAO 구현체 역할을 대신 해주는 클래스 기본설정 4가지가 필요 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 1. DB에 접속 하기 위해서 설정 -->
<property name="dataSource" ref="dataSource" />
<!-- 2. MyBatis 기본 설정 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 3. query가 적힌 xml 위치 -->
<property name="mapperLocations" value="classpath:sql/SQL.*.xml" />
<!-- 4. 트랜잭션 관리 -->
<property name="transactionFactory">
<bean class="org.mybatis.spring.transaction.SpringManagedTransactionFactory" />
</property>
</bean>
<!-- 작업 지시서 DAO 위치를 지정해야 사용 할 수 있음 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.portfolio.www.dao.mybatis" />
</bean>
<!-- 트랜잭션 관리를 위한 bean -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- MyBatis end -->
src/main/resources/mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 예) member_id -> memberId -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 쿼리 수행 결과를 DTO에 자동 매핑하기 위해 DTO 검색 -->
<typeAliases>
<package name="com.portfolio.www.dto" />
</typeAliases>
<!-- 개별로 setting 하는 방법
<typeAlias alias="Employees" type="com.edu.dto.Employees" />
-->
</configuration>
<typeAliases>
MyBatis가 DTO 클래스를 검색할 패키지를 지정합니다. 여기서는 com.portfolio.www.dto
패키지 내의 모든 클래스를 대상으로 @Alias
애너테이션이 없다면 클래스 이름을 소문자로 변환하여 별칭으로 등록합니다. 예를 들어, com.portfolio.www.dto.Member
클래스는 member
라는 별칭으로 등록됩니다.
<typeAlias>
개별 클래스를 명시적으로 별칭과 매핑할 수 있습니다. 이 방법은 패키지 단위 설정 대신 특정 클래스에 대해 별칭을 설정할 때 사용됩니다. 주석 처리된 예제에서는 com.edu.dto.Employees 클래스를 Employees라는 별칭으로 설정합니다.
pom.xml
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.8</version>
</dependency>
WebContent/WEB-INF/tiles/tiles-config.xml
<definition name="tiles-default" template="/WEB-INF/views/layout/default.jsp">
<put-attribute name="menu" value="/WEB-INF/views/layout/menu.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/WEB-INF/views/layout/footer.jsp" />
</definition>
<!-- 회원가입 -->
<definition name="auth/join" extends="tiles-default">
<put-attribute name="title" value="회원가입" />
<put-attribute name="body" value="/WEB-INF/views/auth/join.jsp" />
</definition>
<!-- 로그인 -->
<definition name="auth/login" extends="tiles-default">
<put-attribute name="title" value="로그인" />
<put-attribute name="body" value="/WEB-INF/views/auth/login.jsp" />
</definition>
<!-- 결과로 /WEB-INF/views/layout/default.jsp 화면이 반환되고 이 화면에는 menu, body, footer가 존재 -->
<definition name="WILDCARD:*" extends="tiles-default">
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>
<definition name="WILDCARD:*/*" extends="tiles-default">
<put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
</definition>
<definition name="WILDCARD:*/*/*" extends="tiles-default">
<put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" />
</definition>