文本将对在spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍。

包括JDBC、JPA、MyBatis、多数据源和事务。

JDBC 连接数据库

1、属性配置文件(application.properties)

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

如果使用JNDI,则可以替代 spring.datasource 的 url、username、password,如:

spring.datasource.jndi-name=java:tomcat/datasources/example

值得一提的是,无论是Spring Boot默认的DataSource配置还是你自己的DataSource bean,都会引用到外部属性文件中的属性配置。所以假设你自定义的DataSource bean,你可以在定义bean时设置属性,也可以在属性文件中,以“spring.datasource.*”的方式使属性配置外部化。

2、pom.xml 配置maven依赖

mysql

mysql-connector-java

org.springframework.boot

spring-boot-starter-jdbc

3、Java代码范例

StudentService.java

package org.springboot.sample.service;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import org.springboot.sample.entity.Student;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import org.springframework.stereotype.Service;

/**

* Studeng Service

*

* @author 单红宇(365384722)

* @create 2016年1月12日

*/

@Service

public class StudentService {

@Autowired

private JdbcTemplate jdbcTemplate;

public List getList(){

String sql = "SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE FROM STUDENT";

return (List) jdbcTemplate.query(sql, new RowMapper(){

@Override

public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

Student stu = new Student();

stu.setId(rs.getInt("ID"));

stu.setAge(rs.getInt("AGE"));

stu.setName(rs.getString("NAME"));

stu.setSumScore(rs.getString("SCORE_SUM"));

stu.setAvgScore(rs.getString("SCORE_AVG"));

return stu;

}

});

}

}

Student.java 实体类

package org.springboot.sample.entity;

import java.io.Serializable;

/**

* 学生实体

*

* @author 单红宇(365384722)

* @create 2016年1月12日

*/

public class Student implements Serializable{

private static final long serialVersionUID = 2120869894112984147L;

private int id;

private String name;

private String sumScore;

private String avgScore;

private int age;

// 节省文章长度,get set 方法省略

}

StudentController.java

package org.springboot.sample.controller;

import java.util.List;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springboot.sample.entity.Student;

import org.springboot.sample.service.StudentService;

import org.springframework.beans.factory.annotation.Autowired;

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

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

@RestController

@RequestMapping("/stu")

public class StudentController {

private static final Logger logger = LoggerFactory.getLogger(StudentController.class);

@Autowired

private StudentService studentService;

@RequestMapping("/list")

public List getStus(){

logger.info("从数据库读取Student集合");

return studentService.getList();

}

}

本文对工程添加文件后工程结构图:

然后启动项目,访问地址: http://localhost:8080/myspringboot/stu/list 响应结果如下:

[

{

id: 1,

name: "小明",

sumScore: "252",

avgScore: "84",

age: 1

},

{

id: 2,

name: "小王",

sumScore: "187",

avgScore: "62.3",

age: 1

},

{

id: 3,

name: "莉莉",

sumScore: "",

avgScore: "",

age: 0

},

{

id: 4,

name: "柱子",

sumScore: "230",

avgScore: "76.7",

age: 1

},

{

id: 5,

name: "大毛",

sumScore: "",

avgScore: "",

age: 0

},

{

id: 6,

name: "亮子",

sumScore: "0",

avgScore: "0",

age: 1

}

]

连接池说明

Tomcat7之前,Tomcat本质应用了DBCP连接池技术来实现的JDBC数据源,但在Tomcat7之后,Tomcat提供了新的JDBC连接池方案,作为DBCP的替换或备选方案,解决了许多之前使用DBCP的不利之处,并提高了性能。

Spring Boot为我们准备了最佳的数据库连接池方案,只需要在属性文件(例如application.properties)中配置需要的连接池参数即可。

我们使用Tomcat数据源连接池,需要依赖tomcat-jdbc,只要应用中添加了spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa依赖,则无需担心这点,因为将会自动添加 tomcat-jdbc 依赖。

假如我们想用其他方式的连接池技术,只要配置自己的DataSource bean,即可覆盖Spring Boot的自动配置。

请看我的数据源配置:

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.max-idle=10

spring.datasource.max-wait=10000

spring.datasource.min-idle=5

spring.datasource.initial-size=5

spring.datasource.validation-query=SELECT 1

spring.datasource.test-on-borrow=false

spring.datasource.test-while-idle=true

spring.datasource.time-between-eviction-runs-millis=18800

spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)

配置过连接池的开发人员对这些属性的意义都有所认识。

我们打开DEBUG日志输出,logback.xml 中添加:

然后启动项目,注意观察日志输出,如下图中会显示自动启用了连接池:

我在上面的数据源配置中添加了过滤器,并设置了延迟时间为0(故意设置很低,实际项目中请修改):

spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)

