설정 순서
1. build.gradle 에 Mariadb, Mybatis, log4jdbc 라이브러리 추가
(log4jdbc는 쿼리 로그를 보기위한 것이므로 생략 가능)
2. application.properties 에 DB 접속 정보 추가
3. Mapper.xml, Mapper.java, Service.java, Controller.java 코드 작성
MVC 구조를 봤을 때에는 Controller.java -> Service.java -> Mapper.java -> Mapper.xml 순이지만
코딩은 Mapper.xml -> Mapper.java -> Service.java -> Controller.java 순으로 작성한다.
- build.gradle 파일에서 dependencies 안에 mariadb, mybatis, log4jdbc 라이브러리를 추가한다.
// MYSQL
implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.4'
// MyBatis
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
// log4jdbc
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
- application.properties 에 DB 접속정보와 mybatis 설정을 추가한다.
spring.datasource.url=jdbc:log4jdbc:mariadb://아이피:포트/DB명?serverTimezone=UTC&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.username=아이디
spring.datasource.password=패스워드
mybatis.mapper-locations=mybatis/**/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
- mybatis.mapper-locations : mybatis 작성 xml의 경로를 지정해 준다.
전체 경로는 src/main/resources/mybatis/**/*.xml 이다
* (애스터리스크) 는 모든 문자열을 의미하는 것으로 동일한 폴더 구조에 어떤 문자도 허용한다는 뜻이다
ex) /mybatis/sample/sampleMapper.xml (가능)
/mybatis/test/testMapper.xml (가능)
/mybatis/test/test2/testMapper.xml (불가능) - test 또는 test2 가 삭제되어야 허용
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.sample.mapper.SampleMapper">
<select id="selectTest" resultType="string">
select 'test'
</select>
</mapper>
- SampleMapper.xml 작성
- mapper-namespace : mybatis 의 SQL문과 Mapper.java 를 연결해주기 위한 방법으로 namespace 에는 연결할 Mapper.java 의 클래스명을 기입해 준다.
- <select> 태그 : 실행할 SQL을 작성하는 영역으로 DML(데이터조작어)에 따라 태그가 달라진다.
SELECT 문 : <select></select>
UPDATE 문 : <update></update>
INSERT 문 : <insert></insert>
DELETE 문 : <delete></delete>
- 테스트로 'test' 문자를 조회하는 SQL 작성
package com.example.demo.sample.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SampleMapper {
// 샘플 조회
String selectTest();
}
- SampleMapper.java 작성
- SampleMapper.xml 호출할 때 사용
SampleMapper.xml 에서 namespace 에 선언해 준 Mapper.java 를 호출한다
package com.example.demo.sample.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.sample.mapper.SampleMapper;
@Service
public class SampleService {
@Autowired
private SampleMapper sampleMapper;
public String selectTest() {
return sampleMapper.selectTest();
}
}
- SampleService.java 작성
package com.example.demo.sample.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.demo.sample.service.SampleService;
@Controller
public class SampleController {
@Autowired
private SampleService sampleService;
@RequestMapping(value="/index", method = {RequestMethod.POST, RequestMethod.GET})
public String index() {
System.out.println("인덱스 페이지 호출");
String test = sampleService.selectTest();
System.out.println("조회 테스트 : "+test);
return "index";
}
}
- SampleController.java 작성
- 서버 재시작 후 http://localhost:8080/index 호출
- 콘솔창에 호출한 값이 찍히면 정상
'스프링부트+gradle+JSP+STS(Eclipse)' 카테고리의 다른 글
스프링부트 부트스트랩(bootstrap) 적용하기 (0) | 2022.05.20 |
---|---|
스프링부트 인터셉터(Interceptor) 설정 (0) | 2022.05.09 |
스프링부트 tiles(타일즈) 설정 (2) | 2022.05.09 |
Mysql 사용자 계정 생성 (0) | 2022.05.06 |
sts(spring tool suit) 에서 스프링부트+gradle+jsp 세팅 (0) | 2022.04.25 |
댓글