mybatis 연동하기
1. 이클립스(STS)에서 New -> Spring Starter Project 를 클릭 한 후 아래와 같이 창을뜨면 Name을 설정한다.
2. Next를 눌러서 JDBC, Lombok, MyBatis, MySQL, Web을 메이븐을 추가한다.
3. 설정이 완료되면 pom.xml에 들어가 아래와 같은 디펜던시 추가
- jstl : jsp를 쓰기 위한 라이브러리
- mybatis : mybatis 라이브러리
- mybatis-spring : spring jdbc연결과 관련된 라이브러리
4. application.properties 수정
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/DB명?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8
spring.datasource.username=아이디
spring.datasource.password=비밀번호
5. Mysql DB 테이블 생성, 칼럼 추가 및 데이터 삽입
6. TestVO 생성
@Data
public class TestVO {
String id;
String name;
String phone;
}
7. src/main/resources 에 mapper폴더 추가 및 Mapper.xml 파일 생성
<mapper namespace="com.example.mapper.Mapper">
<select id="test" resultType="java.util.HashMap">
select * from user
</select>
</mapper>
8. Mapper.java 생성
public interface Mapper {
public List test() throws Exception;
}
9. Test(처음설정한 이름명)Application.java 수정
@SpringBootApplication
@ComponentScan(basePackages = "com.example.controller") //컨트롤러패키지안 파일들 빈등록 설정
@MapperScan(value={"com.example.mapper"}) // 매퍼 인터페이스 파일이 있는 가장 상위 패키지를 지정하면 된다.
// 세미콜론이나 콤마를 구분자로 사용해서 한개 이상의 패키지를 셋팅할 수 있다. 매퍼는 지정된 패키지에서 재귀적으로 하위 패키지를 모두 검색할 것이다.
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
/*
* sqlSessionFactory 설정
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*Mapper.xml"); // 매퍼xml 클래스패스 지정
sessionFactory.setMapperLocations(res);
return sessionFactory.getObject();
}
}
10. Testcontroller.java 파일 생성
@RestController
public class TestController {
@Autowired // 매퍼 빈 자동 주입
Mapper mapper;
@RequestMapping("/")
public ModelAndView mainView() throws Exception {
ModelAndView mav = new ModelAndView("main"); // 뷰이름
mav.addObject("resultList", mapper.test());
System.out.println(mapper.test());
return mav;
}
}
11. amin.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
mainpage입니다 <br>
${resultList}
</body>
</html>