这个时候,我们访问 http://localhost:8080/myspringboot/stu/list 观察日志,会发现框架自动将大于该时间的数据查询进行警告输出,如下:

2016-01-12 23:27:06.710  WARN 17644 --- [nio-8080-exec-1] o.a.t.j.p.interceptor.SlowQueryReport    : Slow Query Report SQL=SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE   FROM STUDENT; time=3 ms;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

sping jdbc 链接mysql_Spring Boot JDBC 连接数据库示例相关推荐

  1. mysql jdbc链接配置文件_Java JDBC使用配置文件连接数据库

    Java JDBC使用配置文件连接数据库: 创建后缀名为:.properties的文件,文件内容包括,数据库驱动.连接的数据库地址.用户名.密码-- 以Mysql为例创建config.properti ...

  2. java jdbc 链接pg_Java使用JDBC连接postgresql数据库示例

    本文实例讲述了Java使用JDBC连接postgresql数据库.分享给大家供大家参考,具体如下: package tool; import java.sql.Connection; import j ...

  3. Jmeter中JDBC链接配置 JDBC Connection Configuration

    如果在Jmeter 中想用到连接数据库的功能,必须下载jar包,常见的关系型数据库jar包见以下共享链接 链接:https://pan.baidu.com/s/1t-k9RW141lw0j_QSw53 ...

  4. Java文档阅读笔记-Spring Boot JDBC

    Spring Boot JDBC提供了使用引导和相关驱动去连接某数据库引用. 在Spring Boot JDBC中与数据库相关的bean有DataSouce,JdbcTemplate,NamedPar ...

  5. Spring JDBC和JdbcTemplate CRUD与DataSource示例

    Spring JDBC示例和JdbcTemplate CRUD与DataSource示例 Spring JDBC是本教程的主题.数据库是大多数企业应用程序不可或缺的一部分.因此,当谈到Java EE框 ...

  6. ShardingSphere RAW JDBC 分布式事务 Narayana XA 代码示例

    ShardingSphere RAW JDBC 分布式事务 Narayana XA 代码示例 项目工程在:transaction-2pc-narayana-xa-raw-jdbc-example 代码 ...

  7. db2 jdbc 连接池_db2 jdbc连接数据库

    DB2的JDBC连接驱动与URL总结 依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开 ...

  8. 最新教程:java(IDEA,eclipse都有)通过JDBC链接SQLServer2012数据库

    1. 下载 Microsoft SQL Server JDBC 驱动程序 Microsoft JDBC Driver for SQL Server 是一个 Type 4 JDBC 驱动程序,它通过 J ...

  9. jdbc链接数据库mysql

    package cn.itcast.demo2;import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...

最新文章

  1. DotNetNuke(DNN)网站发布、部署、迁移和重建
  2. 统计学习II.7 广义线性模型1 指数分布族
  3. iphone-common-codes-ccteam源代码 CCUINavigationBar.h
  4. Zookeeper基础使用
  5. 2.3.2 EditText(输入框)详解
  6. matlab曲线图导出,从Matlab的Figure中导出数据的办法
  7. win7护眼透明主题 “魅力win7”
  8. 一阶导数和二阶导数的二阶/四阶中心差分格式
  9. 解开Kafka神秘的面纱(二):Kafka的高效读写与消息安全
  10. nagstamon--Nagios的即时桌面报警提示监控器
  11. Linux中如何一条命令创建多个文件夹
  12. 职工食堂报餐系统源码java,企业食堂报餐消费管理系统
  13. 江西理工大学南昌校区排名赛 B: 单身狗的数字游戏
  14. Supervisor安装、配置、开启启动
  15. linux yum安装 rpmbuild,Redhat/Centos下rpmbuild命令从spec文件或者tar包建立rpm
  16. 为什么曾经看好的车联网如今却成了鸡肋?
  17. 怎样用html实现微信九宫格,微信小程序使用canvas实现,图片分割为九宫格,点击图片保存...
  18. 应用商店调研-百度手机助手
  19. 第五章 TensorFlow工具库(下)
  20. android 智能笔连接,在纸上写字可同步到手机和电脑的智能笔

热门文章

  1. stackexchange_通过Spring Social推特StackExchange –第1部分
  2. javaone_JavaOne 2012:101种改进Java的方法-开发人员参与为何如此重要
  3. WildFly和Docker上的Java EE 7动手实验室
  4. 使用Maven运行Solr
  5. 从RSS Feed和YQL创建数据表
  6. 使用Eclipse在Amazon Ec2中部署Java Web应用程序的完整指南
  7. python数据处理常用函数_Python常用数据处理函数
  8. Linux系统下,虚拟终端开启256色_虚拟终端类型xterm开启256色
  9. Windows系统下彻底卸载MySQL数据库
  10. HH SaaS电商系统的支付模块设计