springboot mysql url_spring boot 连接Mysql介绍

Spring Boot 集成教程

概述

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

5c7451f9b66b506f4dc0c54cdfa01d6c.png

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服务器:

d271052efeca57d177839256b102fe06.png

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

1b49cbc43a127d331bc8d19e4171967c.png

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

19428323a9bf220e3858a39ffa6cd765.png

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

4d2e84ceebc44edc3f29a5f5e7e4ff06.png

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

736ad15b1bc269b7fcf125548bae578d.png

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

0281f1ba09e83d57bbeb8eadca352edc.png

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

4a0e3b4658996f1ce752d8769ae4f8eb.png

创建spring boot项目

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

017b3f439eea036ba1bebe5c845ba4e6.png

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

0ab16d78766cec08d5e4f3ca964352b6.png

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

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.1.RELEASE

com.qikegu

mysql-demo

0.0.1-SNAPSHOT

mysql-demo

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

配置数据源

打开文件: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

7dbe5a4412b4a7e50a6a4796174c8d9e.png

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接口)例子),使用浏览器访问,输出从数据库中读取的用户手机号

e6f5221bc8c68a781db10ab4a9d1bd8a.png

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...

文 | 猿天罡前言前两篇文章,我们学习了Python字典的基本用法和遍历字典的三种方式。为了让小伙伴们不耗费多余的注意力,我们举的例子都尽可能的简单,不信你回去看看,字典键对应的值都是基本数据类型(字符串、数字等)。其实&#x…

Jquery Highcharts 参数配置说明

chart: renderTo 图表的页面显示容器 defaultSeriesType 图表的显示类型(line,spline, scatter, splinearea bar,pie,area,column) margin 上下左右空隙 events 事件 click function(e) {} load function(e) {} xAxis:yAxis: 属性…

linux如查看是否安装了mysql_linux中如何查看mysql是否安装

linux中查看mysql是否安装的方法:1、mysql的守护进程是mysqld如果已经安装则:[rootlocalhost ~]# service mysqld start启动 MySQL: [确定]如果没有安装则:[rootlocalhost ~]# service mysqld startmysqld:未被识别的服务2、通过查看服务是否…

新鲜的宣传册设计

原文地址:http://www.goodfav.com/brochure-designs-9367.html 宣传画册设计印刷在品牌以及企业形象建设疏导方面扮演着非常重要的角色。宣传册设计是理想的营销材料。他们将帮助您建立有意向目标受众,提供有价值的信息。如果没有企业宣传册,…

mysql json mybatis_mybatis支持json,Spring boot配置

mysql5.7版本以后支持原生json格式,基于Spring boot进行配置说明。mybatis支持mysql的json格式mysql-connector,mysql的驱动版本要大于等于5.1.40,否则json字段查询会发生乱码。继承BaseTypeHandler自定义一个json类型处理器,放到…

【ACM】nyoj_103_A+BII_201307291022

AB Problem II时间限制:3000 ms | 内存限制:65535 KB 难度:3描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A B. A,B must be positive. 输入 The first line of the inp…

mysql门派年龄最大的人_目前活着年龄最大的人

每逢老人过生日,子女都会祝他长命百岁,但事实上,长命百岁能过百岁的人少之又少。那么大家知道中国现在活着的最长寿的人是谁吗?下面让小编为大家揭晓答案吧!比正式的历史文献记载最长寿者年长14岁中新网曾对这一名黎巴嫩妇女进行报道&#x…

汉字和utf编码转换

