• spring boot 连接Mysql介绍



    Spring Boot 集成教程


    概述

    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访问数据库,验证数据库连接成功。

    完整代码

  • 相关阅读:
    Windows8 游戏开发教程开篇
    IPAD 游戏开发方案,windows开发
    谈一谈 Windows 8 的软件开发架构
    html5 大家一起来瞅吧瞅吧
    silverlight5中CLGF的推进
    html5 游戏界面问题
    挑战SVN,最纯洁的SVN客户端计划
    章鱼哥的暴走,HTML5也开始了
    MySQL的常用操作!
    两种屏蔽鼠标右键的方法
  • 原文地址:https://www.cnblogs.com/jinbuqi/p/11008758.html
Copyright © 2020-2023  润新知