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

 

Field

Description

 

typeId

datasource 값 고정

 

id

datasource ID

 

ssl

ssl 여부

true / false

dsName

datasource 이름

 

jdbcUrl

DB url

 

dbType

DB 유형

Oracle, MySQL, Maria, MS-SQL 지원

CODE

  • oracle

  • mysql

  • maria

  • mssql

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