-
Spring MVC - MyBatis Java 설정Spring/Spring MVC 2022. 1. 4. 01:08728x90반응형
MyBatis
- Java 언어를 이용하여 데이터 베이스를 연동하는 기술을 JDBC라 하는데 이 JDBC를 보다 쉽게
이용할 수 있도록 설계된 라이브러리이다. - Spring Framework에서 이용할 수 있도록 라이브러리를 제공한다.
더보기<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc11</artifactId>
<version>21.3.0.0</version>
</dependency>- 오라클 JDBC 드라이버
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.9.0</version></dependency>
- 커넥션 풀 라이브러리
- JDBC 이용해 생성한 Connection을 효율적으로 활용하기 위해 Connection 객체를 관리하는 것을
DBCP의 개념으로 본다.
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.8</version>
</dependency>- MyBatis라이브러리
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>- Spring과 MyBatis를 연결시켜주는 라이브러리
db.properties 생성
db.classname = oracle.jdbc.OracleDriver db.url = jdbc:oracle:thin:@localhost:1521/xepdb1 db.username = 아이디 db.password = 비밀번호
BasicDataSource Bean 정의
BasicDataSource는 접속 정보를 관리하는 객체이다. (ServletAppContext.java 에 정의해준다.)
▼ ServletAppContext.java
// BasicDataSource에 쓰일 // db.properties 파일에 저장한 데이터를 가져옴 @Value("${db.classname}") private String db_classname; @Value("${db.url}") private String db_url; @Value("${db.username}") private String db_username; @Value("${db.password}") private String db_password; // ..... // // 데이터베이스 접속 정보 관리 @Bean public BasicDataSource dataSource() { BasicDataSource source = new BasicDataSource(); source.setDriverClassName(db_classname); source.setUrl(db_url); source.setUsername(db_username); source.setPassword(db_password); return source; }
SqlSessionFactory Bean 정의
SqlSessionFactory는 접속, 쿼리 관리 등을 하는 객체이다. (ServletAppContext.java 에 정의해준다.)
▼ ServletAppContext.java
// 쿼리문과 접속 관리하는 객체 @Bean public SqlSessionFactory factory(BasicDataSource source) throws Exception{ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(source); SqlSessionFactory factory = factoryBean.getObject(); return factory; }
Mapper Bean 정의
Mapper는 쿼리문 실행을 하는 객체이다. (ServletAppContext.java 에 정의해준다.)
▼ ServletAppContext.java
// 쿼리문 실행을 위한 객체 @Bean public MapperFactoryBean<MapperInterface> test_mapper(SqlSessionFactory factory) throws Exception{ MapperFactoryBean<MapperInterface> factoryBean = new MapperFactoryBean<MapperInterface>(MapperInterface.class); factoryBean.setSqlSessionFactory(factory); return factoryBean; }
Mapper 역할을 하는 Interface 정의
위 MapperFactoryBean에 쓰일 MapperInterface를 정의한다. database 패키지를 만들어 관리해주자
▼ MapperInterface.java (kr.co.database)
public interface MapperInterface { @Insert("insert into spring_mvc_table (data1, dat2, data3) values (#{data1}, #{data2}, #{data3}") void insert_data(DataBean dataBean); @Select("select data1, data2, data3 from spring_mvc_table") List<DataBean> select_data(); }
insert_data를 호출되면 해당 쿼리문을 데이터베이스에 전달해주고, #{data1}, #{data2}, #{data3}는
해당 DataBean property에 값들이 세팅된다.DB에 데이터를 저장하고 가져올 Bean 정의
property는 테이블의 컬럼명과 같아야 하는 점을 주의해라
public class DataBean { private String data1; private String data2; private String data3; public String getData1() { return data1; } public void setData1(String data1) { this.data1 = data1; } public String getData2() { return data2; } public void setData2(String data2) { this.data2 = data2; } public String getData3() { return data3; } public void setData3(String data3) { this.data3 = data3; } }
Controller에서 Mapper 주입받아 사용
@Controller public class testController { @Autowired MapperInterface mapper1; @GetMapping("/input_data") public String input_data() { return "input_data"; } @PostMapping("/input_pro") public String input_pro(DataBean dataBean) { mapper1.insert_data(dataBean); return "input_pro"; } @GetMapping("/read_data") public String read_data(Model model) { List<DataBean> list = mapper1.select_data(); model.addAttribute("list", list); return "read_data"; } }
@Autowired
MapperInterface mapper1;
- Mapper 주입
mapper1.insert_data(dataBean);
- mapper1에 insert_data 메서드 호출
List<DataBean> list = mapper1.select_data();
- mapper1에 select_data 메서드 호출데이터 베이스에서 가져온 데이터들을 JSP에 출력
<c:forEach var='obj' items='${list }'> ${obj.data1 }, ${obj.data2 }, ${obj.data3 }<br/> </c:forEach>
728x90반응형'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - MyBatis XML 설정 (0) 2022.01.04 Spring MVC - oracle db 연결 실패 문제 (Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:) (0) 2022.01.04 Spring MVC - 예외처리 (0) 2022.01.04 Spring MVC - Interceptor (0) 2022.01.03 Spring MVC - Validator 커스터마이징 (0) 2022.01.03 - Java 언어를 이용하여 데이터 베이스를 연동하는 기술을 JDBC라 하는데 이 JDBC를 보다 쉽게