美文网首页
spring boot 连接Mysql

spring boot 连接Mysql

作者: 吴吃辣 | 来源:发表于2019-01-26 20:19 被阅读0次

    奇客谷 spring boot实战系列教程,学习从零开始搭建spring boot web项目框架

    1. Spring Boot 介绍
    2. spring boot 开发环境搭建(Eclipse)
    3. spring boot hello world (restful接口)例子
    4. spring boot 连接 mysql
    5. spring boot配置druid连接池连接mysql
    6. spring boot集成mybatis(1)
    7. spring boot集成mybatis(2) – 使用pagehelper实现分页
    8. spring boot集成mybatis(3) – mybatis generator 配置
    9. spring boot 接口返回值封装
    10. spring boot输入数据校验(validation)
    11. spring boot rest 接口集成 spring security(1) – 最简配置
    12. spring boot rest 接口集成 spring security(2) – JWT配置
    13. spring boot 异常(exception)处理

    奇客谷原创,版权所有,禁止转载


    概述

    java应用的数据库接口的层次图如下

    image

    JDBC

    Java应用通过JDBC接口访问数据库,JDBC(Java DataBase Connectivity/Java数据库连接)为各种数据库,如mysql、oracle等,提供一个统一的接口,应用程序通过JDBC执行各种SQL操作,如select、insert等等。在本文中,我们会通过JDBC访问数据库,验证数据库是否正常连接。

    JPA

    JPA(Java Persistence API/Java持久层接口),是ORM(Object Relational Mapping/对象关系映射)的一个标准,ORM的作用是在数据库表与Java对象之间建立映射,理论上来说有ORM就无需直接通过SQL操作数据库了,通过Java对象即可,这样会方便很多,Hibernate是实现JPA标准的一个有名例子。JPA建立在JDBC之上,也是通过JDBC访问数据库。

    Mybatis

    ORM有一些缺点,如过于笨重,比如在多表联合查询时相当繁琐,但直接使用原始的JDBC操作数据库过于低效,mybatis是现在互联网项目使用比较多的一个Java持久层库。虽然mybatis经常被和Hibernate比较,但mybatis不是JPA的一个实现,mybatis可以理解为加强版的SQL,实现了诸如动态SQL、结果集映射等,高效又不失灵活,个人倾向使用mybatis。同样的,mybatis建立在JDBC之上,通过JDBC访问数据库。后面的教程将对mybatis做详细介绍。

    准备数据

    在这之前,确保已经正确安装Mysql,推荐目前主流版本5.7,同时安装官方图形客户端workbench。

    sql语句

    可以在mysql命令行客户端直接执行sql语句,创建数据库和插入数据

    创建数据库

    CREATE DATABASE qikegu_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

    创建表的sql语句:

    CREATE TABLE `qikegu_demo`.`user` (
      `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `nickname` VARCHAR(50) NULL COMMENT '昵称',
      `mobile` VARCHAR(20) NULL COMMENT '手机号',
      `password` CHAR(60) NULL COMMENT '密码hash值',
      `role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗号分隔',
      PRIMARY KEY (`id`),
      UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
    COMMENT = '用户表';
    
    

    插入数据的sql语句:

    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');
    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc2', '13512345677', '123');
    
    

    使用workbench创建数据库和插入数据

    打开workbench,连接进入mysql服务器:

    image

    创建数据库,在工具栏上点击创建数据库按钮

    image

    输入数据库名:qikegu_demo,选择字符排序规则,推荐utf8mb4_unicode_ciutf8_general_ci,点击apply下面的apply按钮创建。

    image

    创建成功后,左侧出现qikegu_demo数据库

    image

    接下来创建数据表,展开qikegu_demo数据库,右键点击Tables,弹出菜单,选择:Create Tables...,设置数据表名称和属性,添加字段,注意红圈圈出的地方不要输错,点击apply创建数据表

    image

    添加数据,左侧展开qikegu_demo -> Tables,鼠标点击user表的编辑按钮

    image

    插入用户数据,输入nickname, mobile, password,不要输入id,id由数据库产生,点击apply插入数据

    image

    创建spring boot项目

    打开Eclipse,创建spring boot的spring starter project项目,在设置依赖配置时,勾选web, jdbc, mysql,如不清楚怎样创建spring boot项目,参照教程: spring boot hello world (restful接口)例子

    image

    创建成功后,项目目录如下:

    image

    pom.xml由spring boot自动生成,注意已经包含了web, jdbc, mysql的依赖配置

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.qikegu</groupId>
        <artifactId>mysql-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>mysql-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    配置数据源

    打开文件:application.properties,该文件在 src -> main -> resources 目录,配置数据库连接:

    
    # 服务器端口,如果不配置默认是8080端口
    server.port=8096 
    
    # 数据库设置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/qikegu_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=你的数据库密码
    
    

    解释一下spring.datasource.url的配置, 主要下面几个部分:

    • localhost - 主机地址
    • 3306 - 数据库端口
    • qikegu_demo - 数据库名称

    问号之后是一些其他的参数设置,如编码、时区设置这些...

    spring boot现在的默认连接池是Hikari,是号称性能最好的连接池,如后续要调优连接池参数,可参考官网文档,现在都使用默认值即可。

    访问数据库

    添加代码验证数据库是否正常连接,添加文件:HelloController.java

    image

    HelloController.java的代码

    
    package com.qikegu.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
        
        @Autowired
        JdbcTemplate jdbcTemplate;
        
        @RequestMapping(value="/hello", method=RequestMethod.GET)
        public String index() {
            
            String sql = "SELECT mobile FROM user WHERE id = ?";
            
            // 通过jdbcTemplate查询数据库
            String mobile = (String)jdbcTemplate.queryForObject(
                    sql, new Object[] { 1 }, String.class);
            
            return "Hello " + mobile;
        }
    }
    
    

    我们使用spring的JdbcTemplate(这正是我们在前面引入spring jdbc依赖的原因),比使用原始的jdbc接口方便。

    运行

    运行程序(如何运行参照: spring boot hello world (restful接口)例子),使用浏览器访问,输出从数据库中读取的用户手机号

    image

    总结

    本文介绍了spring boot连接mysql的过程,使用JdbcTemplate访问数据库,验证数据库连接成功。

    相关文章

      网友评论

          本文标题:spring boot 连接Mysql

          本文链接:https://www.haomeiwen.com/subject/xdqwjqtx.html