package Sambo;public class URLtoUTF8 {//将汉字转换为编码public static String toUtf8String(String s) {StringBuffer sb new StringBuffer();for (int i 0; i < s.length(); i) {char c s.charAt(i);if (c > 0 && c < 255) {sb.append(c);} else {byt…

python关于字符串下面说法错误的是_关于字符串下列说法错误的是

【判断题】药品的两重性是指防治作用和副作用?【单选题】“ab””c”*2 结果是: (1.3分)【判断题】所有药都是一天吃三次。【填空题】若 a1,b2,c3,d0,则表达式a>b and b>c or ab【单选题】关于Python中的复数,下列说法错误的是 (1.3分)【单选题】后遗效应 的典型药物案例…

mysql inputoutput_PHP:同时使用INPUT和OUTPUT参数(不“ INOUT”)调用MySQL存储过程

从PHP&#xff0c;我想在MySQL中调用存储过程。该过程采用输入 和 输出参数- 而不是 “ INOUT” 参数。对于一个简单的示例&#xff0c;说我在MySQL中具有以下存储过程&#xff1a;DELIMITER $$DROP PROCEDURE IF EXISTS test_proc$$CREATE PROCEDURE test_proc(in input_param…

解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题

最近一个项目中&#xff0c;使用号称下一代构建工具的Gradle构建项目。 使用中发现一个问题&#xff0c;Gradle从中央库下载的jar文件在系统的其它目录&#xff0c;使用gradle eclipse添加Eclipse支持时&#xff0c;jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到To…

mysql 执行计划_mysql执行计划

执行计划使用explain sql查询。1、 构造数据usecoshaho002;drop table if existsinfo;create tableinfo(idint primary keyAUTO_INCREMENT,namevarchar(32),agetinyint,sexvarchar(8),addressvarchar(32),phonevarchar(32),birthday date,descriptionvarchar(128));alter table…

linux 添加编程环境变量配置

在用VS 2008使用boost库时候&#xff0c;只需要在VS的配置里面设定好boost的include和lib路径&#xff0c;编写程序就会自动查找和链接。 linux下使用boost开发&#xff0c;在哪里设置呢&#xff1f; 对所有用户有效&#xff0c;需修改文件/etc/profile; 对个人有效则修改文件~…

python中cock什么意思_[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析...

[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析(2013-07-03 11:31:56)标签&#xff1a;转载Vina是在Autodock4基础上改进的算法&#xff0c;相比autodock4而言&#xff0c;具体优势&#xff1a;准确&#xff0c;并行计算(官网数据)&#xff1a;AutoDockVina is a…

Entity Framework 4.1 : 贪婪加载和延迟加载

这篇文章将讨论查询结果的加载控制。 EF4.1 允许控制对象之间的关系&#xff0c;当我们进行查询的时候&#xff0c;哪些关系的数据将会被加载到内存呢&#xff1f;所有相关的对象都需要吗&#xff1f;在一些场合可能有意义&#xff0c;例如&#xff0c;当查询的实体仅仅拥有一个…

python数据结构编程_写给Python编程高手之 数据结构

python视频教程栏目介绍Python编程需要注意的关键点。如何在列表&#xff0c;字典&#xff0c;集合中根据条件筛选数据案例&#xff1a;如何在下列列表data中筛选出大于0的数data [1, -1, 2, 3, 4, 7]复制代码使用filter函数&#xff0c;第一个参数为一个函数&#xff0c;也可…

初步学习pg_control文件之八

接前文 初步学习pg_control文件之七 继续 看&#xff1a;catalog_version_no 代码如下&#xff1a; static void WriteControlFile(void) {.../** Initialize version and compatibility-check fields*/ControlFile->pg_control_version PG_CONTROL_VERSION;ControlFile-…

python编写下载器可暂停_Python编写一个优美的下载器

本文实例为大家分享了python编写下载器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 #!/bin/python3# author: lidawei# create: 2016-07-11# version: 1.0# 功能说明&#xff1a;# 从指定的URL将文件取回本地#################################################…

fork()调用使子进程先于父进程被调度

由于内核使用写时复制机制&#xff0c;fork之后父子进程是共享页表描述符的&#xff0c;如果让父进程先执行&#xff0c;那么有很大几率父进程会修改共享页表指向的数据&#xff0c;那么内核此时必须给父进程分配并复制新的页表供父进程修改使用&#xff0c;那么如果子进程被创…

修改页面后获得flag_简单的CTF-从JS中获取flag

本文是一篇从合天网安实验室进行实验操作的笔记&#xff0c;一次非常简单地从JS中获取到flag的操作。1. 进入题目页(10.1.1.219:20123)看到一段话&#xff0c;还有一句很明显的提示语句“The evil url is the passkey”&#xff0c;翻译出来就是损坏的url就是flag。下面的英文…