这一章主要介绍怎么在k8s上面部署及启动springboot&mysql项目,现在就来使用spring开发一个查询数据库的项目。在
k8s 实战篇 - mysql部署
中有介绍如何搭建mysql及持久化数据。在此基础上使用spring boot框架对数据库查询,然后返回客户端操作结果。
我们可以参考mybatis-plus使用说明,编写java代码,参考快速开始 | MyBatis-Plus
;spring boot项目初始化可以参考minikube 实战篇 - 镜像打包部署 - 1
。
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
User实体类,这个实体类在文章k8s 实战篇 - mysql部署 - 2可以找到建表信息
package com.docker.demo.data;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
UserMapper文件是对User表进行数据库,可以对User表进行增删改查操作
package com.docker.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docker.demo.data.User;
public interface UserMapper extends BaseMapper<User> {
}
HelloContoller
是一个入口类。之前在minikube 实战篇 - 镜像打包部署 - 2
中,有介绍及使用过,可以参考。在原来的基础上增加了,查询用户所有信息的代码。如下:
package com.docker.demo;
import com.docker.demo.data.User;
import com.docker.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
public class HelloContoller {
@Autowired
UserMapper userMapper;
@GetMapping("hello")
public String helloworld(){
return "hello world!";
}
@GetMapping("queryUser")
public String queryUser(){
List<User> users = userMapper.selectList(null);
String userStrs = Arrays.toString(users.toArray());
return userStrs;
}
}
代码写完之后需要增加对数据裤的配置,配置文件:application.yaml
。配置如下:
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql.default.svc.cluster.local:3306/docker-demo?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: 123456
其中url配置成了:jdbc:mysql://mysql.default.svc.cluster.local:3306/docker-demo
,在地址信息中可以直接使用mysql作为链接路径。通过
进行访问,例如:mysql.default.svc.cluster.local。
可以参考minikube 实战篇 - 镜像打包部署 - 1
及minikube 实战篇 - 镜像打包部署 - 2
里面有讲解如何进行项目的打包及上传镜像服务到dockerhub,完成之后进行部署,如下:
PS C:\Users\smy1102> kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.2
deployment.apps/docker-demo created
PS C:\Users\smy1102> kubectl expose deployment docker-demo --type=NodePort --port=8080
service/docker-demo exposed
部署成功之后,通过访问地址:http://{ip}:{port}/queryUser
进行访问:
访问成功。