코딩하는 문과생
[Spring] 4. 스프링 기본(3) - DAO에서 MyBatis를 이용해 DB접근 본문
[root-context.xml 설정]
MyBatis에 관한 내용이 root-context.xml에 들어간다.
root-context를 namespace로 연다.->전체 체크
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.3.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 1. DataSource 설정추가하고 JUnit 연결 테스트하기: 드라이버 정보제공 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"></property>
<property name="username" value="hr"></property>
<property name="password" value="hr"></property>
</bean>
<!-- 2. MyBatis 연동을 위한 추가 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 3. resource에 mybatis-config.xml 만들고 추가하기: MyBatis환경설정-->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 4. resource에 mappers 디렉토리를 만들고 추가하기 mybatis: DQM -->
<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" />
</bean>
<!-- 6. @repository 에서 의존성 주입을 위한 설정: Connection -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
</beans>
[UserDaoImpl에서 DB connection 체크]
package com.sinc.intern.user.model.sql;
import javax.annotation.Resource;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
//DB와 연동시킨다.
//매개변수가 없어도 되지만, 넣어주는 게 좋다.
@Repository("userD")
public class UserDaoImpl implements UserDao{
@Resource(name="sqlSession")
private SqlSession session;
@Override
public Object loginRow(Object obj) {
System.out.println("user dao loginRow : " + obj);
System.out.println("user dao conn : " + session);
return null;
}
}
[mybatis-config.xml]
src/main/resources내에 MyBatis와 Mapper파일 복붙
<?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>
</configuration>
[testMapper.xml]
src/main/resources내에 MyBatis와 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.sinc.intern.test">
</mapper>
[UserDaoImpl]
object를 넣는다. object를 받는다.
//DB와 연동시킨다.
//매개변수가 없어도 되지만, 넣어주는 게 좋다.
@Repository("userD")
public class UserDaoImpl implements UserDao{
@Resource(name="sqlSession")
private SqlSession session;
public static final String PREFIX = "com.sinc.intern.test";
@Override
public Object loginRow(Object obj) {
System.out.println("user dao loginRow : " + obj);
System.out.println("user dao conn : " + session);
//testMapper.xml의 login에 해당되는 부분을 실행하고 객체를 받는다.
Object result = session.selectOne(PREFIX+".login", obj) ;
return null;
}
}
[mybatis-config.xml - alias 설정]
<?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>
<typeAlias type="com.sinc.intern.user.model.vo.UserDTO" alias="userdto" />
<typeAlias type="com.sinc.intern.user.model.vo.UserVO" alias="uservo" />
</typeAliases>
</configuration>
[testMapper.xml - sql문 작성]
<?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">
<!-- 해당 객체의 set과 get을 이용해 접근한다. -->
<mapper namespace="com.sinc.intern.test">
<select id="login" parameterType="userdto" resultType="uservo">
SELECT ID, PWD, NAME, POINT, DEPT
FROM INTERN_USER_TBL
WHERE ID = #{id} AND PWD = #{pwd}
</select>
</mapper>
[UserDaoImpl]
package com.sinc.intern.user.model.sql;
import javax.annotation.Resource;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
//DB와 연동시킨다.
//매개변수가 없어도 되지만, 넣어주는 게 좋다.
@Repository("userD")
public class UserDaoImpl implements UserDao{
@Resource(name="sqlSession")
private SqlSession session;
public static final String PREFIX = "com.sinc.intern.test";
@Override
public Object loginRow(Object obj) {
System.out.println("user dao loginRow : " + obj);
System.out.println("user dao conn : " + session);
//testMapper.xml의 login에 해당되는 부분을 실행하고 객체를 받는다.
Object result = session.selectOne(PREFIX+".login", obj) ;
System.out.println("dao loginRow result : " + result);
return result;
}
}
[UserCtrl 반환값 수정]
@RequestMapping(value="/login.do", method=RequestMethod.POST)
public String login(UserDTO dto, HttpSession session) { //단순 데이터라면 session이 아닌 Model model을 이용하면 된다.
System.out.println("user login dto : " + dto);
Object user = service.login(dto);
if(user != null) {
//model.addAttribute("loginSession", user);
//데이터 유효시간이 request되는 페이지에만 유효하다.
session.setAttribute("loginUser", user);
}
return "redirect:/main.do";
}
'웹 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] 6. 스프링 기본(5) - 게시판 (CRUD) (0) | 2020.02.06 |
---|---|
[Spring] 5. 스프링 기본(4) - DB에 컬럼추가하기 (0) | 2020.02.06 |
[Spring] 3. 스프링 기본(2)-브라우저에서 DAO까지 (0) | 2020.02.04 |
[Spring] 2. 스프링 기본 - View와 Controller (0) | 2020.02.04 |
[Spring] 1. 환경설정 (0) | 2020.02.03 |