Spring boot+Mysql+Spring data JPA实现的Web Demo

        专注于IT技术知识梳理,书写前沿技术文章!
        更多技术在这里慢慢探索吧,请关注杰哥公众号!
在这里插入图片描述
1. 概述
  这是一个 web 项目的配合 mysql+springboot+spring data jpa+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 :none 是对 mysql 的默认值, 不会改变数据库结构.
  • update :Hibernate 会根据给出的实体类去改变数据库.
  • create :创建数据库但是不会在关闭的时候删除.
  • 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 以此值开头. @PostMapping 是仅处理 post 请求的路径. @ResponseBody 表示返回的类型. @RequestParam 表示一个从 get 或 post 中获取的参数. getAllUsers() 会返回一个 json 或者 xml.
7.测试
输入:localhost:8080/demo/all
由于杰哥先前已经有一行数据所以有显示.

在这里插入图片描述
8. 打包发布
在这里插入图片描述
Build 即可. 然后会在项目目录的 target 下有一个 test-0.0.1-xxx 的 war 文件, 就是这个了.
在这里插入图片描述

改名字放到 tomcat 的 webapps / 下, 比如杰哥改成了 demo.war:
在这里插入图片描述
然后可以去访问了, 注意路径, 这里的路径是 war 的路径再加上 @RequestMapping 中的路径再加上 @PostMapping 或 @GetMapping 路径:
在这里插入图片描述
        更多技术在这里慢慢探索吧,请关注杰哥公众号!
        如果文章对你有帮助,请转发!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝西奇谈

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值