db에 테이블 생성

create table tbl_member (
    userid varchar2(50) constraint tbl_member_userid_PK primary key,
    userpw varchar2(50) not null,
    username varchar2(50) not null,
    email varchar2(100),
    regdate timestamp default sysdate,
    updatedate timestamp default sysdate
);

 

src/main/java 경로에 있는 domain 폴더에 MemberDTO 파일 생성 후 작성

@AllArgsConstructor
@NoArgsConstructor
@Data
public class MemberDTO {
	private String userid;
	private String userpw;
	private String username;
	private String email;
    private Timestamp regdate;
    private Timestamp updatedate;
}

 

src/main/java 경로에 persistence 패키지 생성 후 IMemberDAO 인터페이스 작성

public interface IMemberDAO {
	public String getTime();
	public void insertMember(MemberDTO mDto);
}

 

src/main/resources경로에 mappers 폴더를 생성하고 memberMapper.xml 파일 생성 후 작성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanul.springstudent.memberMapper">
	<select id="getTime" resultType="string">
		SELECT sysdate
		FROM   dual
	</select>
	
	<insert id="insertMember">
		INSERT INTO tbl_member(userid, userpw, username, email)
		VALUES(#{userid}, #{userpw}, #{username}, #{email})
	</insert>
</mapper>

 

root-context.xml 파일로 가서 sqlSessionFactory bean에 property 한 줄 추가

<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>

 

그 밑에 sqlSession bean과 component-scan 추가

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<context:component-scan base-package="com.hanul.springstudent.persistence"></context:component-scan>

 

아까 생성한 persistence 패키지 안에 impl 패키지를 생성하고 MemberDAOImpl 클래스 생성 후 작성

@Repository 	// 인터페이스 구현 시 필수로 작성해야함
public class MemberDAOImpl implements IMemberDAO {
	@Autowired
	private SqlSession sqlSession;
	
	private static final String namespace = "com.hanul.springstudent.memberMapper";
	
	@Override
	public String getTime() {
		
		return sqlSession.selectOne(namespace + ".getTime");
	}

	@Override
	public void insertMember(MemberDTO mDto) {
		sqlSession.insert(namespace + ".insertMember", mDto);
		
	}
	
}

 

src/test/java 경로에 JUnit Test Case 생성 후 작성

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class IMemberDAOtest {
	@Autowired
	private IMemberDAO mDao;
	
	@Test
	public void testTime() throws Exception {
		log.info("mDao.getTime() : " + mDao.getTime());
	}
	
	@Test
	public void testInsertMember() throws Exception {
		MemberDTO mDto = new MemberDTO();
		mDto.setUserid("user01");
		mDto.setUserpw("aa1234");
		mDto.setUsername("홍길동");
		mDto.setEmail("hong@naver.com");
		
		mDao.insertMember(mDto);
	}

}

 

빈공간 우클릭하여 JUnit Test 실행

 

우측 JUnit탭에 초록색으로 표시되고 하단 콘솔창에 출력이 잘 된다면 테스트 성공!

 

그리고 처음에 만들어둔 DB 테이블 가서 잘 등록되어있는지 확인!!!