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

本文演示了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

*/

@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完成!

以上是 SpringBoot使用Spring-Data-Jpa实现CRUD操作 的全部内容, 来源链接: utcz.com/z/324192.html

回到顶部