Mybatis
ICE4에서 Mybatis를 사용하기위한 기본 가이드
Application yml
활성화된 profile 의 application yml 파일에 Mybatis mapper classpath가 설정되어 있어야 한다.
src/main/resources/application-{active profile name}.yml
application-dxp-loc.yml
spring:
profiles:
active: dxp-loc
Mybatis mapper classpath 설정
ice-mybatis:
mapper-locations: classpath:mybatis/*.xml
Datasource
접속하고자 하는 DB연결에 필요한 정보를 .json 으로 작성
src/main/resources/schema/profiles/{active profile name}/datasource.json
Field | Description |
|
---|---|---|
typeId | datasource 값 고정 |
|
id | datasource ID |
|
ssl | ssl 여부 | true / false |
dsName | datasource 이름 |
|
jdbcUrl | DB url |
|
dbType | DB 유형 Oracle, MySQL, Maria, MS-SQL 지원 | CODE
|
username | DB user ID |
|
password | DB user Password |
|
[
{
"typeId" : "datasource",
"id" : "mySqlDb",
"ssl" : false,
"dsName" : "Test DB (Maria)",
"jdbcUrl" : "jdbc:mysql://125.131.88.77:3306/ice2",
"dbType" : "maria",
"username" : "ice2",
"password" : "ice2"
},
{
"typeId" : "datasource",
"id" : "oracleDb",
"ssl" : false,
"dsName" : "Test DB (Oracle)",
"jdbcUrl" : "jdbc:oracle:thin:@125.131.88.69:8200:ORCL",
"dbType" : "oracle",
"username" : "ICE",
"password" : "ICE1234"
},
{
"typeId" : "datasource",
"id" : "msDb",
"ssl" : false,
"dsName" : "Test DB (MS)",
"jdbcUrl" : "jdbc:sqlserver://125.131.88.94:1500;databaseName=IPS",
"dbType" : "msSql",
"username" : "icafe13",
"password" : "icafe1234!@"
}
]
Mapper Interface
Mapper 설정 파일(xml)에 있는 SQL 쿼리문을 호출하기 위한 인터페이스
@Mapper annotation 사용
SQL id는 인터페이스에 정의된 메서드명과 동일하게 작성
SQL returnType은 인터페이스의 리턴 타입과 동일하게 작성
src/main/java/net/ion/ice/services/mybatis/mapper/
/src/main/java/net/ion/ice/services/mybatis/mapper/SampleLogicMybatis.java
Mapper XML
MyBatis Mapper XML 파일은 실행할 SQL문을 정의해놓은 파일
namespace에 인터페이스의 전체 경로를 기입
<mapper namespace="net.ion.ice.services.mybatis.mapper.SampleLogicMybatis">
resultType, parameterType : full package + class 명칭을 명시
resultType="org.springframework.util.LinkedCaseInsensitiveMap"
[ 참조 : https://mybatis.org/mybatis-3/ko/sqlmap-xml.html ]
src/main/resources/mybatis/sampleLogicMybatis.xml
Service
datasource에 작성한 DB 접속정보의 id 로 SqlSessionTemplate 생성
mybatisService.getSqlSessionTemplate("oracleDb")
SqlSessionTemplate으로 Mapper Interface를 통해 Mapper xml 쿼리 실행
getSessionTemplate().selectList("net.ion.ice.services.mybatis.mapper.SampleLogicMybatis.list")
[참조 : https://mybatis.org/spring/ko/sqlsession.html#SqlSessionTemplate ]
src/main/java/net/ion/ice/test/SampleLogicMybatisService.java
LogicRepository
NodeType의 repositoryType:logic 유형으로 Mybatis로 SQL 실행 및 반환된 결과를 사용하는데 활용할 수 있다.
serviceName(LogicRepository를 implement하는 서비스명)을 설정
기본적인 CRUD 및 List API 호출시에 해당 서비스를 호출하여 처리된 결과 반환
src/main/resources/schema/test/sampleLogicMybatisSchema.json
@Service annotation 설정 : nodeType의 serviceName과 동일
@Service("sampleLogicMybatisService")
src/main/java/net/ion/ice/test/SampleLogicMybatisService.java