当前位置: 代码迷 >> 综合 >> Spring Boot之jdbc数据操作06
  详细解决方案

Spring Boot之jdbc数据操作06

热度:13   发布时间:2024-02-10 14:24:21.0

Spring Boot之jdbc数据操作06

JDBC

通过快速创建spring boot项目选择 mysql 和jdbc 创建一个基于web的spring boot项目

依赖为

<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>

通过配置yaml的配置文件来配置数据源DataSource

spring:datasource:username: rootpassword: 123456url: jdbc:mysql://192.168.15.22:3306/jdbcdriver-class-name: com.mysql.jdbc.Driver

效果:

默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;

数据源的相关配置都在DataSourceProperties里面;

自动配置原理:

org.springframework.boot.autoconfigure.jdbc:

1、参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;可以使用spring.datasource.type指定自定义的数据源类型;

2、SpringBoot默认可以支持;

org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource、

3、自定义数据源类型

 

/*** Generic DataSource configuration.*/
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type")
static class Generic {@Beanpublic DataSource dataSource(DataSourceProperties properties) {//使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性return properties.initializeDataSourceBuilder().build();}}

4、DataSourceInitializer:ApplicationListener;

作用:

1)、runSchemaScripts();运行建表语句;

2)、runDataScripts();运行插入数据的sql语句;

默认只需要将文件命名为:

schema-*.sql、data-*.sql
默认规则:schema.sql,schema-all.sql;
可以使用   schema:- classpath:department.sql指定位置

5、操作数据库:自动配置了JdbcTemplate操作数据库

通过spring 提供的JdbcTemplate 可以执行crud操作

编写控制器类


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;
import java.util.Map;@Controller
public class JdbcController {@AutowiredJdbcTemplate jdbcTemplate;@ResponseBody@GetMapping("/qu")public Map<String,Object> select(){List<Map<String, Object>> maps = jdbcTemplate.queryForList("select * from user ");return maps.get(0);}
}

通过开启服务器访问就可以在页面上看到返回的查询第一条的数据

  相关解决方案