mysql public权限_Spring boot+Mysql+Spring data JPA一个Web的Demo

049c14af17bc8716ab215f0361016474.png

1. 概述

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

2. 创建初始 spring demo

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

877fcd3c0da643f61e0e7f41e43a2dda.png

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

1641b972af00ac97a1c4d54c8c38846c.png

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

e6efe83b9f5d0a5e6ae0b3457b44517f.png0aa0cb9f3d58ca9fa44adb58fac2c159.pngb8bd59e44365ee949f4808b98ff35221.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
复制代码

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

a65b4b78aeee94b618f8ccb3df6549d5.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, 第一个类型为实体类, 第二个类型为主键类型.

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 IterablegetAllUsers()
{return userRepository.findAll();
}
}
复制代码

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

7.IDE 上测试

首先输入

localhost:8080/demo/all
复制代码

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

d96852e2695a952315e34c3725b33c32.png

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

curl localhost:8080/demo/add -d name=123
复制代码

回应:

54dc51ef437fd214b64c11343820ff06.png

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

e347154071ec76808e738a06706359d6.png

在看看数据库:

be4e6cf0f19e7fd27290441bd9619a66.png

8. 打包发布

Build->Build Artifacts.

459c92cdef2d72cab2912caeaecc98e7.png39192b4c1a81158ccd793debd76c7cac.png

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

5f8d5b865ec63b01b894affa74357683.png

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

38dd4ca9366c102d84cd01ec171deb8d.png

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

fe7a0c7880c8664593fb6710aa5251a6.png

完成!

  1. 完整代码 =======

  • github

  • 码云:https://gitee.com/imykr/spring-boot-hibernate-tomcat-mysql

来源:juejin.im/post/5ddc04c36fb9a07ab07f6619

作者:氷泠

514cf9b1054fd82a107cde1e2dda5566.png

好文章,我在看❤️

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值