jdbc指定时区_Spring Boot 集成 JDBC

come on 0ecb72ef678406d07daf6f2f0e7da8ed.gif 伸出中指戳戳上方关注我……

Spring Boot 集成 JDBC

引言

今天有一个面向关系型数据库的应用程序接口,想给大家分享一下,用于Java数据库连接 进行查询和更新数据库,它就是 —— JDBC 。具体该如何使用呢?快来物色物色!

首先,我先带大家了解下 JDBC

JDBC 介绍

JDBCJava数据库连接,是 Java Database Connectivity简称,是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法

是一种用于执行 SQL 语句的 API,可以为多种关系数据库提供统一访问,它是由一组用 Java 语言编写的类和接口。是 Java 访问数据库的标准规范。

JDBC 也是 Sun Microsystems 的商标

集成过程

一、创建数据库,建测试 user 表

创建 spring-jdbc 数据库
CREATE DATABASE IF NOT EXISTS springboot-jdbc
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
创建 user 数据表
CREATE TABLE `springboot-jdbc`.`user`  (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `username` varchar(255) NULL COMMENT '用户名',
  `password` varchar(255) NULL COMMENT '密码',
  `sex` int(2) NULL COMMENT '性别',
  `age` int(5) NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
);

一、 依赖配置

添加依赖

在对应的项目 pom.xml 中引入 JDBCMySQL 的依赖包


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-jdbcartifactId>
dependency>


<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <scope>runtimescope>
dependency>
添加配置

Spring Boot 中的配置 JDBCymlproperties 选一种配置即可

  • application.yml
spring:
  datasource:
    #指定数据库驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
    #数据库类型
    platform: mysql
    #数据库jdbc连接url地址,serverTimezone设置数据库时区 Asia/Shanghai
    url: jdbc:mysql://localhost:3306/springboot-jdbc?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    #数据库账号
    username: root
    #数据库密码
    password: 123
  • application.properties
#指定数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库类型
spring.datasource.platform=mysql
#数据库jdbc连接url地址,serverTimezone设置数据库时区 Asia/Shanghai
spring.datasource.url=jdbc:mysql://localhost:3306/springboot-jdbc?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
#数据库账号
spring.datasource.username=root
#数据库密码
spring.datasource.password=123

「IP与端口、以及数据库的账号与密码等记得改为自己的」

因 SpringBoot 集成了 jdbc的配置文件,所以不需要专门去写配置类及初始化!

这时候只需要直接测试就可以了!

二、 创建 User 实体类

User

package com.example.springbootjdbc.bean;


import lombok.Data;

/**
 * @ClassName: User
 * @Description: (描述)
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/11/19 下午8:52
 */

@Data
public class User {
    /**
     * ID
     */
    private Integer id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 性别
     */
    private Integer sex;

    /**
     * 年龄
     */
    private Integer age;
    
}

完成了JDBCSpringBoot配置和实体类的创建,就可以通过依赖注入的方式使用JdbcTemplate

三、 创建  Dao  数据操作类,使用 JDBC

package com.example.springbootjdbc.dao;


import com.example.springbootjdbc.bean.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * @ClassName: UserDao
 * @Description: (描述)
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/11/19 下午9:38
 */

@Repository
public class UserDao {

    /**
     * SpringBoot提供的数据库操作类
     */
    @Resource
    private JdbcTemplate jdbcTemplate;

    /**
     * JDBC 查询数据
     *
     * @return List
     */
    public List getUserList() {

        //SQL
        String sql = "SELECT  *  FROM user ";

        //返回结果
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper(User.class));
    }


    /**
     * JDBC 写入数据
     *
     * @param user User
     */
    public int insertUser(User user) {

        //SQL
        String sql = " INSERT INTO user (username , password , sex , age ) values(?,?,?,?)";

        //执行写入
        return jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getSex(), user.getAge());
    }


    /**
     * 根据 条件查询数据
     *
     * @param id id
     * @return User
     */
    public User getUser(Integer id) {
        final User user = new User();

        //SQL
        String sql = "SELECT *  FROM user WHERE id = " + id;

        jdbcTemplate.query(sql, new RowCallbackHandler() {
            //映射每行数据
            @Override
            public void processRow(ResultSet rs) throws SQLException {
                user.setId(id);
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setSex(rs.getInt("sex"));
                user.setAge(rs.getInt("age"));
            }
        });
        return user;
    }

    /**
     * JDBC 更新数据
     *
     * @param user
     * @return int
     */
    public int updateUser(User user) {

        //SQL
        String sql = "UPDATE user SET username = ? , password = ? , sex = ? , age = ?  where id = ?";

        //返回结果
        return jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getSex(), user.getAge(), user.getId());
    }

    /**
     * JDBC 删除数据
     *
     * @param id id
     */

    public int deleteUser(Integer id) {

        //SQL
        String sql = "DELETE FROM user WHERE id = ?";

        return jdbcTemplate.update(sql, id);
    }

}

四、service 接口及 impl 接口实现类 逻辑层

service 接口

package com.example.springbootjdbc.service;


import com.example.springbootjdbc.bean.User;

import java.util.List;

/**
 * @ClassName: UserSerivce
 * @Description: (描述)
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/11/19 下午10:07
 */
public interface UserSerivce {


    /**
     * 查询数据
     */
    List getUserList();


    /**
     * 写入数据
     */
    int insertUser(User user);


    /**
     * 条件查询
     */
    User getUser(Integer id);

    /**
     * 更新数据
     */
    int updateUser(User user);


