지난번에 JDBC를 이용해 진행했던 간단한 Spring MVC 실습을 MyBatis로 대체해보려고 한다!!
1. XML 파일 수정
MyBatis를 사용하기 위해 pom.xml에 dependency를 추가해준다!
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<!-- 3.x는 자바 11 이상을 사용 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.0</version>
</dependency>
mybatis를 spring에서 사용하기 위해서 root-context.xml에
다음과 같이 sqlSessionFactory를 등록해주고,
mybatis-spring:scan을 통해 repo를 스캔해준다!!
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mappers/**/*.xml"/>
<property name="typeAliasesPackage" value="com.dnabi.cat.dto"/>
</bean>
<mybatis-spring:scan base-package="com.dnabi.cat.model.repo"/>
2. Mapper 만들기
이제 더 이상 RepoImpl 클래스가 필요하지 않다!!
다음과 같이 resources 폴더 안에 mapper 폴더를 만들고,
MyBatis를 사용하여 RepoImpl을 대체할
catMapper.xml 과 userMapper.xml을 만들어 주었다!
catMapper.xml
select 시에 join해서 데이터를 가져오기 때문에 resultMap을 이용해주었다!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.danbi.cat.model.repo.CatRepo">
<resultMap id="catResult" type="Cat">
<id property="code" column="code" />
<result property="nickname" column="nickname"/>
<result property="price" column="price"/>
<result property="id" column="id"/>
<association property="user" javaType="User">
<id property="id" column="id"/>
<result property="pw" column="pw"/>
<result property="name" column="name"/>
</association>
</resultMap>
<insert id="insert">
insert into cat
values(#{code}, #{nickname}, #{price}, #{id})
</insert>
<delete id="delete">
delete from cat
where code=#{code}
</delete>
<update id="update">
update cat set
nickname=#{nickname}, price=#{price}, id=#{id}
where code=#{code}
</update>
<select id="select" resultMap="catResult">
select *
from cat join user
using(id)
where code=#{code}
</select>
<select id="selectAll" resultMap="catResult">
select *
from cat join user
using(id)
</select>
</mapper>
userMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.danbi.cat.model.repo.UserRepo">
<select id="select" resultType="User">
select *
from user
where id=#{id}
</select>
</mapper>
'WEB > back-end' 카테고리의 다른 글
REST(Representational State Transfer) API (0) | 2023.04.26 |
---|---|
web.xml, servlet-context.xml, root-context.xml (0) | 2023.04.25 |
MyBatis, MyBatis-Spring 설정 (0) | 2023.04.24 |
Spring File Upload (Apache Commons FileUpload) (1) | 2023.04.24 |
Spring MVC 실습 (0) | 2023.04.24 |