Spring boot+Mysql+Spring data JPA一个Web的Demo

1.概述

因为要用spring boot,最近刚刚学习.这是一个web项目的配合mysq+Hibernate+tomcat的简单示例demo,很容易在此基础上扩展成自己的项目.

2.创建初始spring demo

作者用的IDE是IDEA,新建一个工程,选择Spring Initalizer.

下一步的话由于作者需要部署到服务器上面,选择了war.不需要的话可以选择jar.

选择spring web+spring Data JPA+Mysql Driver.


然后完成即可,首次运行的话配置依赖需要一点时间,请耐心等待.

3.配置数据源

配置数据源分为两部分,一部分是建表与建用户,另一部分是在application.properties中配置的.

(1)建库

create database test;

注意这里不用创建表了,因为Hibernate从实体类自动创建一个同名的表.

(2)建用户

create user ‘db‘@‘%‘ identified by ‘xxxxx‘;

(3)用户授权

grant all on test.* to ‘db‘@‘%‘;

这里建议授权all,因为后面Hibernate会用到建表权限,不能仅仅授权增删查改.

(4)配置application.properties

配置四个属性:

spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

第一个属性是可以取值

  • none
  • update
  • create
  • create-drop

a.none

none是对mysql的默认值,不会改变数据库结构.

b.update

Hibernate会根据给出的实体类去改变数据库.

c.create

创建数据库但是不会在关闭的时候删除.

d.create-drop

创建数据库,当SessionFactory关闭时删除数据库.这个是对H2与其他嵌入式数据库的默认选项.

第一次运行时必须设置为update或create,因为还不知道确切的实体类,第一次运行后,可以设置为update或none.
url的话对于mysql来说是

jdbc:mysql://ip:3306/database

剩下的两个为用户名与密码.
以下是作者的配置,供参考:

4.创建实体类

这里创建一个简单的User实体类,需要用到javax中的Entity,Id,GeneratedValue与GenerationType注解.
Entity用于标识实体类,Id用于标识主键,GeneratedValue与GenerationType用于配置主键.

package com.test;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String name;

    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;
    }
}

除了主键之外,可以加上自己想要的属性,还有setter与getter,Hibernate会自动将实体类制作成一个数据表.

5.创建Repository

创建仓库保存用户记录.需要继承CrudRepository<T,ID>,第一个类型为实体类,第二个类型为主键类型.

package com.test;

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User,Integer>
{
}

6.创建控制器

控制器用于控制Http请求,在控制器中可以配置不同的路径实现不同的操作.

package com.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping(path = "/demo")
public class MainController {
    @Autowired
    private UserRepository userRepository;

    @PostMapping(path = "/add")
    public @ResponseBody String addNewUser(@RequestParam String name)
    {
        User user = new User();
        user.setName(name);
        userRepository.save(user);
        return "Saved.";
    }

    @GetMapping(path = "/all")
    public @ResponseBody Iterable<User> getAllUsers()
    {
        return userRepository.findAll();
    }
}

@RequestMapping中的值表示url以此值开头.br/>@PostMapping是仅处理post请求的路径.
@ResponseBody表示返回的类型.br/>@RequestParam表示一个从get或post中获取的参数.
getAllUsers()会返回一个json或者xml.

7.IDE上测试

首先输入

localhost:8080/demo/all

由于作者先前已经有一行数据所以有显示.

否则的话应该显示为[]
接下来可以添加数据:

curl localhost:8080/demo/add -d name=123

回应:

接下来可以选择再次查看:

在看看数据库:

8.打包发布

Build->Build Artifacts.


Build即可.
然后会在项目目录的target下有一个test-0.0.1-xxx的war文件,就是这个了.

改名字放到tomcat的webapps/下,比如作者改成了demo.war:

然后可以去访问了,注意路径,这里的路径是war的路径再加上@RequestMapping中的路径再加上 @PostMapping或 @GetMapping路径:

完成!

9.完整代码

原文地址:https://blog.51cto.com/13996197/2453471

时间: 2024-10-05 20:24:19

Spring boot+Mysql+Spring data JPA一个Web的Demo的相关文章

Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)

.新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了. 原文地址:https://www.cnblogs.com/zsg88/p/9161685.html

Spring Boot 使用IntelliJ IDEA创建一个web开发实例(三)

属性配置 1.配置application.properties文件 配置web访问端口和context path server.port = 8081 server.servlet.context-path = /demo 运行 2. 用application.yml进行配置 server: port : 8082 servlet: context-path: /demo2 启动,访问 注意,application.properties 比application.yml的优先级高 原文地址:ht

spring boot系列(五)spring boot 配置spring data jpa (查询方法)

接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnblogs.com/kxm87/p/9273555.html中的一样. 2 创建数据库操作类相当于dao层,主要创建一个接口UserRepository,继承JpaRepository接口即可.本代码中主要都是自定义方法. 使用findXX 或者countXX(这两个不用编写sql,jpa会自动生成)

Spring Boot 整合Spring Data JPA

Spring Boot整合Spring Data JPA 1)加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> &l

spring boot 中Spring data jpa数据库表字段命名策略

spring boot 中Spring data jpa命名策略 数据库,表字段命名是驼峰命名法(UserID),Spring data jpa 自动更新之后是 user_id, 表字段不对照, Spring data jpa基于Hibernate5.0 application.properties 写法 1.无修改命名 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNa

spring boot 集成 Mybatis,JPA

相对应MyBatis, JPA可能大家会比较陌生,它并不是一个框架,而是一组规范,其使用跟Hibernate 差不多,原理层面的东西就不多讲了,主要的是应用. Mybatis就不多说了,SSM这三个框架现在基本上都是基本框架了. MyBatis 与 Spring boot 整合时除了添加必要的jar, 插件.在applicatoin.properties/application.yml 中添加相应的配置. 注意的一点就是在启动类中记得添加@MapperScan("com.spSystem.map

spring boot(spring)

一:spring的介绍 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. 它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用.简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 二:spring boot 1. Spring Boot简介Spring 诞生时是 Java 企业版(Java Enterpris

spring boot与spring mvc的区别是什么?

Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能.Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML. JavaConfig.hin处理起来比较繁琐.于是为了简化开发者的使用,从而创造性地推出了Spr

Spring、Spring Boot、Spring Frame、Spring MVC的区别

Spring框架就像一个厂商,其下有很多产品,如Spring Boot.Spring Frame.Spring Cloud等等. Spring Boot用于快速.方便.简单的搭建一个Spring项目.之所以说它快速.方便.简单,是因为Spring Boot融合看来很多第三方库,提供了配置这些库及本身的一些简单的方式,从而进行了简化,避免了我们自己对包的导入和繁琐的XML文件配置.我们来看下官方文档. 我们可以看到Spring内嵌了一些serverse等容器,通过Spring Boot的配置,可以