微服务,微架构[二]之springboot集成jdbc

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 一、在配置连接数据源连接池springboot支持多种方式C3P0,DruidDataSource,c3p0,proxool等等,Druid连接池是采用java编写,在国内使用比较多,同时也经历了很多项目的实战,所以本次演示采用Druid连接池来处理数据源的连接 二、在连接数据源中,一般我们会采用两种方式处理          1、DataSource方式          2、Jn

一、在配置连接数据源连接池springboot支持多种方式C3P0,DruidDataSource,c3p0,proxool等等,Druid连接池是采用java编写,在国内使用比较多,同时也经历了很多项目的实战,所以本次演示采用Druid连接池来处理数据源的连接

二、在连接数据源中,一般我们会采用两种方式处理

         1、DataSource方式

         2、Jndi方式

         本文重点采用DataSource方式进行配置,完成本文实例,由于需要对数据操作,本文演示接口采用html方式进行增删改查页面操作


三、关键性:相关参数数据源配置说明

         #1.基础配置

         数据库连接池配置

         spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
         spring.datasource.url=jdbc:mysql://localhost:3306/boot
         spring.datasource.username=root
         spring.datasource.password=123456
         spring.datasource.driver-class-name=com.mysql.jdbc.Driver


         #2.扩展配置

         初始化连接数量

         spring.datasource.initialSize=5

         最小空闲连接数

         spring.datasource.minIdle=5

         最大空闲连接数

         spring.datasource.maxActive=20

         最大等待毫秒时间

         spring.datasource.maxWait=60000
         spring.datasource.timeBetweenEvictionRunsMillis=60000
         spring.datasource.minEvictableIdleTimeMillis=300000
         spring.datasource.validationQuery=SELECT 1 FROM DUAL
         spring.datasource.testWhileIdle=true
         spring.datasource.testOnBorrow=false
         spring.datasource.testOnReturn=false
         spring.datasource.poolPreparedStatements=true
         spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
         spring.datasource.filters=stat,wall,log4j

         spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000


四、服务器tomcat配置说明

         # tomcat端口号
         server.port=80

         # tomcat项目名称定义

         server.context-path=/eshengtai

五、java代码展示

        1、初始化脚本

DROP TABLE IF EXISTS `eshengtai`;
CREATE TABLE `eshengtai` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        2、java实体类

/**   
 * @Title: Demo.java 
 * @Package com.didispace.bean
 * Copyright: Copyright (c) 2015
 * @author: abc   
 * @date: 2017年1月16日 上午11:15:05 
 *
 */
package com.didispace.bean;

public class eshengtai {

	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

3、service接口和实现类

package com.didispace.service;

import java.util.List;

import com.didispace.bean.eshengtai;

/**
 * @author e生态
 * @version 1.0.0
 * @date 16/3/17 下午7:04.
 * @blog http://blog.csdn.net/ysl_228
 */
public interface UserService {

    /**
     * 新增一个用户
     * @param name
     * @param age
     */
    void create(String name, Integer age);

    /**
     * 根据name删除一个用户高
     * @param name
     */
    void deleteByName(String name);

    /**
     * 获取用户总量
     */
    Integer getAllUsers();

    /**
     * 删除所有用户
     */
    void deleteAllUsers();
    
    /**
     * 获取所有数据
     * @Title: selectAll
     * @return
     *
     */
    public List<eshengtai> selectAll();


}

package com.didispace.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import com.didispace.bean.eshengtai;

/**
 * @author e生态
 * @version 1.0.0
 * @date 16/3/17 下午6:44.
 * @blog http://blog.csdn.net/ysl_228
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void create(String name, Integer id) {
        jdbcTemplate.update("insert into eshengtai(id, name) values(?, ?)", id , name);
    }

    @Override
    public void deleteByName(String name) {
        jdbcTemplate.update("delete from eshengtai where NAME = ?", name);
    }

    @Override
    public Integer getAllUsers() {
        return jdbcTemplate.queryForObject("select count(1) from eshengtai", Integer.class);
    }

    @Override
    public void deleteAllUsers() {
        jdbcTemplate.update("delete from eshengtai");
    }
    
    @Override
    public List<eshengtai> selectAll() {
        return jdbcTemplate.query("select id,name from eshengtai", new Object[]{}, new BeanPropertyRowMapper<eshengtai>(eshengtai.class));
    }
}


4、控制层代码结构

package com.didispace.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.didispace.bean.eshengtai;
import com.didispace.service.UserService;

/**
 *
 * @author e生态
 * @version 1.0.0
 * @blog http://blog.csdn.net/ysl_228
 *
 */
@Controller
public class HelloController {
	
