首页 > 编程 > Java > 正文

SpringBoot使用Spring-Data-Jpa实现CRUD操作

2019-11-26 09:42:20
字体:
来源:转载
供稿:网友

本文演示了SpringBoot下,实用Spring-Data-Jpa来实现CRUD操作,视图层采用Freemarker

这里我们先把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是继承PagingAndSortingRepository,PagingAndSortingRepository是继承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 */@NoRepositoryBeanpublic 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完成!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表