spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)

时间:2022-09-04 15:39:51
第一节:Spring Data Jpa 简介

Spring-Data-Jpa

JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。

 
第二节:Spring Data Jpa 基本crud 实现
下面对图书的CRUD来为例子:
项目结构:
 
spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)
 
1.引入jpa和mysql驱动支持
在pom.xml上右键spring -> edit starters,勾选mysql、jpa;
可以看到pom新增依赖:mysql-connector-java、spring-boot-starter-data-jpa
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.cy</groupId>
<artifactId>HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <name>HelloWorld</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

2.src/main/resources/application.yml中配置server的根路径和port、数据源、showsql等:

server:
port: 80
servlet:
context-path: / spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_book
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true

3.代码:

Book.java实体:

package com.cy.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name="t_book")
public class Book { @Id
@GeneratedValue
private Integer id; @Column(length=100)
private String name; @Column(length=50)
private String author; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} }

com.cy.dao.BookDao.java:

package com.cy.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import com.cy.entity.Book; public interface BookDao extends JpaRepository<Book, Integer>{ }

CRUD的BookController.java:

package com.cy.controller;

import java.util.List;
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.cy.dao.BookDao;
import com.cy.entity.Book; @Controller
@RequestMapping("/book")
public class BookController { @Resource
private BookDao bookDao; /**
* 查找所有图书
*/
@RequestMapping("/list")
public ModelAndView list(){
ModelAndView mav = new ModelAndView();
List<Book> bookList = bookDao.findAll();
mav.addObject("bookList", bookList);
mav.setViewName("bookList");
return mav;
} /**
* 添加图书
*/
@RequestMapping(value="/add", method=RequestMethod.POST)
public String add(Book book){
bookDao.save(book);
return "redirect:/book/list";
} /**
* 根据id查找图书
*/
@RequestMapping("/preUpdate/{id}")
public ModelAndView preUpdate(@PathVariable("id") Integer id){
ModelAndView mav = new ModelAndView();
mav.addObject("book", bookDao.getOne(id));
mav.setViewName("bookUpdate");
return mav;
} /**
* 修改图书
*/
@PostMapping("/update")
public String update(Book book){
bookDao.save(book); //依然是save,有id就修改,没有id就添加
return "redirect:/book/list";
} /**
* 删除图书
*/
@GetMapping("/delete")
public String delete(Integer id){
bookDao.deleteById(id);
return "redirect:/book/list";
}
}

src/main/resources/templates/bookList.ftl:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理</title>
</head>
<body>
<a href="/bookAdd.html">添加</a>
<table>
<tr>
<th>编号</th>
<th>图书名称</th>
<th>图书作者</th>
<th>操作</th>
</tr>
<#list bookList as book>
<tr>
<td>${book.id}</td>
<td>${book.name}</td>
<td>${book.author}</td>
<td>
<a href="/book/preUpdate/${book.id}">修改</a>
<a href="/book/delete?id=${book.id}">删除</a>
</td>
</tr>
</#list>
</table>
</body>
</html>

添加图书页面src/main/webapp/bookAdd.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/book/add" method="post">
图书名称:<input type="text" name="name"/><br/>
图书作者:<input type="text" name="author"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>

修改图书页面:src/main/resources/templates/bookUpdate.ftl:

要注意修改这边要把book的id带过去,不然就成添加了;

