文档章节

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

 

 

© 著作权归作者所有

共有 人打赏支持
啊哈关关
粉丝 7
博文 155
码字总数 72670
作品 0
深圳
程序员
SpringBoot 学习二:操作数据库

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

tsmyk0715
09/26
0
0
SpringBoot学习【简】

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

anlve
05/22
0
0
Spring Boot入门资料整理

Spring Boot 初识 SpringBoot前世今生 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。 Spring Boot参考指南中文版--Chapter1.Spring Boot中文文档 本节提供...

小致dad
2017/11/07
0
0
springBoot 搭建web项目(前后端分离,附项目源代码地址)

概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端分离,利用ajax交互。 前端html 技术: + + + + 该项目git地址:https://github.com/jiangcaijun/sp...

开源小菜鸟2333
2017/11/01
0
0
springboot的后台系统的初步搭建

springboot的后台系统的初步搭建 基于springboot的设备管理系统的架构搭建 使用工具:idea 数据库:mysql 相关技术:shiro mybatis activemq等 (1) 新建项目 new project ,idea有专门的sprin...

代金券优惠
04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python:关于读取文件的指定行的问题

先来造一个文件:就叫做 test.txt吧,内容是下面这个样子: 表头1,数据12,数据23,数据34,数据45,数据56,数据67,数据7 那么我们并不打算把这个表头给读出来 怎么办呢? 先来打开文...

Oh_really
9分钟前
0
0
Rails 用现代 Rails 逃离单页面应用 “兔子洞”

在工作共总是觉得turbolinks非常爽,但是却总是被说成是过时的技术,大家都喜欢spa,哪怕不用的spa的人也是禁用掉的多,找不到很好的理由劝说别人使用,这篇文章说的很到位,或者说至少是牛人...

wmzsonic
13分钟前
0
0
Hive 分布式搭建,Spark集成Hive记录

本帖详细介绍搭建步骤,仅仅记录自己搭建过程以及采坑经历。 前提环境: Hadoop集群 版本2.7.2 Spark集群 版本2.1.0 Linux版本 Centos7 准备搭建 MySql版本5.5.61 ,Hive-2.1.0 去官网下载M...

我爱春天的毛毛雨
16分钟前
0
0
打包QML程序

1、windeployqt执行路径(D:\Qt\5.12.0\msvc2017_64\bin)加入到PATH中 2、使用Qt自带的命令行交互 Command 终端(Qt 5.12.0 64-bit for Desktop (MSVC 2017))切换到 Release 编译成功的exe...

渣渣曦
53分钟前
4
0
优秀互联网高级测试工程师应该具备的能力

概述 在之前写的互联网高级测试工程师至少具备的能力一文中,提到了测试工程师至少具备的能力,但是并没有提到优秀测试工程师应该具备的能力,下文简单的谈一谈。当然这些全部都是我的个人理...

Sam哥哥聊技术
57分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部