文档章节

利用springboot使用JdbcTemplate连接数据库

啊哈关关
 啊哈关关
发布于 2017/06/02 17:33
字数 770
阅读 51
收藏 0
点赞 0
评论 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

 

 

© 著作权归作者所有

共有 人打赏支持
啊哈关关
粉丝 5
博文 126
码字总数 63808
作品 0
深圳
程序员
SpringBoot学习【简】

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

anlve ⋅ 05/22 ⋅ 0

springboot的后台系统的初步搭建

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

代金券优惠 ⋅ 04/15 ⋅ 0

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://projects.spring.io/spring-boot/ SpringBoot介绍 Spring Boot使开发独立的,产品级别的基于Spring的...

路上有你0314 ⋅ 05/10 ⋅ 0

使用IntelliJ Idea新建SpringBoot项目

简单给大家介绍一下我来创建SpringBoot项目使用的工具,本人使用IntelliJ Idea来创建项目,利用其中的Spring Initializr工具来快速创建项目。 步骤如下: 菜单栏中选择File--New--Project,出...

dalaoyang ⋅ 03/11 ⋅ 0

学习 Spring Boot 知识看这一篇就够了

从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了,其中一部分...

ityouknow ⋅ 05/28 ⋅ 0

恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年 ⋅ 04/19 ⋅ 0

第五十章:SpringBoot2.0新特性 - 岂止至今最简单redis缓存集成

自从升级到了版本后集成作为缓存就更为简单了,我们只需要配置相关的链接信息以及使用注解开启缓存,这样我们就直接可以在项目内使用缓存相关的内容。 由于最近这段时间一直在研发公司的持久...

恒宇少年 ⋅ 04/15 ⋅ 0

Netty(一) SpringBoot 整合长连接心跳机制

前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要...

crossoverJie ⋅ 05/28 ⋅ 0

SpringBoot 入门实例

SpringBoot 是由 pivotal 提供的 Java 开发框架,伴随着 spring 4.0 版本一起发布,旨在简化 Spring 项目的初始化及开发过程,框架本身为开发过程提供了大量的默认配置,当然我们也可以通过简...

Aotian ⋅ 05/29 ⋅ 0

SpringBoot 2.0 系列006 --启动实战之注解使用

SpringBoot 2.0 系列006 --启动实战之注解使用 一些误区说明 网上很多教程默认使用SpringBootApplcation注解,且只用这个即可扫描启动类包下所有的bean。 而官方默认教程使用的是@EnableAuto...

路上有你0314 ⋅ 05/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 4分钟前 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 20分钟前 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 28分钟前 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 32分钟前 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 51分钟前 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 58分钟前 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 58分钟前 ⋅ 0

聊聊spring cloud gateway的RedisRateLimiter

序 本文主要研究下spring cloud gateway的RedisRateLimiter GatewayRedisAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/gateway/con......

go4it ⋅ 今天 ⋅ 0

169. Majority Element - LeetCode

Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排序,次数超过n/2的元素必然在中...

yysue ⋅ 今天 ⋅ 0

NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

派派菠菜 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部