mySQL CRUD + rambda

***Implement DAO에서 JdbcTemplate을 활용 mySQL에서 CRUD를 구현 할수 있어야한다.

이과정에서 Lambda의 대한 이해가 필요

 

jdbc 세팅 (mySQL)

1.Application_properties

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

2.Porm.xml 수정

		<!-- To compile JSP files 없으면 jsp가 컴파일이 안됨-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

3.Controller 생성

@Controller (어노테이션)선언

4.WEB-INF/jsp

 

Jsp-Controller-Service-Dao(sql)-VO

@Controller

@RequestMapping(“/“)

@GetMapping(“/“)

@PostMapping(“/“)

@ResponseBody

@RequestParam

	public String userAddPost(
//			@RequestParam("name") String name,
//			@RequestParam("phone") String phone,
//			@RequestParam("email") String email
			User u )

@PathVariable

Model m , m.addAttribute(“key”:value)

	@GetMapping("/read/{no}")
	public String read(@PathVariable("no")int no,Model m) {
		User u = svc.read(no);
		m.addAttribute("user",u);

@Service

@Autowired @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등

@Qualifier(“key”) ____ ___

@Autowired 
	public UserService(@Qualifier("mysqlDao") UserDAO dao) {
		this.dao = dao;
	} 
   		/*생성자에서 인터페이스형 객체 
		 *Qualifier(이름) 인터페이스를 구현한 많은 클래스중 하나를 선택하기 쉬움
		 *실행하려면 생성자를 만들어야한다.
		 *이름을 가지고 (컴포넌트)클래스를 찾는 어노테이션 퀄리파이어
		 *의 객체를 dao에 입력 왜냐면 UserDAO가 인터페이스
		 */

Interface DAO

public interface UserDAO {
   //   ^^^^^^^^
   boolean insert(User u); //User u 를insert
   int insertAndGetId(User u);
   //인서트하고 ID(primary key)를 가져온다. 관계형(RDBMS_relational data base manage system)
   User select(int num); 
   //date 추출 num 으로 한행만 추출 (primary key활용) 한행을 객체로 매핑필요
   //키를 가지고 셀렉 하면 객체가 나옴
   boolean update(User u);
   //한행을 개조 (갱신,내용변경)
   //새 데이터를 넣고 불린으로 결과 
   boolean delete(int num);
   //프라이머리 키를 입력하면 삭제결과 리턴
   List<User> getList();
   //여러행을 담아줄 리스트...
  
   //추상메소드를 선언하고 반드시 임플리먼트에서 오버라이드(구현)
}

Implements DAO

@Repository(“______”)

@Repository("mysqlDao")//DI (객체생성시 이 이름을 사용 newX)다오에 붙이는 어노테이션
public class UserMysqlDAO implements UserDAO {

JdbcTemplate jdbcTemplate__jdbc 사용

JdbcTemplate jdbcTemplate;
	@Override
	public boolean insert(User u) {
		
		String sql = "INSERT INTO user VALUES(NULL,?,?,?)";
		int rows = jdbcTemplate.update(sql,
				u.getName(),u.getPhone(),u.getEmail());
		//preparedstatement
		//스프링이 연결,문장실행, 결과도출(행수 리턴), 
		//오토와이어드 필요 jdbcTemplate
		return rows>0;
	}

 

 

람다식 Lambda

	@Override
  public int insertAndGetId(User u) {
     String sql = "INSERT INTO user VALUES(NULL,?,?,?)";
     KeyHolder keyHolder = new GeneratedKeyHolder();
     jdbcTemplate.update(conn->{
        PreparedStatement pstmt;
        pstmt = conn.prepareStatement(sql, new String[] {"num"});
        pstmt.setString(1, u.getName());
        pstmt.setString(2, u.getPhone());
        pstmt.setString(3, u.getEmail());
        return pstmt;
     }, keyHolder);
     return keyHolder.getKey().intValue();
  }
	@Override
	public List<User> getList() {
		// TODO Auto-generated method stub
		String sql = "SELECT * FROM user";
		return jdbcTemplate.query(sql, (rs,i)->
			new User(rs.getInt(1),rs.getString(2),
					rs.getString(3),rs.getString(4))
					);

 

___코드___

 

GitHub - coderhydra/JavaWeb-BigData

Contribute to coderhydra/JavaWeb-BigData development by creating an account on GitHub.

github.com

 

 

GitHub - coderhydra/JavaWeb-BigData

Contribute to coderhydra/JavaWeb-BigData development by creating an account on GitHub.

github.com

 

 

'자바~하둡' 카테고리의 다른 글

오라클 클라우드 vm 설정  (0) 2022.02.10
mybatis CRUD  (0) 2022.01.21
Spring CRUD(report detail) SQL(jdbc)  (0) 2022.01.19
Spring shoppingcart CRUD (Create , Read, Update)  (0) 2022.01.14
Spring C.R.U.D. shopingbag @PathVariable  (0) 2022.01.13
Comment