专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

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

1、概述

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

2、创建初始spring demo

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

53_1.png下一步的话由于作者需要部署到服务器上面,选择了war.不需要的话可以选择jar. 53_2.png选择spring web+spring Data JPA+Mysql Driver. 53_3.png

53_4.png

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

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

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

53_6.png

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、IDE上测试

首先输入

localhost:8080/demo/all

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

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

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

回应:

53_8.png接下来可以选择再次查看: 53_9.png在看看数据库: 53_10.png

8、打包发布

Build->Build Artifacts.

53_11.png53_12.pngBuild即可. 然后会在项目目录的target下有一个test-0.0.1-xxx的war文件,就是这个了. 53_13.png改名字放到tomcat的webapps/下,比如作者改成了demo.war: 53_14.png然后可以去访问了,注意路径,这里的路径是war的路径再加上@RequestMapping中的路径再加上 @PostMapping或 @GetMapping路径: 53_15.png完成!

9、完整代码

文章永久链接:https://tech.souyunku.com/28886

未经允许不得转载:搜云库技术团队 » Spring boot+Mysql+Spring data JPA一个Web的Demo

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们