MyBatis 입문 학습 - Oacle 연결 CURD 기본 동작 구현
이 기록 은 my batis 를 사용 하여 Oacle 데이터 베 이 스 를 연결 하여 기본 적 인 CURD 작업 을 수행 합 니 다.
Oacle 라 이브 러 리 가 져 오기
Oacle 요금 이 있 기 때문에 maven 은 Oacle 라 이브 러 리 가방 이 없습니다. 저희 가 직접 가 져 와 야 합 니 다. 외부 가방 을 수 동 으로 가 져 올 수도 있 고 Oacle 의 jar 를 maven 라 이브 러 리 종 으로 가 져 올 수도 있 습 니 다.구체 적 인 가 져 오기 절 차 는 Maven 이 Oracle 에 대한 의존 과 구동 을 추가 하 는 것 을 볼 수 있 습 니 다.
my batis 라 이브 러 리 를 가 져 옵 니 다. 로 컬 에 서 는 3.5.5 버 전 을 사용 합 니 다.마지막 설정 은 다음 과 같다.
org.mybatis
mybatis
3.5.5
com.oracle.jdbc
ojdbc6
11.2.0.1.0
배치 하 다.
my batis 설정 을 준비 하고 resources 디 렉 터 리 에 my batis - config. xml 파일 을 새로 만 듭 니 다. 설정 은 다음 과 같 습 니 다.
환경 설정
그 중에서
environments
여러 환경의 Oacle 데이터 원본 을 설정 할 수 있 습 니 다.id
환경 변수의 번호 로
의 default
에서 현재 환경 값 을 설정 할 수 있 습 니 다.dataSource
에 데이터 원본 을 설정 합 니 다.유형 은 3 가지 입 니 다.포함: POOLED
풀 화, UNPOOLED
비 풀 화 와 JNDI
다른 설정 원 에서 로드 합 니 다.driver
설정 한 클래스 이름, Oacle 작성 oracle.jdbc.driver.OracleDriver
.url
설 정 된 데이터 원본 을 위해 239 테스트 라 이브 러 리 jdbc:oracle:thin:@10.60.45.239:1521:devdb
를 사용 합 니 다.username
사용자 이름 입 니 다.password
비밀번호 입 니 다.설정 참조
value 에
${ }
와 같은 설정 인용 을 작성 할 수 있 으 며, properties/propertie
에 해당 하 는 실제 설정 값 을 추가 할 수 있 습 니 다.
...
...
...
설정 맵
데이터 원본 을 설정 한 후 CRUD 에 대응 하 는 SQL 구문 과 클래스 간 의 맵 관 계 를 포함 하여 해당 하 는 맵 을 추가 해 야 합 니 다.
...
resources 디 렉 터 리 에 새 파일
singleTransMapper.xml
을 만 들 면 MyBatis 는 singleTransMapper.xml
을 대응 하 는 클래스 에 표시 합 니 다.resources
외 에 도 MyBatis 는 class
, url
, package
총 4 가지 설정 을 지원 합 니 다.class
구체 적 인 유형 명 을 설정 할 수 있 습 니 다. 예 를 들 어 com.mybatistest.DAO.SingleTransMapper
.url
완전한 파일 경 로 를 설정 할 수 있 습 니 다. 예 를 들 어 file:///var/mappers/PostMapper.xml
.package
이름 을 설정 하고 모든 인 터 페 이 스 를 등록 할 수 있 습 니 다.조회 하 다.
public class SingletransDTO {
public String EnterpriseNum;
public String TransNo;
public String CommandCode;
public int State;
}
단일 조건 조회
검색 어 를 추가 하고 흐름 번 호 를 입력 하여 검색 한 단일 정 보 를 되 돌려 줍 니 다.
package
자바 에 대응 하 는 클래스 가 필요 하 며, 매개 변수 와 반환 유형 도 일치 해 야 합 니 다.mapper 노드 에 select 표시 selection 구문
namespace
을 입력 한 매개 변수 parameterType
를 되 돌려 주 는 형식 으로 추가 합 니 다. 되 돌려 주 는 유형 은 자바 의 클래스 에 대응 해 야 합 니 다.
public interface SingleTransMapper {
SingletransDTO selectSingle(String transNo);
}
String resource = "mybatis-config.xml";
//
InputStream inputStream = Resources.getResourceAsStream(resource);
// session
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
//
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
//
SingletransDTO blog = mapper.selectSingle("642EHDCS899XKF8P");
if(blog != null) {
System.out.println(blog.ENTERPRISENUM);
System.out.println(blog.TRANSNO);
System.out.println(blog.COMMANDCODE);
}else{
System.out.println("not found");
}
}catch (Exception exception)
{
System.out.println(exception.getMessage());
}
다 중 조건 조회
클래스 필드 를 통 해 매개 변 수 를 전달 합 니 다.
조회 설정 추가
resultType
...
대응 하 는 맵 클래스 추가 방법 에 대응 하 는 방법 입 니 다. MyBatis 는 클래스 의 필드 를 SQL 의 매개 변수 에 반사 할 수 있 습 니 다. 클래스 의 필드 이름과 sql 에서 설정 한 대소 문자 가 일치 해 야 합 니 다.
public interface SingleTransMapper {
...
SingletransDTO selectSingleByClass(SingleCondition singleCondition);
}
public class SingleCondition {
/**
*
*/
public String TransNo;
/**
*
*/
public String CommandCode;
public SingleCondition(String transNo, String commandCode)
{
TransNo = transNo;
CommandCode = commandCode;
}
}
구조 함수 류 의 다 중 조건 조회 방안 을 호출 합 니 다.
...
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
SingletransDTO blog = mapper.selectSingleByClass(new SingleCondition( "642EHDCS899XKF8P","10009"));
맵 인 터 페 이 스 를 통 해 전달
다른 방안 은 HashMap 에 들 어 갈 수 있 으 며, MayBatis 는 key 에 따라 해당 하 는 매개 변 수 를 자동 으로 매 핑 합 니 다.다음은 유수 번호 와 명령 유형 을 통 해 조 회 를 실현 한다.조회 설정 추가
selectSingleByParam
...
대응 하 는 방법 을 추가 합 니 다. 입력 매개 변 수 는
selectSingleByMultCondition
입 니 다.public interface SingleTransMapper {
...
SingletransDTO selectSingleByMultCondition(HashMap param);
}
새로운 다 중 조건 조회 방법 을 수정 하 다.
...
//
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
//
HashMap param = new HashMap();
param.put("transNo","642EHDCS899XKF8P");
param.put("commandCode","10009");
SingletransDTO blog = mapper.selectSingle2(param);
...
주의해 야 할 것 은 HashMap 의 key 는 대소 문 자 를 구분 하지 않 기 때문에 설정 파일 sql 의 인자 대소 문자 와 일치 해 야 합 니 다.
Param 주석
클래스 매개 변수 와 Map 을 통 해 다 중 조건 조 회 를 하려 면 추가 대상 을 만들어 야 합 니 다. 다른 좋 은 방법 은 방법 매개 변수 에 Param 주 해 를 추가 하 는 방식 으로 방법 매개 변수 와 SQL 매개 변수의 매 핑 관 계 를 설정 할 수 있 습 니 다.
조회 설정 추가
HashMap param
...
대응 하 는 맵 클래스 추가 방법 에 대응 하 는 방법 입 니 다. 그러면 MyBatis 는 매개 변수 맵 규칙 을 알 고 자동 으로 매 핑 됩 니 다. 주의해 야 할 매개 변수 와 sql 에서 설정 한 대소 문자 도 일치 해 야 합 니 다.
public interface SingleTransMapper {
SingletransDTO selectSingle(String transNo);
SingletransDTO selectSingleByMultCondition(HashMap param);
SingletransDTO selectSingleByParam(@Param("param1")String transNo, @Param("param2") String commandCode);
}
주해 전 참 방법 을 호출 하 다.
...
//
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
SingletransDTO blog = mapper.selectSingleByParam("642EHDCS899XKF8P","10009");
...
끼어들다
mapper 에 insert 가 삽 입 된 sql 맵 을 추가 합 니 다.
...
insert into se_singletrans(ENTERPRISENUM,TRANSNO,COMMANDCODE,STATE) values(#{EnterpriseNum},#{TransNo},#{CommandCode},#{State})
클래스 에 대응 하 는 insert 방법 추가
public interface SingleTransMapper {
...
int insert(SingletransDTO singletransDTO);
}
SqlSession 은 기본적으로 사 무 를 시작 합 니 다. insert 가 완 료 된 후에 호출
selectSingleByParam
방법 으로 사 무 를 제출 해 야 합 니 다.
try (SqlSession session = sqlSessionFactory.openSession()) {
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
SingletransDTO singletransDTO = new SingletransDTO();
singletransDTO.EnterpriseNum = "QT330001";
singletransDTO.TransNo = "MYBATIS.INSERT";
singletransDTO.CommandCode = "10009";
int count = mapper.insert(singletransDTO);
session.commit();
System.out.println("insert result:" +count);
}catch (Exception exception)
{
System.out.println(exception.getMessage());
}
우리 도
SqlSession
인 자 를 호출 하여 자동 으로 제출 할 수 있 습 니 다.업데이트
mapper 에 update 노드 를 추가 하면 삽입 을 표시 합 니 다. 삽입 할 때 삽 입 된 필드 설정 조건 을 설정 할 수 있 습 니 다. 특정한 조건 을 달성 하려 면 이 필드 를 업데이트 해 야 합 니 다.
...
update se_singletrans
STATE=#{State}
where transno = #{TransNo} and commandCode= #{CommandCode}
클래스 에 대응 하 는 update 방법 추가
public interface SingleTransMapper {
...
int update(SingletransDTO singletransDTO);
}
SqlSession 은 기본적으로 사 무 를 시작 합 니 다. insert 와 마찬가지 로 update 가 끝 난 후에 호출
commit()
방법 으로 사 무 를 제출 해 야 합 니 다.
try (SqlSession session = sqlSessionFactory.openSession()) {
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
SingletransDTO singletransDTO = new SingletransDTO();
singletransDTO.EnterpriseNum = "QT330001";
singletransDTO.TransNo = "MYBATIS.INSERT";
singletransDTO.CommandCode = "10009";
singletransDTO.State = 2;
int count = mapper.update(singletransDTO);
session.commit();
System.out.println("update result:" +count);
}catch (Exception exception)
{
System.out.println(exception.getMessage());
}
삭제
mapper 에 delete 노드 를 추가 하면 삭 제 됩 니 다.
...
delete from se_singletrans where transno = #{TransNo} and commandCode= #{CommandCode}
클래스 에 대응 하 는 delete 방법 을 추가 하면 매개 변수 주석 방식 으로 인 자 를 지정 할 수 있 습 니 다.
public interface SingleTransMapper {
...
int delete(@Param("TransNo")String transNo, @Param("CommandCode") String commandCode);
}
SqlSession 은 기본적으로 사 무 를 시작 합 니 다. delete 가 끝 난 후에
SqlSession openSession(boolean autoCommit)
방법 으로 사 무 를 제출 해 야 합 니 다.
try (SqlSession session = sqlSessionFactory.openSession()) {
SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
int count = mapper.delete("MYBATIS.INSERT","10009");
session.commit();
System.out.println("delete result:" +count);
}catch (Exception exception)
{
System.out.println(exception.getMessage());
}
필드 맵
필드 이름과 데이터베이스 의 필드 이름 이 일치 하지 않 으 면 설정 을 통 해 매 핑 할 수 있 습 니 다.
SqlSession
노드 를 추가 하고 클래스 필드 와 데이터베이스 필드 의 맵 관 계 를 설정 합 니 다. 설정 한 필드 가 없 으 면 기본 MyBatis 의 맵 관계 에 따라 처리 합 니 다. 즉, 필드 이름 과 같은 자동 맵 입 니 다. MyBatis 는 형식 변환 을 시도 합 니 다. 이상 하면 잘못 던 질 수 있 습 니 다.우리 도 commit()
을 통 해 자신의 타 입 프로 세 서 를 사용자 정의 할 수 있다.
TypeHandle 에 대해 서 는 구체 적 으로 설명 하지 않 습 니 다. 관심 있 는 것 은 MyBatis 사용자 정의 프로세서 TypeHandler 를 볼 수 있 습 니 다.
참고 문헌
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.