【java】一个 基础 spring boot + JPA + mysql 架子

前提工作: 安装好docker  还有 intelli IDEA 

1,首先我们先搞好准备工作,mysql数据库的安装,咱们采用docker的方式,我本机安装的是5.7版本 

docker pull mysql:5.7

确保成功拉取了mysql镜像后,在命令行执行如下命令启动mysql:

 启动mysql的命令来自于dockerhub的mysql镜像主页【你可以忽略这条提示直接跑下面的命令】

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my-mysql mysql:5.7

如果你想把数据库的数据文件存储到宿主机目录可以使用-v 命令,-v 第一个参数是设置宿主机存储mysql数据文件的目录。【不能直接复制下面的命令,自行修改-v第一个参数,或者你可以直接忽略,跑上条命令即可】

docker run -d -p 3306:3306 -v /Users/kevinkang/Docker-Data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mine-mysql mysql:5.7

ok 当我们将mysql容器启动起来之后,效果是这样的

容器已经成功启动,我们现在直接从主机进入数据库,创建一个名称为es的数据库,因为jdbc连接mysql需要指定一个特定的数据库。

执行命令(或者进入容器然后进入数据库也行):

mysql -h 127.0.0.1 -uroot -p

然后提示输入密码,密码就是我们docker run 设置的密码 123456,然后就进入了mysql数据库,然后执行命令创建我们的数据库:

create database es;

然后切换到该数据库:

use es;

效果是这样的:

 

到这一步 ,数据的准备工作已经完成,你可以继续跑一条 show tables; 发现是空的,因为我们还没有这个数据库里面建表。

 

2,第二步,创建spring boot 项目。。。需要intelli IDEA

create new project -> spring initialzr  点击next 输入项目名字 sprint-boot-demo

 

 

 

然后一路往下点next,然后就是创建成功。

创建成功之后在main下的resources目录下创建一个application.yml文件【其实也可以写在application.propertis里面】,然后在yml文件加上下面的代码:

server:
  port: 8080
  server.servlet.context-path: /springboot

然后在找到入口文件  SprintBootDemoApplication.java 所在位置,在这个目录或者这个目录的子目录下新建一个controller文件,我们取名HiController.java

代码长这样:

package com.example.sprintbootdemo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController     //等同于同时加上了@Controller和@ResponseBody
public class HiController {

    //访问/kein或者/kevin任何一个地址,都会返回一样的结果
    @RequestMapping(value = {"/kevin","/kev"},method = RequestMethod.GET)
    public String say(){
        return "hi you!!!";
    }
}

 

然后找到入口文件   SprintBootDemoApplication.java ,点击箭头位置,然后run 

然后idea 控制会看到启动日志,成功启动后,浏览器输入localhost:8080/kevin, 会显示这个:

服务已经成功启动了! 返回了字符串,当然这个返回值,我们完全可以自定义。。这个按照自己的需求修改就是。

 

 

3, 第三步 ,mysql 和 java 服务已经启动起来了,现在我们需要服务帮我们创建数据表,操作数据库等动作,这时候需要JPA了,jpa java persitence api,持久化api。

 

找到pom.xml文件,然后将引入包的信息放进去:

        <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!-- Use MySQL Connector-J -->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

 

然后将数据库信息,添加到resources目录下的application.yml文件里面:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/es
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update # 自动更新数据表中的字段等信息
    show-sql: true  # 日志中显示sql语句

现在application.yml长这样: 

 

 

然后我们来写实体类:

添加User.java

package com.example.sprintbootdemo.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity // This tells Hibernate to make a table out of this class
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    private String name;

    private String email;

    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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


}

然后添加接口 UserRepository

package com.example.sprintbootdemo.model;
import org.springframework.data.repository.CrudRepository;
import com.example.sprintbootdemo.model.User;

// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository
// CRUD refers Create, Read, Update, Delete

public interface UserRepository extends CrudRepository<User, Integer> {

}

这时候项目结构是这样:

重启项目打印日志会有下面信息:

 数据表创建成功了,利用mysql命令,登入,查看,的确创建了两张表。

到这一步我们没有完,我们还需要对数据做一些操作。

 

4,第四步,操作数据库里面的数据。

在controller目录下面【controller目录和入口文件在同一个目录下】增加一个UserController

package com.example.sprintbootdemo.controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.example.sprintbootdemo.model.User;
import com.example.sprintbootdemo.model.UserRepository;

@Controller    // This means that this class is a Controller
@RequestMapping(path="/user") // This means URL's start with /user (after Application path)
public class UserController {
    @Autowired // This means to get the bean called userRepository
    // Which is auto-generated by Spring, we will use it to handle the data
    private UserRepository userRepository;

    @GetMapping(path="/add") // Map ONLY GET Requests
    public @ResponseBody String addNewUser (@RequestParam String name
            , @RequestParam String email) {
        // @ResponseBody means the returned String is the response, not a view name
        // @RequestParam means it is a parameter from the GET or POST request

        User n = new User();
        n.setName(name);
        n.setEmail(email);
        userRepository.save(n);
        return "Saved";
    }

    @GetMapping(path="/all")
    public @ResponseBody Iterable<User> getAllUsers() {
        // This returns a JSON or XML with the users
        return userRepository.findAll();
    }
}

最后的目录结构长这样:

HelloController 和 HiController只是我们没有引入jpa的测试controller,不必理会。然后我们重启项目,重启成功之后在浏览器发起一个get请求。

http://localhost:8080/user/add?name=kevin&&email=kev@gmail.com

保存成功,去数据库查看,的确成功了,然后我们从数据库取出数据,在浏览器输入 

http://localhost:8080/user/all

 

返回成功,到此 spring boot + jpa + mysql 的基础架子已经完成了。

 

参考资料:https://blog.csdn.net/forezp/article/details/61472783  【第二步】

           spring boot 官网 connect-mysql 教程     【第三四步】

           spring boot 官网 jpa教程 

上面这个项目在这里:  https://github.com/aeolusheath/spring-boot-JPA-mysql

posted on 2019-01-05 15:59  狂奔的冬瓜  阅读(445)  评论(0编辑  收藏  举报