Spring Boot 集成 JDBC

Spring Boot 集成 JDBC

专属目录

Spring Boot 集成 JDBC引言JDBC 介绍集成过程一、创建数据库,建测试 user 表创建 spring-jdbc 数据库创建 user 数据表

二、 依赖配置添加依赖添加配置

三、 创建 User 实体类四、 创建 Dao 数据操作类,使用 JDBC五、service 接口及 impl 接口实现类 逻辑层六、 测试使用

示例代码总结

Spring Boot 集成 JDBC

引言

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

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

JDBC 介绍

JDBC 是 Java数据库连接,是 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 中引入 JDBC 和 MySQL 的依赖包

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

runtime

添加配置

在 Spring Boot 中的配置 JDBC , yml 与 properties 选一种配置即可

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;

}

完成了JDBC和SpringBoot的配置和实体类的创建,就可以通过依赖注入的方式使用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

@SpringBootTest

class 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());

}

/**

* 更新数据

*/

@Test

public 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("新增成功");

}

}

/**

* 删除数据

*/

@Test

public void delete() {

//初始化数据

Integer id = 1;

//执行删除

int row = userSerivce.deleteUser(id);

//判断结果

if (row == -1) {

System.out.println("新增失败");

} else {

System.out.println("新增成功");

}

}

}

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

示例代码

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

GitHub - 示例代码 文末查看👇

Gitee - 示例代码 文末查看👇

总结

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

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

微信扫描二维码,关注我的原创日更公众号,可以查看更多程序的秘密!

相关文章

红色警戒2下载
现金365

红色警戒2下载

🌱 07-31 💬 844
小米售后投诉最有效的方式
现金365

小米售后投诉最有效的方式

🌱 10-13 💬 69
e路航导航系统的使用体验怎么样
365scores下载

e路航导航系统的使用体验怎么样

🌱 09-02 💬 621