文档章节

利用springboot使用JdbcTemplate连接数据库

啊哈关关
 啊哈关关
发布于 2017/06/02 17:33
字数 770
阅读 52
收藏 0

1.pom.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<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>com.test</groupId>
    <artifactId>jdbc</artifactId>
    <version>1.0-SNAPSHOT</version>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <dependencies>
        <!--引入jdbc支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--引入嵌入式数据库支持h2,springboot提供自动配置的嵌入式数据库有h2,hsql,derby,即不需要提供任何连接配置就能使用-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
    </dependencies>


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

</project>

我们在pom文件里可以看到,com.h2database这个库起作用的范围是runtime,也就是说,当应用程序启动时,如果Spring Boot在classpath下检测到org.h2.Driver的存在,会自动配置H2数据库连接。现在启动应用程序来观察,以验证我们的想法。

2.实体类Customer.java文件

package hello;

/**
 * Created by guanguan on 17/6/1.
 */
public class Customer {

    private long id;
    private String firstName, lastName;

    public Customer(long id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString(){
        return String.format("Customer[id=%d,firstName='%s',lastName='%s']",id,firstName,lastName);

    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}


3.Application.java文件,为应用程序的入口文件,负责程序启动以及一些基础性的工作。

package hello;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * Created by guanguan on 17/6/1.
 */
@SpringBootApplication
public class Application  implements CommandLineRunner{


    private static final Logger log = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public void run(String... strings) throws Exception{

        log.info("creating tables;");

 jdbcTemplate.execute("DROP TABLE customers IF EXISTS");

        jdbcTemplate.execute("CREATE  TABLE customers (id SERIAL,first_name VARCHAR(255),last_name VARCHAR(255))");


        List<Object[]> splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long").stream()
                .map(name -> name.split(" "))
                .collect(Collectors.toList());

        splitUpNames.forEach(name->log.info(String.format("Inserting customer record for %s,%s",name[0],name[1])));

        jdbcTemplate.batchUpdate("INSERT INTO customers(first_name,last_name) VALUES (?,?)",splitUpNames);

        log.info("Querying for customer records where first_name='Josh':");

        
        jdbcTemplate.query(
                "SELECT id, first_name, last_name FROM customers WHERE first_name = ?", new Object[] { "Josh" },
                (rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("first_name"), rs.getString("last_name"))
        ).forEach(customer -> log.info(customer.toString()));
    }


}

运行结果:

2017-06-02 10:40:54.671  INFO 13599 --- [           main] hello.Application                        : creating tables---1;
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for John,Woo
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Jeff,Dean
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Josh,Bloch
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Josh,Long
2017-06-02 10:40:54.890  INFO 13599 --- [           main] hello.Application                        : Querying for customer records where first_name='Josh':
2017-06-02 10:40:54.896  INFO 13599 --- [           main] hello.Application                        : Customer[id=3,firstName='Josh',lastName='Bloch']
2017-06-02 10:40:54.896  INFO 13599 --- [           main] hello.Application                        : Customer[id=4,firstName='Josh',lastName='Long']
2017-06-02 10:40:54.898  INFO 13599 --- [           main] hello.Application                        : Started Application in 2.847 seconds (JVM running for 3.539)
2017-06-02 10:40:54.901  INFO 13599 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2f8f5f62: startup date [Fri Jun 02 10:40:52 CST 2017]; root of context hierarchy
2017-06-02 10:40:54.907  INFO 13599 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

Process finished with exit code 0

==============================================================================3.如果是自定义的数据库

pom.xml文件

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

连接生产数据库/src/main/resources/application.yml文件

spring:
  datasource:
     url: jdbc:mysql://127.0.0.1/test
     username: root
     password: 123456
     driverClassName: com.mysql.jdbc.Driver

 

 

© 著作权归作者所有

共有 人打赏支持
啊哈关关
粉丝 8
博文 163
码字总数 75282
作品 0
深圳
程序员
私信 提问
SpringBoot 学习二:操作数据库

本文将从以下几个方面介绍: 前言 配置数据源 SpringBoot 整合 Mybatis SpringBoot 整合 JdbcTemplate SpringBoot 整合 Redis 前言 在上篇文章 SpringBoot 学习一 中已经学习了 SpringBoot的...

tsmyk0715
09/26
0
0
不学无数——SpringBoot入门VI

SpringBoot ## 1 连接数据库 Spring框架为连接数据库提供了许多的帮助,从JDBC连接到使用JdbcTemplate完成元素之间的映射技术。例如Hibernate、Spring Data提供了更高级别的功能,创建Repos...

不学无数的程序员
11/22
0
0
不学无数——SpringBoot入门VI

SpringBoot 1 连接数据库 Spring框架为连接数据库提供了许多的帮助,从JDBC连接到使用JdbcTemplate完成元素之间的映射技术。例如Hibernate、Spring Data提供了更高级别的功能,创建Repositor...

不学无数的程序员
11/22
0
0
SpringBoot学习【简】

这里有一个不错的专栏,推荐一下 SpringBoot 教程 SpringBoot(四):SpringBoot整合JdbcTemplate SpringBoot(五):SpringBoot整合MyBatis 尤其这两文...

anlve
05/22
0
0
SpringBoot基础教程4-1-1 使用JdbcTemplate操作数据库及事务管理

1 概述 封装的,使用模板模式,去除繁琐的重复代码,并提供了基于注解的事务管理;下面详细介绍如何使用操作数据和事务管理。 2 添加依赖 会自动初始化 3 数据源配置 以上就是需要新增的配置...

Mkeeper
12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析Node.js通过axios实现网络请求

本次给大家分享一篇node.js通过axios实现网络请求的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 1、使用Npm 下载axios n...

前端攻城老湿
4分钟前
0
0
深入浅出之React-redux中connect的装饰器用法@connect

这篇文章主要介绍了react-redux中connect的装饰器用法@connect详解,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 通常我们需要一...

前端攻城小牛
5分钟前
0
0
详解css BEM书写规范

BEM是基于组件的web开发方法。其思想是将用户界面分隔为独立的块,从而使开发复杂的UI界面变得更简单和快,且不需要粘贴复制便可复用现有代码。BEM由Block、Element、Modifier组成。选择器里...

前端小攻略
21分钟前
2
0
一个centos初始化脚本

概述 就是自己无聊写的一个脚本,欢迎使用,star,fork顺便关注我一波 https://github.com/bboysoulcn/centos 使用方法 这个是给最小化安装的centos使用的,在centos 7.5上测试过,当然其他的...

bboysoulcn
25分钟前
3
0
mybatis 自动维护 createdAt, updatedAt

SpringBoot Mybatis Plus公共字段自动填充功能

youngjdong
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部