728x90
반응형
순서
MyBatis - xml 파일을 사용해서 SQL 실행하는 방법
1) 테이블 생성 및 개발 준비
2) 도메인 객체(DTO) 설계 및 생성 (클래스 파일)
3) DAO 인터페이스 생성
4) 인터페이스 안에 필요한 기능을 정의 (추상메서드)
XML - mapper 생성, SQL 구문 작성
- mapper DTD 추가
- mapper 의 위치 (저장경로) 저장
- SQL 구문 작성
5) MyBatis 와 XML mapper 연결 (인식)
6) DAO 객체 구현 (인터페이스 구현)
- 해당 메서드 사용해서 동작 호출
- DAO 테스트
memberMapper.xml
<mapper namespace="com.itwillbs.mapper.MemberMapper">
<!-- 시간 정보 조회 -->
<select id="getTime" resultType="string">
select now()
</select>
<!-- 회원가입 -->
<insert id="createMember">
insert into tbl_member(userid,userpw,username,useremail)
values(#{userid},#{userpw},#{username},#{useremail})
</insert>
</mapper>
VO 안에 정보를 자동으로 넣고, 꺼내는 작업을 스프링프레임워크가 하고있음.
memberDAOTest
public class MemberDAOTest {
//DAO 객체 필요
@Inject
private MemberDAO dao;
@Test
public void 시간정보_조회하기() {
System.out.println(dao.getServerTime());
}
//회원정보저장(Create)
@Test
public void createUser() {
//회원정보 생성(사용자 입력 정보)
MemberVO vo = new MemberVO();
vo.setUserid("admin");
vo.setUserpw("1234");
vo.setUsername("관리자");
vo.setUseremail("admin@admin.com");
dao.insertMember(vo);
}
MemberDAO dao = new MemberDAO(); 의미
실행은 Test 에서 실행
memberDAO
public interface MemberDAO {
//디비 서버의 시간 정보 조회
public String getServerTime();
// 회원가입
public void insertMember(MemberVO vo);
// 디비 연결 - sql 작성 - 실행 (DAO 의 역할)
}
memberDAOImpl
@Repository
public class MemberDAOImpl implements MemberDAO {
//디비 연결 필요 -> 의존 관계 발생.
@Inject
private SqlSession sqlSession; //(repository 라는 어노테이션을 통해 root-context로 이동하게 됨 -> root안의 sqlSession 정보 가져오기)
//mapper의 namespace 정보 저장
private static final String NAMESPACE="com.itwillbs.mapper.MemberMapper"; //mapper 정보 저장
@Override
public String getServerTime() {
//디비 연결 (없음.)
//sql작성 & pstmt 객체 (쿼리 필요없음. xml 파일에서 만들어놓고 옴)
//? ?
// 쿼리 실행 후 데이터 처리
//sqlSession.selectOne(쿼리);
String time
= sqlSession.selectOne("com.itwillbs.mapper.MemberMapper.getTime");
return time;
}
@Override
public void insertMember(MemberVO vo) {
//디비 연결 - sql 작성 - 실행
sqlSession.insert(NAMESPACE + ".createMember",vo);
}
}
insert 해라 는 뜻
,vo 왜 하는거지?
=>
근데 스프링에서 뜨는 이 빨간 코드는 에러가 아님!
root-context
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 객체에 있는 set()메서드 -->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:mysql://localhost:3306/springdb"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</bean>
특정 회원정보 조회
외부 라이브러리 추가
https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4/1.16
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
밑에 파일 2개도 추가
logback.xml
0.00MB
log4jdbc.log4j2.properties
0.00MB
로그인
memberMapper.xml
<!-- 로그인 -->
<select id="loginMember" resultType="com.itwillbs.domain.MemberVO">
select * from tbl_member
where userid=#{userid} and userpw=#{userpw}
</select>
memberDAO
//로그인 처리
public MemberVO loginMember(MemberVO vo);
public MemberVO loginMember(String userid, String userpw);
memberDAOImpl
@Override
public MemberVO loginMember(MemberVO vo) {
MemberVO vo2 = sqlSession.selectOne(NAMESPACE+".loginMember",vo);
return vo2;
}
@Override
public MemberVO loginMember(String userid, String userpw) {
// sqlSession.selectOne(statement,userid,userpw); (X)
// sqlSession.selectOne(statement,vo); (o) vo 객체 생성해서 set 호출 저장
//VO 객체 안에 전달된 정보를 한번에 전달 불가능한 경우
//관련없는 데이터를 1개 이상 전달하는 경우(join)
Map<String, Object> paramMap = new HashMap<String, Object>();
//paramMap.put("mapper에 매핑될 이름", 데이터);
paramMap.put("userid", userid);
paramMap.put("userpw", userpw);
MemberVO vo = sqlSession.selectOne(NAMESPACE+".loginMember",paramMap);
return vo;
}
memberDAOTest
//로그인
@Test
public void 로그인() {
MemberVO vo = dao.loginMember("admin","1234");
if(vo!=null) {
System.out.println("ㄺㅇ 성공");
}else {
System.out.println("실패");
}
MemberVO inputVo = new MemberVO();
inputVo.setUserid("admin");
inputVo.setUserpw("1234");
MemberVO vo2 = dao.loginMember(inputVo);
if(vo2!=null) {
System.out.println("ㄺㅇ 성공");
}else {
System.out.println("실패");
}
}
728x90
반응형
'Spring > Spring' 카테고리의 다른 글
1206 Spring (0) | 2022.12.06 |
---|---|
1205 Spring 컨트롤러 4가지 (0) | 2022.12.05 |
1124 Spring - MyBatis 와 스프링의 연동 (0) | 2022.11.24 |
1122 Spring - MyBatis (0) | 2022.11.22 |
1121 Spring FrameWork 기초 (0) | 2022.11.21 |