***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 |