	@Autowired
	private UserService userService;
	
	/**
	 * 添加数据
	 * @Title: add
	 * @param map
	 * @return
	 *
	 */
	@RequestMapping("/add")
	public String add(eshengtai demo ,ModelMap map){
		userService.create(demo.getName(), demo.getId());
		map.addAttribute("list",userService.selectAll());
		return "index";
	}
	
	@RequestMapping("/list")
	public String add(ModelMap map){
		map.addAttribute("list",userService.selectAll());
		return "index";
	}

    @RequestMapping("/")
    public String index(ModelMap map) {
        map.addAttribute("host", "http://blog.csdn.net/ysl_228");
        return "index";
    }

}

5、项目启动类

package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 *
 * @author e生态
 * @version 1.0.0
 * @blog http://blog.csdn.net/ysl_228
 *
 */
@SpringBootApplication
public class Application {

	public static void main(String[] args) {

		SpringApplication.run(Application.class, args);

	}

}

6、配置参数文件application.properties

#tomcat port , project Name
server.port=80
server.context-path=/eshengtai

#1.jdbc config
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/boot
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#2.extend config
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=stat,wall,log4j
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

7、静态pom.xml文件

<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>
	<groupId>spring-boot-properties</groupId>
	<artifactId>spring-boot-properties</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.2.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>



</project>

8、操作增、删、改、查页面代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8" />
    <title></title>
</head>
<body>
<h1 th:text="${host}">数据列表</h1>
<form action="http://localhost/boot/add" method="post">
	ID:<input type="text" name="id" />
	NAME:<input type="text" name="name" />
	
	<input type="submit"  value="提交" />
</form>
<hr/>
<div th:each="demo,iterStat : ${list}">
    <span th:text="${demo.id}">id</span>
    <span th:text="${demo.name}">name</span>
    <br/>
  </div>
</body>
</html>

项目结构及演示图





以上就是所有springboot集成jdbc整体演示截图与代码,如果各位有好的想法与建议,还清大家在下面评论,本人非常愿意进行测试,会将测试结果反馈给各位。






















 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
423 37
|
2月前
|
Java 数据库连接 数据库
SpringBoot 整合jdbc和mybatis
本文详细介绍了如何在SpringBoot项目中整合JDBC与MyBatis,并提供了具体的配置步骤和示例代码。首先,通过创建用户实体类和数据库表来准备基础环境;接着,配置Maven依赖、数据库连接及属性;最后,分别展示了JDBC与MyBatis的集成方法及其基本操作,包括增删查改等功能的实现。适合初学者快速入门。
SpringBoot 整合jdbc和mybatis
|
1月前
|
JSON 前端开发 Java
Spring Boot框架中的响应与分层解耦架构
在Spring Boot框架中,响应与分层解耦架构是两个核心概念,它们共同促进了应用程序的高效性、可维护性和可扩展性。
53 3
|
1月前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
62 2
|
2月前
|
存储 Java 数据库
Spring Boot 优雅实现多租户架构
本文详细介绍如何使用Spring Boot和Spring Cloud实现多租户架构。多租户架构允许多个租户共用一个应用,各自拥有独立资源和数据。其优势包括满足个性化需求、降低成本、复用代码以及增强可扩展性。文中探讨了架构选型、数据库设计、应用部署及租户管理等内容,并提供了具体实现步骤和技术细节。适用于SaaS应用和多租户云服务等场景。
|
druid Java 数据库连接
深入学习SpringBoot微服务框架
深入学习SpringBoot微服务框架
深入学习SpringBoot微服务框架
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
152 1
|
22天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
97 62
|
20天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
38 2