본문 바로가기

Java/자바 기반 웹 개발자 과정 필기

[200619.80일차] Spring 10 - MyBatis

반응형

MyBatis 기본틀

pom.xml

<!-- mybatis -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.2.2</version>
</dependency>
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.2.3</version>
</dependency>
<!-- JDBC Template -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>4.1.4.RELEASE</version>
</dependency>

jdbc-config.xml

<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <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="1234" />
</bean>

<bean id="sqlSessionFactory"
	class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="configLocation"
		value="classpath:mybatis/mybatis-config.xml" />
	<property name="mapperLocations"
		value="classpath:mybatis/mapper.xml" />
</bean>
<bean id="sqlSession"
	class="org.mybatis.spring.SqlSessionTemplate"
	destroy-method="clearCache">
	<constructor-arg name="sqlSessionFactory"
		ref="sqlSessionFactory"></constructor-arg>
</bean>

* 그동안 template를 사용했었지만, 이제 sqlSession을 사용한다.

web.xml

	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

mybatis-config.xml & mapper.xml

<!-- mybatis-config -->
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <typeAliases>

   </typeAliases>
</configuration>


<!-- mapper -->
<?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.care.mybatis.myMapper">

</mapper>

Table 생성

create table mybatis_test(
num number,
name varchar2(30),
mydate date
);
insert into mybatis_test values(1,'홍길동',sysdate);
insert into mybatis_test values(2,'김개똥',sysdate);
commit;

 


select *

=> 전체 리스트 가져오기

TestDTO

mybatis-config.xml

=> 별칭을 지정해서 mapper에서 사용

mapper.xml

=>  sql문 결과값을 dto타입 listAll에 저장

(dto는 mybatis-config.xml에서 TestDTO 타입의 별칭 )

나중에 DAO에서 namespace에 명시된 경로(sql문이 있는 경로)로 접근하게 변수를 만듬

namespace는 아무거나 써도 되지만, 서로 같아야 한다.

TestController

servlet-context.xml

TestService

TestDAO

test.jsp

실행

 


select

=> 결과값이 하나일때

input.jsp

TestController

TestService

TestDAO

mapper.xml

list.jsp

실행

더보기

숫자가 아닌 문자를 입력했을때 => 500 오류

/* 실행되지 않아도 오류가 뜨지 않을것 같은 문장은 try-catch문으로 묶음 */


insert

inputuser.jsp

TestController

TestService

TestDAO

mapper.xml

 


Update & Delete

 

더보기

Service 인터페이스 안에

@Select("sql문") /@Insert 를 직접 써서 사용하는 방식도 있다.

public void testtt();



11_spring_게시판_QUIZ.pdf
0.44MB

 

 

반응형