목록개발공부/Spring (23)
개발자 도전기
MyBatis란?자바 오프젝트와 SQL 사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping) 프레임워크입니다JDBC를 통해 관계형 데이터베이스에 엑세스하는 작업을 캡슐화하고 기존 JDBC의 중복작업을 간소화해줍니다 MyBatis 사용 방법Mapper 인터페이스에 @Mapper 어노테이션을 붙입니다. Mapper 인터페이스를 통해 SQL 쿼리를 실행할 수 있습니다.Mapper 인터페이스의 메소드에 @Select, @Delete, @Insert, @Update 등의 어노테이션을 붙여 실행할 SQL 쿼리를 입력합니다@Mapperpublic interface Mapper02 { } @RequiedAtgsConstructor 어노테이션으로 생성된 생성자로 컨트롤러에 Mapper..
객체의 의존성A 클래스가 B 클래스의 객체를 생성해 사용하는 것을 'A는 B에 의존한다'고 말한다public class A{ public static void main(String[] args){ B b = new B(); b.action(); }}class B { public void action(){ System.out.println("A는 B에 의존합니다"); }} 제어의 역전(Inversion Of Control)스프링 컨테이너는 사용자가 new 생성자를 사용해서 객체를 생성하지 않고도 객체가 다른 객체를 사용할 수 있도록(의존할 수 있도록) 한다. 스프링은 객체를 빈으로 생성하고 관리한다. 이때 제어권이 사용자에게서 프레임워크로 이동되는 것을 제어의 역전(..
UPDATE # UPDATE 테이블명 # SET 컬럼명 = 바꿀값, 컬렴명 = 바꿀값 ,,, # WHERE 레코드의 조건 UPDATE Customers SET Address = 'STARK TOWER', City = '맨하탄', PostalCode = '12345' WHERE CustomerID = 10; # WHERE 생략하면 전체 레코드 바뀜 UPDATE Customers SET Country = 'uk' # 기존 값 사용 가능 UPDATE Products SET Price = Price * 2 WHERE ProductID = 1; UPDATE 사용해서 데이터 수정하기 어떤 값을 수정할 지 알 수 없기 때문에 새로운 데이터는 수정하고 기존의 데이터는 덮어씌우는 방식으로 수정 @Controller @R..
DELETE DELET FROM 테이블명 WHERE 조건 😵 WHERE을 쓰지 않으면 해당 테이블의 모든 레코드가 지워지니 주의 DELETE FROM Employees WHERE EmployeeID = 2039; DELETE FROM Employees WHERE FirstName = 'natasha'; DELETE 사용해서 데이터 삭제하기 @Controller @RequestMapping("main29") public class Controller29 { @Autowired private DataSource dataSource; // 삭제할 데이터 조회 (GET) @GetMapping("sub1") public void method1(Integer id, Model model) throws Excepti..
INSERT INTO INSERT INTO 해당테이블명 (컬럼명 ..) 데이터가 하나일 때는 VALUE, 여러 개일때는 VALUES를 사용하여 데이터를 나열한다 # INSERT INTO 테이블명 (컬럼명...) # VALUES (데이터들...) INSERT INTO Employees (LastName, FirstName, BirthDate, Photo, Notes) VALUES ('captain', 'steve', '1990-01-01', 'pic1', 'america'); 활용 예제 @Controller @RequestMapping("main28") public class Controller28 { @Autowired private DataSource dataSource; // main28/sub1으로..

JDBC란? JDBC(Java Database Connectively)는 Java 기반 어플리케이션의 데이터를 데이터베이스를 연결시켜주는 자바 API이다. JDBC는 데이터베이스 제작업체에서 제공하는 드라이버를 사용하여 데이터베이스에 엑세스할 수 있도록 한다 JDBC는 3가지 기능을 표준 인터페이스로 정의하여 제공한다 java.sql.Connection - 연결 java.sql.Statement - SQL을 담은 내용 java.sql.ResultSet - SQL 요청 응답 JDBC의 동작 흐름 JDBC 드라이버 데이터베이스와의 통신을 담당하는 인터페이스 Oracle, MySQL 등과 같은 데이터베이스에 알맞은 JDBC 드라이브를 구현하여 제공 JDBC 드라이버의 구현체를 이용하여 특정 벤더의 데이터베이스..
게시판 구현 LIMIT(?,10)을 사용하여 DB의 Employees를 한 페이지당 10명씩 보여준다 페이지는 10개 단위로 출력한다 맨 처음에는 1 페이지가 출력된다 다음 버튼을 누르면 (해당 라인 첫번째 페이지 + 10)인 페이지로 이동한다 ( 3 -> (다음) -> 11페이지) 이전 버튼을 누르면 (해당 라인 첫번째 페이지 - 10)인 페이지로 이동한다 ( 27 -> (이전) -> 21페이지) 제일 처음 줄에서는 이전 버튼이 보이지 않는다 마지막 줄에서는 다음 버튼이 보이지 않는다 맨앞 버튼을 누르면 1페이지로 이동한다 1페이지에서는 맨앞 버튼이 보이지 않는다 맨뒤 버튼을 누르면 가장 마지막 페이지로 이동한다 가장 마지막 페이지에서는 맨뒤 버튼이 보이지 않는다 @Autowired private Da..
Redirect란? 사용자가 처음 요청한 URL이 아닌, 다른 URL로 보내는 것을 말한다 Spring에서 컨트롤러의 리턴값에 redirect: 키워드를 붙이면 3xx번대의 HTTP redirection 응답을 받았을 때 Location 헤더에 있는 값으로 다시 요청을 보낸다 @GetMapping("sub2") public String sub2() { // 리다이렉션 시 main22/sub1로 이동 return "redirect:/main22/sub1"; } RedirectAttributes 리다이렉트시 사용자가 기존에 요청했던 데이터는 사라진다. 따라서 리다이렉트가 되어도 데이터가 유지되려면 RedirectAttributes의 인스턴스에 데이터를 저장해주어야 한다 addAttribute 쿼리스트링을 통..
PreparedStatement JDBC의 인터페이스 중 하나이다 SQL 쿼리의 일부를 동적으로 바꿀 수 있다 입력 매개변수를 안전하게 처리할 수 있다 - setString() 메소드 사용 Statement가 아닌 PreparedStatement를 사용하는 이유 인자값으로 전달이 가능하다 가독성이 높다 SQL Injection을 방지할 수 있다 PreParedStatement 사용 방법 쿼리문의 매개변수 자리에 ?를 넣어준다 String sql = """ SELECT * FROM Products WHERE ProductName = ? """; setString()으로 ? 자리를 매개변수로 대체한다 여기서 setString()의 첫번째 인자값은 ?의 순서, 해당 ? 위치에 대입할 값이다 Connection..
핸들러란? 스프링에서 @Controller 어노테이션이 붙은 클래스를 컨트롤러라고 한다. 이 컨트롤러 안에서 요청을 처리하는 메소드가 핸들러이다 핸들러 매핑 @RequestMapping @RequesstMapping 어노테이션을 사용하면 요청 uri을 핸들러에 매핑시킬 수 있다. // /sub7 경로 요청에 매핑 @RequestMapping("sub7") public void handler(){ } Http Method HTTP는 GET, POST, PUT , PATCH, DELETE 와 같은 요청 메소드를 가진다. 특정 요청 메소드에만 비즈니스 로직을 실행할 수 있도록 @RequstMapping에 설정할 수 있다. @RequestMapping(method = RequestMethod.GET) 와 같이 ..