Myibatis 와 spring 의 통합 (사무 설정 과) 2
6275 단어 spring
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/config/ibatisConfig.xml" />
<property name="typeAliasesPackage" value="com.ibatis.model" />
<property name="mapperLocations" value="classpath*:com/ibatis/mapper/*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ibatis.dao" />
</bean>
SqlSession Factory 는 DataSource 가 필요 합 니 다. 이것 은 임의의 DataSource 일 수 있 습 니 다. 설정 은 다른 Spring 데이터 베 이 스 를 설정 하 는 것 과 같 습 니 다. SqlSession Factory Bean 은 Spring 의 Factory Bean 인 터 페 이 스 를 실 현 했 습 니 다. 이것 은 Spring 이 최종 적 으로 만 든 bean 은 Session Factory Bean 자체 가 아니 라 공장 류 의 getObject () 가 되 돌아 오 는 방법 에 대한 결 과 를 설명 합 니 다.이 경우 Spring 은 애플 리 케 이 션 이 시 작 될 때 SqlSession Factory 대상 을 만 든 다음 SqlSession Factory 라 는 이름 으로 저장 합 니 다. 일반적인 MyBatis - Spring 용법 에 서 는 SqlSession Factory Bean 이나 이에 대응 하 는 SqlSession Factory 를 직접 사용 할 필요 가 없습니다.반면, session 공장 은 apperFactory Bean 이나 SqlSession Dao Support 를 확장 한 DAO SqlSession Factory 의 몇 가지 주요 속성 에 주입 된다. 하나의 필수 속성 이 있 는데 그것 이 바로 JDBC 의 DataSource 이다.이것 은 임의의 DataSource 일 수 있 습 니 다. 그 설정 은 다른 Spring 데이터베이스 와 연결 되 어야 합 니 다.일반적인 속성 은 configLocation 입 니 다. MyBatis 의 XML 프로필 경 로 를 지정 하 는 데 사 용 됩 니 다.기본 적 인 MyBatis 설정 이 바 뀌 어야 한다 면 이것 이 필요 한 곳 입 니 다.보통 이것 은 < settings > 나 < type: Aliases > 의 부분 입 니 다.이 프로필 은 완전한 MyBatis 설정 이 필요 하지 않 습 니 다.임의의 환경, 데이터 원본, MyBatis 의 사무 관리 자 는 SqlSession Factory Bean 을 무시 합 니 다. 이 값 을 사용 하여 MyBatis 의 Environment 를 만 들 때 필요 합 니 다.yBatis 맵 기 XML 파일 이 맵 기 류 와 같은 경로 에서 존재 하지 않 는 다 면 다른 설정 파일 이 필요 한 이 유 는 바로 그것 입 니 다.이 설정 을 사용 하면 두 가지 선택 이 있 습 니 다.첫 번 째 는 MyBatis 의 XML 설정 파일 에서 < mappers > 부분 을 사용 하여 클래스 경 로 를 지정 하 는 것 입 니 다.두 번 째 는 공장 bean 의 mapperLocations 속성 을 사용 합 니 다.속성 mapperLocations 는 자원 위치의 list 를 사용 합 니 다.이 속성 은 MyBatis 의 XML 맵 파일 의 위 치 를 지정 하 는 데 사용 할 수 있 습 니 다.이 값 은 앤 트 스타일 을 포함 하여 디 렉 터 리 에 있 는 모든 파일 을 불 러 오 거나 기본 경로 에서 모든 경 로 를 재 귀적 으로 검색 할 수 있 습 니 다.classpath *: com / ibatis / mapper / *. xml 속성 type: Aliases Package 는 이름 으로 볼 때 [형식의 별명] 가방 입 니 다. 이 가방 아래 의 종 류 를 기본 값 으로 별명 을 만 듭 니 다. 아 날로 그 전 칭 입 니 다. 이것 을 설정 한 후에 나중에 우리 의 맵 파일 * Mapper. xml 에서 사용 할 수 있 습 니 다. 사용 하지 않 아 도 됩 니 다. resultType = "com. *. Person" 같은 것 은 클래스 이름 을 직접 사용 하면 됩 니 다. resultType = "Person". 속성 configLocation 는 mybatis - config. xml 파일 (파일 이름 은 임의로 사용 가능) 을 불 러 와 Myibatis 의 기본 속성 과 핵심 설정 을 수정 하 는 데 사 용 됩 니 다. 예 를 들 어 저 희 는 저장 과정 에서 돌아 오 는 커서 [CURSOR] 를 사용 합 니 다.그러나 우 리 는 이 커서 를 List < map < String, Object > 의 집합 으로 바 꾸 고 싶 습 니 다. 그러면 저 는 BaseTypeHandler 라 는 종 류 를 계승 하여 처리 할 수 있 습 니 다. 방법 은 다음 과 같 습 니 다. my batis - config. xml 에 추가 할 수 있 습 니 다.
<typeHandlers>
<typeHandler javaType="Map" jdbcType="CURSOR" handler="com.ibatis.typeHandler.ResultSetTypeHandler"/>
</typeHandlers>
그러면 ResultSetTypeHandler 라 는 종 류 는 구체 적 인 실현 코드 입 니 다. 다음 과 같 습 니 다.
package com.ibatis.typeHandler;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
/**
*
* @author wujj
*/
public class ResultSetTypeHandler extends BaseTypeHandler<List<Map<String, Object>>> {
@Override
public List<Map<String, Object>> getNullableResult(ResultSet arg0, String arg1) throws SQLException {
return null;
}
@Override
public List<Map<String, Object>> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
ResultSet rs = (ResultSet) cs.getObject(columnIndex);
if (!rs.isClosed()) {
ResultSetMetaData data = rs.getMetaData();
int columnCnt = data.getColumnCount();
while (rs.next()) {
Map<String, Object> rowMap = new HashMap<String, Object>();
for (int i = 1; i <= columnCnt; i++) {
String colName = data.getColumnName(i).toLowerCase();
Object colValue = rs.getObject(colName);
// TODO
rowMap.put(colName, colValue == null ? StringUtils.EMPTY : colValue.toString());
}
result.add(rowMap);
}
}
return result;
}
@Override
public void setNonNullParameter(PreparedStatement arg0, int arg1, List<Map<String, Object>> arg2, JdbcType arg3) throws SQLException {
}
}
어떤 Service 가 update 를 실행 할 때 차단 하 는 등 차단기 와 유사 한 기능 을 추가 할 수도 있 습 니 다.
오늘 은 여기까지 쓰 겠 습 니 다. 이것 은 sqlSession Factory 의 주요 속성 에 대한 소개 입 니 다. 내일 계속...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.