SpringBoot 는 Spring-Data-Jpa 를 사용 하여 CRUD 작업 을 실현 합 니 다.
10730 단어 SpringBootSpringDataJpaCRUD
여기 서 우 리 는 먼저 application.properties 를 application.yml 주류 형식 으로 수정 합 니 다.
내용 도 yml 규범 형식 으로 변경:
server:
port: 8888
context-path: /
helloWorld: spring Boot\u4F60\u597D
msyql:
jdbcName: com.mysql.jdbc.Driver
dbUrl: jdbc:mysql://localhost:3306/db_diary
userName: root
password: 123456
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_book
username: root
password: passwd
jpa:
hibernate.ddl-auto: update
show-sql: true
yml 형식 에 주의 점 이 있 습 니 다.그리고 저희 가 context-path 를 개발 용 으로 바 꾸 었 습 니 다.
Bookdao 인 터 페 이 스 를 먼저 쓰 겠 습 니 다.
package com.hik.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.hik.entity.Book;
/**
* Dao
* @author jed
*
*/
public interface BookDao extends JpaRepository<Book, Integer>{
}
JpaRepository 실현 을 요구 합 니 다.JpaRepository 는 Paging AndSorting Repository 를 계승 하 는 것 이 고,Paging AndSorting Repository 는 CrudRepository 를 계승 하 는 것 입 니 다.CrudRepository 는 실체 첨삭 검사 작업 을 실현 했다.
/*
* Copyright 2008-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.repository;
import java.io.Serializable;
/**
* Interface for generic CRUD operations on a repository for a specific type.
*
* @author Oliver Gierke
* @author Eberhard Wolff
*/
@NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
/**
* Saves a given entity. Use the returned instance for further operations as the save operation might have changed the
* entity instance completely.
*
* @param entity
* @return the saved entity
*/
<S extends T> S save(S entity);
/**
* Saves all given entities.
*
* @param entities
* @return the saved entities
* @throws IllegalArgumentException in case the given entity is {@literal null}.
*/
<S extends T> Iterable<S> save(Iterable<S> entities);
/**
* Retrieves an entity by its id.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@literal null} if none found
* @throws IllegalArgumentException if {@code id} is {@literal null}
*/
T findOne(ID id);
/**
* Returns whether an entity with the given id exists.
*
* @param id must not be {@literal null}.
* @return true if an entity with the given id exists, {@literal false} otherwise
* @throws IllegalArgumentException if {@code id} is {@literal null}
*/
boolean exists(ID id);
/**
* Returns all instances of the type.
*
* @return all entities
*/
Iterable<T> findAll();
/**
* Returns all instances of the type with the given IDs.
*
* @param ids
* @return
*/
Iterable<T> findAll(Iterable<ID> ids);
/**
* Returns the number of entities available.
*
* @return the number of entities
*/
long count();
/**
* Deletes the entity with the given id.
*
* @param id must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}
*/
void delete(ID id);
/**
* Deletes a given entity.
*
* @param entity
* @throws IllegalArgumentException in case the given entity is {@literal null}.
*/
void delete(T entity);
/**
* Deletes the given entities.
*
* @param entities
* @throws IllegalArgumentException in case the given {@link Iterable} is {@literal null}.
*/
void delete(Iterable<? extends T> entities);
/**
* Deletes all entities managed by the repository.
*/
void deleteAll();
}
BookController 클래스 를 하나 더 쓰 겠 습 니 다.
package com.hik.Controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.hik.dao.BookDao;
import com.hik.entity.Book;
/**
* Book
* @author jed
*
*/
@Controller
@RequestMapping("/book")
public class BookController {
@Resource
private BookDao bookDao;
/**
*
* @return
*/
@RequestMapping(value="/list")
public ModelAndView list() {
ModelAndView mav = new ModelAndView ();
mav.addObject("bookList", bookDao.findAll());
mav.setViewName("bookList");
return mav;
}
/**
*
* @param book
* @return
*/
@RequestMapping(value="/add", method=RequestMethod.POST)
public String add(Book book) {
bookDao.save(book);
return "forward:/book/list";
}
@GetMapping(value="/preUpdate/{id}")
public ModelAndView preUpdate(@PathVariable("id") Integer id) {
ModelAndView mav = new ModelAndView();
mav.addObject("book", bookDao.getOne(id));
mav.setViewName("bookUpdate");
return mav;
}
/**
*
* @param book
* @return
*/
@PostMapping(value="/update")
public String update(Book book) {
bookDao.save(book);
return "forward:/book/list";
}
/**
*
* @param id
* @return
*/
@RequestMapping(value="/delete",method = RequestMethod.GET)
public String delete(Integer id) {
bookDao.delete(id);
return "forward:/book/list";
}
}
CRUD 가 이 루어 졌 습 니 다.여기@GetMapping(value="xxx")이 유사 합 니 다. @RequestMapping(value="xxx",method=RequestMethod.GET)
그리고@PostMapping(value="xxx")과 유사 합 니 다. @RequestMapping(value="xxx",method=RequestMethod.POST)
bookList.ftl 전시 데이터
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> </title>
</head>
<body>
<a href="/bookAdd.html" rel="external nofollow" > </a>
<table>
<tr>
<th> </th>
<th> </th>
<th> </th>
</tr>
<#list bookList as book>
<tr>
<td>${book.id}</td>
<td>${book.bookName}</td>
<td>
<a href="/book/preUpdate/${book.id}" rel="external nofollow" > </a>
<a href="/book/delete?id=${book.id}" rel="external nofollow" > </a>
</td>
</tr>
</#list>
</table>
</body>
</html>
bookadd.html 도서 추가 페이지
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> </title>
</head>
<body>
<form action="book/add" method="post">
:<input type="text" name="bookName"/><br/>
<input type="submit" value=" "/>
</form>
</body>
</html>
bookUpdate.ftl 도서 수정 페이지
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> </title>
</head>
<body>
<form action="/book/update" method="post">
<input type="hidden" name="id" value="${book.id}"/>
:<input type="text" name="bookName" value="${book.bookName}"/><br/>
<input type="submit" value=" "/>
</form>
</body>
</html>
브 라 우 저 요청:http://localhost:8888/book/list입장:
"책 추가"를 누 르 십시오:
입장:
우 리 는 마음대로 이름 을 입력 하고"제출"을 클릭 합 니 다.
방금 추 가 된 테스트 도 서 를 선택 하여 수정 하 다.
목록 페이지 로 전송 하고"수정"을 누 르 십시오.
수정 페이지 에 들 어가 서 이름 을 수정 하고"제출"을 클릭 합 니 다.
테스트 도 서 를 선택 하여 삭제 작업 을 진행 합 니 다.
목록 페이지 로 다시 전송 합 니 다."삭제"를 누 르 면,
데 이 터 를 삭제 한 후 목록 페이지 로 다시 전송 하기;
OK,완성!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.