<!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="name" value="${book.name}"/><br/>
图书作者:<input type="text" name="author" value="${book.author}"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
测试:
1.项目启动,观察新建的表,(前提是mysql中已经新建了db_book这个数据库,因为mysql的url就是jdbc:mysql://localhost:3306/db_book);
项目启动,自动建表,t_book:
mysql> show create table t_book;
+--------+--------------------------------------
------------------------------------------------
| Table | Create Table +--------+--------------------------------------
------------------------------------------------
| t_book | CREATE TABLE `t_book` (
`id` int(11) NOT NULL auto_increment,
`author` varchar(50) default NULL,
`name` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+--------------------------------------
------------------------------------------------
1 row in set (0.00 sec)
mysql> desc t_book;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| author | varchar(50) | YES | | NULL | |
| name | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+

2.http://localhost/book/list,显示:

spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)

进行增、删、改、list操作正常;

 
 
 
 
 
 
 
 

spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)的更多相关文章

  1. spring boot学习&lpar;5&rpar; SpringBoot 之Spring Data Jpa 支持(2)

    第三节:自定义查询@Query 有时候复杂sql使用hql方式无法查询,这时候使用本地查询,使用原生sql的方式:   第四节:动态查询Specification 使用 什么时候用呢?比如搜索有很多条 ...

  2. Spring Boot学习(一)——Spring Boot介绍

    Spring Boot介绍 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式 ...

  3. spring boot 学习&lpar;五&rpar;SpringBoot&plus;MyBatis&lpar;XML&rpar;&plus;Druid

    SpringBoot+MyBatis(xml)+Druid 前言 springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成. 主要是 ...

  4. spring boot学习&lpar;十三&rpar;SpringBoot缓存&lpar;EhCache 2&period;x 篇&rpar;

    SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManag ...

  5. spring boot 学习&lpar;十&rpar;SpringBoot配置发送Email

    SpringBoot配置发送Email 引入依赖 在 pom.xml 文件中引入邮件配置: <dependency> <groupId>org.springframework. ...

  6. spring boot学习&lpar;6&rpar; SpringBoot 之事务管理

    两个操作要么同时成功,要么同时失败: 事务的一致性: 以前学ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作: 用来 ...

  7. spring boot学习&lpar;2&rpar; SpringBoot 项目属性配置

    第一节:项目内置属性 application.properties配置整个项目的,相当于以前的web.xml: 注意到上一节的访问HelloWorld时,项目路径也没有加:直接是http://loca ...

  8. spring boot学习&lpar;7&rpar; SpringBoot 之表单验证

    第一节:SpringBoot 之表单验证@Valid 是spring-data-jpa的功能:   下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁.   贴下代码吧: Student实体: ...

  9. spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】

    [ 前言]  Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...

随机推荐

  1. WEB前端工程师&lpar;实践&rpar;制作天气预报难度&colon;简单

    需要准备:jQuery Bootstrap 天气预报API(本文中使用API可能会失效请灵活运用) CSS样式可以你自己去写这里只提出jQuery 请求数据和解析JSON数据 { "resu ...

  2. 在cmd命令行使用Maven Archetype插件 generate命令创建简单的java web项目

    前提: 1.下载apache-maven:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache ...

  3. Java Filter过滤器的简单总结

    1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...

  4. 【Ubuntu14&period;04&period;1】设置开机可以Root用户身份登录

    $ sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf [SeatDefaults]user-session=ubuntugreet ...

  5. FIREDAC FDConnection 连接池 连接串

    一.FDConnection 连接池 http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic ...

  6. restful&lowbar;api

    http://www.ruanyifeng.com/blog/2014/05/restful_api.html

  7. JQuery&plus;AJax - 无刷新使用验证码

    最终效果: 项目目录: Default.aspx前端代码: <%@ Page Language="C#" AutoEventWireup="true" C ...

  8. python----mysql链接汉字编码的问题

    解决python连接mysql,UTF-8乱码问题 1.  Python文件设置编码 utf-8 (文件前面加上 #encoding=UTF-8)     2. MySQL数据库charset=utf ...

  9. ASP&period;NET下使用xml反序列化、缓存实现个性化配置文件的实时生效

    因为一些配置属性比较多,存在多组属性,因此结合xml解析.缓存技术,实现配置文化的自动解析.存入缓存.缓存依赖实时更新配置内容. 配置文件反序列化存入缓存的核心方法: public Class.Set ...

  10. BZOJ 2595&colon; &lbrack;Wc2008&rsqb;游览计划 &lbrack;DP 状压 斯坦纳树 spfa&rsqb;【学习笔记】

    传送门 题意:略 论文 <SPFA算法的优化及应用> http://www.cnblogs.com/lazycal/p/bzoj-2595.html 本题的核心就是求斯坦纳树: Stein ...