스프링

스프링 MyBatis 구현하기

그리득 2023. 12. 11. 16:08
728x90

 

 

데이터베이스에 연결하기 위한 라이브러리 가져오기

1.ojdbc8.jar(jdbc)

2.spring-jdbc

3.mybatis

4.mybatis-spring

5.commons-dbcp

<dependencies>

	<dependency>
	    <groupId>com.oracle.database.jdbc</groupId>
	    <artifactId>ojdbc11</artifactId>
	    <version>23.3.0.23.09</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>
	<!-- 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 -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>3.0.2</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
    
</dependencies>

 

root-context.xml에 DB연결에 필요한 bean 등록하기

 

 

1. Data연결정보를 저장하는 클래스 -> BasicDataSource클래스

2. SqlSession을 생성해주는 클래스 -> SqlSessionFactoryBean클래스

3. SqlSession 클래스 -> SqlSessionTemplate클래스

 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
  	
    <!-- Data연결정보를 저장하는 클래스 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
        <property name="username" value="spring"/>
        <property name="password" value="spring"/>
	</bean>
    
	<!-- SqlSession을 생성해주는 클래스 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- <property name="dataSource" ref="dataSource"/> -->
        <property name="dataSource" ref="proxyDataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:mappers/**/*.xml"/>
    </bean>
    
	<!-- SqlSession 클래스 -->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>	
		
</beans>

 

mybatis-config,mapper xml을 위한 설정

 

Window -> Preferences

 

XML 검색 -> XML Catalog -> Add...

 

 

 

config.xml 설정
http://mybatis.org/dtd/mybatis-3-config.dtd
-//mybatis.org//DTD Config 3.0//EN

mapper.xml 설정
http://mybatis.org/dtd/mybatis-3-mapper.dtd
-//mybatis.org//DTD Mapper 3.0//EN

 

<configuration>
	<settings>
		<setting name="jdbcTypeForNull" value="NULL"/>
	</settings>
	<typeAliases>
		<typeAlias type="com.bs.spring.demo.model.dto.Demo" alias="demo"/>
		<typeAlias type="com.bs.spring.common.StringArrayTypeHandler" alias="strArr"/>
		<typeAlias type="com.bs.spring.member.model.dto.Member" alias="member"/>
		<typeAlias type="com.bs.spring.common.StringListTypeHandler" alias="strList"/>
		<typeAlias type="com.bs.spring.memo.model.dto.Memo" alias="memo"/>
	</typeAliases>
	
</configuration>

 

1.typeAlias를 통해 중복코드 줄이기

type에 패키지명.클래스 입력

alias에 별칭 입력

 

<mapper namespace="member">
 	<resultMap type="member" id="memberMap">
 		<result column="username" property="name"/>
		<result column="HOBBY" property="hobby" typeHandler="strList"/>	
	</resultMap>

	<select id="selectMemberById" parameterType="string" resultMap="memberMap">
		SELECT * FROM MEMBER WHERE USERID=#{userId}
	</select>
	
 	<insert id="insertMember" parameterType="member">
		INSERT INTO MEMBER VALUES(#{userId},#{password},#{name},#{gender},#{age}
								,#{email},#{phone},#{address},#{hobby,typeHandler=strList},DEFAULT)
	</insert>
</mapper>

 

parameterType에 config에서 설정한 alias 별칭 입력