코딩
[Spring] MyBatis Spring 연동하기 본문
pom.xml
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
mybatis, mybatis-spring : mybatis 연동
spring-jdbc : jdbc처리
root-context.xml
<!--DataSource를 등록한다-->
<bean id="dataSource"
class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName"
value="com.mysql.cj.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/DB이름?serverTimezone=UTC"></property>
<property name="username" value="DB아이디입력"></property>
<property name="password" value="DB패스워드입력"></property>
</bean>
<!-- MyBatis를 사용하기 위한 sqlSessionFactory를 등록한다. -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mapper xml 파일의 경로를 ant 표현식의 형태로 사용한다. -->
<property name="mapperLocations"
value="classpath:mappers/*.xml" />
<!-- mapper에서 사용할 DTO들의 기본 패키지를 등록한다. -->
<property name="typeAliasesPackage" value="dto클래스 경로"></property>
</bean>
<!-- mybatis에서 제공하는 scan 태그를 통해 repository interface들의 위치를 지정한다. -->
<mybatis-spring:scan base-package="repository클래스 경로" />
resources/mapper에 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">
<!-- name space는 UserRepo의 fully qualified name으로 설정한다. -->
<mapper namespace="DB구현하는 repository클래스 경로">
<!-- 사용자 정보를 저장한다. id는 repo클래스의 메소드 이름과 일치시킨다. -->
<insert id="insert" parameterType="user">
INSERT INTO users
VALUES(#{id}, #{password}, #{name}, #{email}, #{age})
</insert>
<!-- 사용자 정보를 삭제한다. -->
<delete id="delete" parameterType="string">
DELETE FROM users
WHERE id = #{id}
</delete>
<!-- 사용자 정보를 수정한다. -->
<update id="update" parameterType="user">
UPDATE users
SET password = #{password} , name = #{name} , email = #{email}, age = #{age}
WHERE id = #{id}
</update>
<!-- 사용자를 id로 검색하여 조회한다. id는 repo클래스의 메소드 이름과 일치시킨다. -->
<select id="searchById" parameterType="string"
resultType="user">
SELECT *
FROM users WHERE id = #{id}
</select>
<!-- 사용자 이름으로 검색하여 조회한다. id는 repo클래스의 메소드 이름과 일치시킨다. -->
<select id="searchByName" parameterType="user"
resultType="user">
SELECT *
FROM users WHERE name LIKE
CONCAT('%',#{name},'%')
</select>
<!-- 모든 사용자 정보를 검색한다. id는 repo클래스의 메소드 이름과 일치시킨다. -->
<select id="selectAll" resultType="user">
SELECT * FROM users
</select>
</mapper>
PrameterType: 들어올 파라미터의 변수타입 소문자로 써주어도 상관없다
ResultType: 리턴되는 변수타입 만약에 List<UserDto> 타입을 반환해주고 싶으면 userdto라고만 써도된다.
Comments