- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Spring Boot JDBC 连接数据库示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
文本将对在spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍.
包括JDBC、JPA、MyBatis、多数据源和事务.
JDBC 连接数据库 。
1、属性配置文件(application.properties) 。
1
2
3
4
|
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,如:
1
|
spring.datasource.jndi-name=java:tomcat/datasources/example
|
值得一提的是,无论是Spring Boot默认的DataSource配置还是你自己的DataSource bean,都会引用到外部属性文件中的属性配置。所以假设你自定义的DataSource bean,你可以在定义bean时设置属性,也可以在属性文件中,以“spring.datasource.*”的方式使属性配置外部化.
2、pom.xml 配置maven依赖 。
1
2
3
4
5
6
7
8
9
10
|
<!-- MYSQL -->
<
dependency
>
<
groupId
>mysql</
groupId
>
<
artifactId
>mysql-connector-java</
artifactId
>
</
dependency
>
<!-- Spring Boot JDBC -->
<
dependency
>
<
groupId
>org.springframework.boot</
groupId
>
<
artifactId
>spring-boot-starter-jdbc</
artifactId
>
</
dependency
>
|
3、Java代码范例 。
StudentService.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
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<Student> getList(){
String sql =
"SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE FROM STUDENT"
;
return
(List<Student>) jdbcTemplate.query(sql,
new
RowMapper<Student>(){
@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 实体类 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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<Student> getStus(){
logger.info(
"从数据库读取Student集合"
);
return
studentService.getList();
}
}
|
本文对工程添加文件后工程结构图:
然后启动项目,访问地址: http://localhost:8080/myspringboot/stu/list 响应结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
[
{
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的自动配置.
请看我的数据源配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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 中添加:
1
|
<
logger
name
=
"org.springframework.boot"
level
=
"DEBUG"
/>
|
然后启动项目,注意观察日志输出,如下图中会显示自动启用了连接池:
我在上面的数据源配置中添加了过滤器,并设置了延迟时间为0(故意设置很低,实际项目中请修改):
。
。
这个时候,我们访问 http://localhost:8080/myspringboot/stu/list 观察日志,会发现框架自动将大于该时间的数据查询进行警告输出,如下:
。
。
。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://blog.csdn.net/catoop/article/details/50507516 。
最后此篇关于Spring Boot JDBC 连接数据库示例的文章就讲到这里了,如果你想了解更多关于Spring Boot JDBC 连接数据库示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Sample data for IPv6? 除了 wireshark 在其网站上提供的内容之外,是否有可以下
我正在寻找可以集成到现有应用程序中并使用多拖放功能的示例或任何现成的解决方案。我在互联网上找到的大多数解决方案在将多个项目从 ListBox 等控件拖放到另一个 ListBox 时效果不佳。谁能指出我
我是 GATE Embedded 的新手,我尝试了简单的示例并得到了 NoClassDefFoundError。首先我会解释我尝试了什么 在 D:\project\gate-7.0 中下载并提取 Ga
是否有像 Eclipse 中的 SWT 示例那样的多合一 JFace 控件示例?搜索(在 stackoverflow.com 上使用谷歌搜索和搜索)对我没有帮助。 如果它是一个独立的应用程序或 ecl
我找不到任何可以清楚地解释如何通过 .net API(特别是 c#)使用谷歌计算引擎的内容。有没有人可以指点我什么? 附言我知道 API 引用 ( https://developers.google.
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
我正在尝试为我的应用程序设计配置文件格式并选择了 YAML。但是,这(显然)意味着我需要能够定义、解析和验证正确的 YAML 语法! 在配置文件中,必须有一个名为 widgets 的集合/序列。 .这
你能给我一个使用 pysmb 库连接到一些 samba 服务器的例子吗?我读过有类 smb.SMBConnection.SMBConnection(用户名、密码、my_name、remote_name
linux服务器默认通过22端口用ssh协议登录,这种不安全。今天想做限制,即允许部分来源ip连接服务器。 案例目标:通过iptables规则限制对linux服务器的登录。 处理方法:编
我一直在寻找任何 PostProjectAnalysisTask 工作代码示例,但没有看。 This页面指出 HipChat plugin使用这个钩子(Hook),但在我看来它仍然使用遗留的 Po
我发现了 GWT 的 CustomScrollPanel 以及如何自定义滚动条,但我找不到任何示例或如何设置它。是否有任何示例显示正在使用的自定义滚动条? 最佳答案 这是自定义 native 滚动条的
我正在尝试开发一个 Backbone Marionette 应用程序,我需要知道如何以最佳方式执行 CRUD(创建、读取、更新和销毁)操作。我找不到任何解释这一点的资源(仅适用于 Backbone)。
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 去年关闭。 Improve this
我需要一个提交多个单独请求的 django 表单,如果没有大量定制,我找不到如何做到这一点的示例。即,假设有一个汽车维修店使用的表格。该表格将列出商店能够进行的所有可能的维修,并且用户将选择他们想要进
我有一个 Multi-Tenancy 应用程序。然而,这个相同的应用程序有 liquibase。我需要在我的所有数据源中运行 liquibase,但是我不能使用这个 Bean。 我的应用程序.yml
我了解有关单元测试的一般思想,并已在系统中发生复杂交互的场景中使用它,但我仍然对所有这些原则结合在一起有疑问。 我们被警告不要测试框架或数据库。好的 UI 设计不适合非人工测试。 MVC 框架不包括一
我正在使用 docjure并且它的 select-columns 函数需要一个列映射。我想获取所有列而无需手动指定。 如何将以下内容生成为惰性无限向量序列 [:A :B :C :D :E ... :A
$condition使用说明和 $param在 findByAttributes在 Yii 在大多数情况下,这就是我使用 findByAttributes 的方式 Person::model()->f
我在 Ubuntu 11.10 上安装了 qtcreator sudo apt-get install qtcreator 安装的版本有:QT Creator 2.2.1、QT 4.7.3 当我启动
我是一名优秀的程序员,十分优秀!