본문 바로가기

BackEnd/Spring

[코드로 배우는 스프링 웹 프로젝트] java spring 책 입력 기능 만들기

728x90
반응형

1. 책 입력 기능 : 책 정보를 입력하기 위해 기능을 만듭니다.

 

2. 책 매퍼 XML 생성 : 쿼리를 작성하는 XML 파일 생성

   ▷ src/main/resources/ 우클릭 → new → folder → sqlmap 디렉터리 생성


폴더와 XML파일을 아래와 같이 생성합니다.


◎ sqlmap 디렉터리 → new → other → XML 파일 → book_SQL.xml


◎ book_SQL.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="book">
	<insert id="insert" parameterType="hashMap" useGeneratedKeys="true" keyProperty="book_id">
	
		<![CDATA[
		insert into book
		(title, category, price)
		values
		(#{title}, #{category}, #{price})
		]]>
	</insert>
</mapper>

 

 

3. 책 DAO 클래스 생성

   ▷ 매퍼 XML을 실행시키는 DAO(Data Access Object) 클래스를 생성

 

◎ src/main/java → sample.spring.codehows 패키지 우클릭 후 BookDao 클래스 생성

package sample.spring.codehows;

import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class BookDao {
	@Autowired
	SqlSessionTemplate sqlSessionTemplate;
	
	// 책 데이터 입력 쿼리를 실행하는 DAO 메소드
	public int insert(Map<String, Object> map) {
		return this.sqlSessionTemplate.insert("book.insert", map);
	}
}

 

 

4. 책 서비스 클래스 생성

   ▷ 서비스 클래스는 비즈니스 클래스가 위치하는 곳. 스프링MVC 구조에서 서비스 클래스는 컨트롤러와 DAO를 연결하는 역할

 

◎ src/main/java → sample.spring.codehows 패키지 우클릭 후 BookServiceImpl 클래스 생성

package sample.spring.codehows;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService {
	@Autowired
	BookDao bookDao;
	
	// 책 입력 기능 서비스 클래스 메소드 생성
	@Override
	public String create(Map<String, Object> map) {
		int affectRowCount = this.bookDao.insert(map);
		if(affectRowCount == 1) {
			return map.get("book_id").toString();
		}
		return null;
	}
}

 


위와 같이 오류난 부분에 마우스를 올린 후 BookService 인터페이스를 만들어줍니다.

 

 

5. 책 서비스 인터페이스 생성(BookService)

인터페이스의 경로는 src/main/java/sample/spring/codehows 입니다.

package sample.spring.codehows;

import java.util.Map;

public interface BookService {
	// 서비스 인터페이스에 메소드 시그니쳐 추가
	String create(Map<String, Object> map);
}​

 

 

6. 책 입력 기능 컨트롤러 서비스 빈 추가(BookController 클래스 생성)

   ▷ 경로 : src/main/java → sample.spring.codehows  BookController 클래스 생성

package sample.spring.codehows;
import java.util.Map;

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 org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class BookController {
	
	@RequestMapping(value="/create", method=RequestMethod.GET)
	public ModelAndView create() {
		return new ModelAndView("book/create");
	}
	
	// 책 입력 기능 컨트롤러 서비스 빈 추가
	@Autowired
	BookService bookService;
	
	
	// 책 입력 기능 컨트롤러 메소드 추가
	@RequestMapping(value = "/create", method= RequestMethod.POST)
	public ModelAndView createPost(@RequestParam Map<String, Object> map) {
		ModelAndView mav = new ModelAndView();
		
		String bookId = this.bookService.create(map);
		if(bookId == null) {
			mav.setViewName("redirect:/create");
		} else {
			mav.setViewName("redirect:/detail?bookId=" + bookId);			
		}
		return mav;
	}
}

 

 

 

7. 브라우저 접속 : http://localhost:8080/create


값을 입력하고 저장을 누르면 아래와 같이 404에러가 나타나지만 SQL에는 데이터가 입력된 것을 확인할 수 있습니다.


◎ 데이터가 입력된 테이블 확인

 

create jsp파일을 생성한 것을 xml 파일을 통해 데이터베이스 작성하고 연결하면 됩니다.

 

404에러가 나타나지만 MySQL에 데이터는 전달됩니다.

 

데이터 연결해서 페이지 변경되는 예제도 한 번 해볼게요!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형