스프링
스프링 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 별칭 입력