반응형
1. MariaDB에 테이블 생성 및 데이터 추가
2. spring프로젝트를 열고, build.gradle에 dependency 추가
https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client
https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
위 링크에서 원하는 버전을 클릭하고 gradle(short)를 복사해서 붙여넣는다.
(반드시 gradle 코끼리모양 꼭 눌러주기!)
📄 build.gradle
....
dependencies {
implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.4'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
}
.....
3. 폴더구성
sampleproject
├─ src
│ └─ main
│ ├─ java
│ │ └─ com
│ │ └─ study
│ │ ├─ controller
│ │ │ └─ Controller.java
│ │ ├─ domain
│ │ │ └─ Member.java
│ │ ├─ mapper
│ │ │ └─ Mapper.java
│ │ └─ SampleProjectApplication.java
│ └─ resources
│ ├─ mybatis
│ │ └─ XmlMapper.xml
│ └─ application.yml
└─ build.gradle
4. resources / application.yml에 설정 추가
spring:
datasource:
url: jdbc:mariadb://localhost:3306/접속세션명
driver-class-name: org.mariadb.jdbc.Driver
username: 접속자명
password: 접속자의 비밀번호
mybatis:
type-aliases-package: com.study.domain # entity가 존재하는 경로작성.
mapper-locations: mybatis/**.xml # XmlMapper.xml이 존재하는 경로작성.
type-aliases-package를 생략하면 XmlMapper.xml의 resultType을 작성할 때 entity의 패키지까지 다 작성해주어야한다.
5. java / com / study / domain / Member.java 작성
package com.study.domain;
@Data
public class Member {
private Long id;
private String email;
private String name;
private String password;
public Member(){
}
public Member(String email, String name, String password){
this.email = email;
this.name = name;
this.password = password;
}
}
6. java / com / study / mapper / Mapper.java 작성
package com.study.mapper;
@Mapper
public interface Mapper {
//annotation방식
@Select("select * from member")
public List<Member> getList();
//xml방식
List<Member> getList2();
}
Mapper는 반드시 인터페이스로 선언해주어야하고, @Mapper어노테이션을 붙어야한다.
7. resources / mybatis / XmlMapper.xml 작성
<?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.study.mapper.Mapper">
<select id="getList2" resultType="Member">
select * from member
</select>
</mapper>
namespace는 Mapper인터페이스의 패키지명까지 포함해서 작성
resultType은 application.yml에서 type-aliases-package으로 지정해주었기때문에 클래스명만 기재하는 것으로 가능.
만약 type-aliases-package가 생략되었으면 com.study.domain.Member로 작성해야한다
8. java / com / study / controller / Controller.java 작성
package com.study.controller;
@Controller
public class MemberController {
@Autowired private Mapper mapper;
@GetMapping("/mybatisAnnotation")
@ResponseBody
public List<Member> memberList(){
return mapper.getList();
}
@GetMapping("/mybatisXml")
@ResponseBody
public List<Member> memberList2(){
return mapper.getList2();
}
}
9. 실행하기
localhost:8080/mybatisAnnotation
localhost:8080/mybatisXml
둘다 실행완료!
반응형
'Backend' 카테고리의 다른 글
[MyBatis] String을 넘겼을때 Out of range value for column 오류 해결..? (0) | 2022.01.25 |
---|---|
[MyBatis] 객체 안에 리스트, 1:N 관계 데이터 가져오기 (feat. ResultMap, Association, Collection) (0) | 2022.01.20 |
홈페이지 최초접속 시 url에 jsessionid 자동으로 안붙게하기 (0) | 2021.12.20 |
Cookie와 Session, 그리고 Token (0) | 2021.12.09 |
Spring Validation 정리 (0) | 2021.12.08 |