    /**
     * 删除数据
     */
    int deleteUser(Integer id);


}

UserServiceImpl

package com.example.springbootjdbc.service.impl;


import com.example.springbootjdbc.bean.User;
import com.example.springbootjdbc.dao.UserDao;
import com.example.springbootjdbc.service.UserSerivce;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @ClassName: UserServiceImpl
 * @Description: (描述)
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/11/19 下午10:12
 */

@Service
public class UserServiceImpl implements UserSerivce {


    @Resource
    private UserDao userDao;


    @Override
    public List getUserList() {
        return userDao.getUserList();
    }

    @Override
    public int insertUser(User user) {
        return userDao.insertUser(user);
    }

    @Override
    public User getUser(Integer id) {
        return userDao.getUser(id);
    }

    @Override
    public int updateUser(User user) {
        return userDao.updateUser(user);
    }

    @Override
    public int deleteUser(Integer id) {
        return userDao.deleteUser(id);
    }
}

四、 测试使用

直接使用 SpringBootTest 进行测试

给 Test 基础类添加 开始和结束测试

SpringBootMemcacheXmemcachedApplicationTests 基础类

package com.example.springbootmemcachexmemcached;

import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


/**
 * @ClassName: SpringBootMemcacheXmemcachedApplicationTests
 * @Description: (描述) SpringBootTest 测试基础类,其他类继承此类
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/10/12 15:55
 */

@RunWith(SpringRunner.class)
@Slf4j
@SpringBootTestclass SpringBootMemcacheXmemcachedApplicationTests {

    private Long time;

    @Test
    void contextLoads() {

    }

    @Before
    public void setUp() {
        this.time = System.currentTimeMillis();
        log.info("==> 测试开始执行 <==");
    }

    @After
    public void tearDown() {
        log.info("==> 测试执行完成,耗时:{} ms <==", System.currentTimeMillis() - this.time);
    }

}

JDBC 测试类继承 SpringBootTest测试基础类

JDBCTest 测试类

package com.example.springbootjdbc;

import com.example.springbootjdbc.bean.User;
import com.example.springbootjdbc.service.UserSerivce;
import org.springframework.beans.factory.annotation.Autowired;
import org.junit.Test;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;


import java.util.List;

/**
 * @ClassName: JDBCTest
 * @Description: (描述)
 * @Author: WHT
 * @Version: V1.0
 * @Date: 2020/11/19 下午11:06
 */
@Slf4j
@Component
public class JDBCTest extends SpringBootJdbcApplicationTests {

    @Autowired
    private UserSerivce userSerivce;

    /**
     * 新增数据
     */

    @Test
    public void save() {

        User user = new User();
        user.setUsername("张三");
        user.setPassword("zhangsan");
        user.setSex(0);
        user.setAge(30);

        int row = userSerivce.insertUser(user);
        //判断结果
        if (row == -1) {
            System.out.println("新增失败");
        } else {
            System.out.println("新增成功");

        }
    }

    /**
     * 查询数据
     */
    @Test
    public void query() {
        //查寻数据
        List userList = userSerivce.getUserList();//返回数据
        System.out.println(userList.toString());
    }/**
     * 更新数据
     */@Testpublic void update() {//新建对象传递数据
        User user = new User();
        user.setId(1);
        user.setUsername("修改");
        user.setPassword("123");
        user.setSex(1);
        user.setAge(10);//执行更新操作int row = userSerivce.updateUser(user);//判断结果if (row == -1) {
            System.out.println("新增失败");
        } else {
            System.out.println("新增成功");
        }
    }/**
     * 删除数据
     */@Testpublic void delete() {//初始化数据
        Integer id = 1;//执行删除int row = userSerivce.deleteUser(id);//判断结果if (row == -1) {
            System.out.println("新增失败");
        } else {
            System.out.println("新增成功");
        }
    }
}

CRUD自行查看测试结果日志及数据库是否添加成功,如发现数据库数据查询和更新、删除了,证明测试成功

示例代码

如需有小伙伴想要 示例代码点击/复制 以下链接查看

GitHub - 示例代码 文末查看👇[1]

Gitee - 示例代码 文末查看👇[2]

总结

看到这今天的 Spring Boot 集成 Memcached 就到此完结了,是不是非常简单,非常nice,这下再也不怕数据库的压力大了。快去赶快试试!别着急,还有更多的秘密等着你来探索!

8f012d08554fc4444fdda5a2c0995b32.png

分享嗨起来,在看点起来,美德传起来,点个星标从此探索之路不迷茫!

Reference

[1]

「GitHub - 示例代码」 复制查看👉: https://github.com/AllanTian/spring-boot-examples-demo

[2]

「Gitee - 示例代码」  复制查看👉: https://gitee.com/allantian/spring-boot-examples-demo

END

  转 载 须 知  

本文由 余存 原创

本文作者|余存

公众号|超Ren专属  ( ID : crenzsu) 

CSDN|超Ren专属 

原创不易,若觉喜欢,点个在看,尽情分享

转载请回复后台 “ 转载 ” 查看

秘密精选

围观

047dfe81c0de6771766276ddbcc5cf7c.gif  爪哇基础 之 JavaBean与Map相互转换工具类

丨更多

热文

 爪哇基础 之 读取文件数据工具类

丨更多

长按下图二维码关注,你将探索程序更多的秘密,且每篇文章都有干货。

372019bc14a5f1859ce9c28450081347.png

喜欢就点个在看再走吧 5897e5a7f20c34aa29a79c0fc8b6c325.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值