danbibibi
article thumbnail
Published 2023. 4. 24. 21:34
Spring-MyBatis 실습 WEB/back-end

지난번에 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.xmluserMapper.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
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로