springboot依赖之JDBC API

JDBC API

  • 依赖名称: JDBC API
  • 功能描述: Database Connectivity API that defines how a client may connect and query a database.
  • 数据库连接 API,定义客户端如何连接和查询数据库。

在 IntelliJ IDEA 中创建 Spring Boot 项目并使用 JDBC API 进行数据库操作,可以按照以下步骤操作:

<dependency>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-starter-jdbc</artifactId>
	        </dependency>

源码已开源,可以免费下载
码云gitee: https://gitee.com/CoderChange/springboot-all-dependencies

1. 创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA 并点击 “New Project”

  2. 选择 “Spring Initializr”,然后点击 “Next”

  3. 填写项目的基本信息

    • Group: com.dependencies
    • Artifact: spring-jdbc
    • Name: spring-jdbc
    • Description: spring-jdbc project for Spring Boot
    • Package name: com.dependencies
    • Packaging: Jar
    • Java: 17
  4. 选择依赖

    • Spring Web
    • Spring JDBC
    • MySQL Driver(使用 MySQL 数据库)
  5. 点击 “Next”,然后点击 “Finish”,等待 IDEA 下载依赖并初始化项目。
    在这里插入图片描述

2. 添加 MySQL 依赖

pom.xml 中确保包含 MySQL 依赖:

<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3. 配置数据库连接

src/main/resources/application.properties 文件中添加 MySQL 数据库连接信息:

# MySQL Database configuration
spring.datasource.url=jdbc:mysql://localhost:3306/spring-dependencies?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

# JPA & Hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

请根据实际情况修改 spring.datasource.urlspring.datasource.usernamespring.datasource.password

4. 创建数据库表

在 MySQL 中创建一个名为 spring-dependencies 的数据库,并创建一个示例表:

CREATE DATABASE spring-dependencies;

USE spring-dependencies;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '姓名',
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '邮箱',
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';

在这里插入图片描述

5. 编写 JDBC 代码

创建实体类

创建一个简单的用户实体类 User

package com.dependencies.springjdbc.model;

/**
 * @author zhizhou   2024/7/29 23:23
 */
public class User {
    
    private int id;
    private String name;
    private String email;
   
    public int getId() {
        return id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
}
创建 DAO 类

创建一个数据访问对象(DAO)类 UserDao,使用 JDBC 进行数据库操作:

package com.dependencies.springjdbc.dao;

import com.dependencies.springjdbc.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * @author zhizhou   2024/7/29 23:23
 */
@Repository
public class UserDao {
    
    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    private static final class UserMapper implements RowMapper<User> {
        public User mapRow(ResultSet rs, int rowNum) throws SQLException {
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setEmail(rs.getString("email"));
            return user;
        }
    }
    
    public List<User> findAll() {
        return jdbcTemplate.query("SELECT * FROM users", new UserMapper());
    }
    
    public User findById(int id) {
        return jdbcTemplate.queryForObject("SELECT * FROM users WHERE id = ?", new UserMapper(), new Object[]{id});
    }
    
    public int save(User user) {
        return jdbcTemplate.update("INSERT INTO users (name, email) VALUES (?, ?)",
                user.getName(), user.getEmail());
    }
    
    public int update(User user) {
        return jdbcTemplate.update("UPDATE users SET name = ?, email = ? WHERE id = ?",
                user.getName(), user.getEmail(), user.getId());
    }
    
    public int deleteById(int id) {
        return jdbcTemplate.update("DELETE FROM users WHERE id = ?", id);
    }
}
创建服务类

创建一个服务类 UserService,编写封装简单的业务逻辑:

package com.dependencies.springjdbc.service;

import com.dependencies.springjdbc.dao.UserDao;
import com.dependencies.springjdbc.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author zhizhou   2024/7/29 23:29
 */
@Service
public class UserService {
    
    @Autowired
    private UserDao userDao;
    
    public List<User> findAll() {
        return userDao.findAll();
    }
    
    public User findById(int id) {
        return userDao.findById(id);
    }
    
    public int save(User user) {
        return userDao.save(user);
    }
    
    public int update(User user) {
        return userDao.update(user);
    }
    
    public int deleteById(int id) {
        return userDao.deleteById(id);
    }
}
创建控制器类

创建一个简单的控制器类 UserController,处理 用户相关的HTTP 请求:

package com.dependencies.springjdbc.controller;

import com.dependencies.springjdbc.model.User;
import com.dependencies.springjdbc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author zhizhou   2024/7/29 23:22
 */

@RestController
@RequestMapping("/users")
public class UserController {
    
    @Autowired
    private UserService userService;
    
    @GetMapping
    public List<User> findAll() {
        return userService.findAll();
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<User> findById(@PathVariable int id) {
        User user = userService.findById(id);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @PostMapping
    public ResponseEntity<String> save(@RequestBody User user) {
        int result = userService.save(user);
        if (result == 1) {
            return ResponseEntity.ok("用户信息创建成功");
        } else {
            return ResponseEntity.status(500).body("用户信息更新失败");
        }
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<String> update(@PathVariable int id, @RequestBody User user) {
        user.setId(id);
        int result = userService.update(user);
        if (result == 1) {
            return ResponseEntity.ok("用户信息更新成功");
        } else {
            return ResponseEntity.status(500).body("用户信息更新失败");
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<String> deleteById(@PathVariable int id) {
        int result = userService.deleteById(id);
        if (result == 1) {
            return ResponseEntity.ok("用户信息删除成功");
        } else {
            return ResponseEntity.status(500).body("用户信息删除失败");
        }
    }
}

6. 启动项目

在 IntelliJ IDEA 中,右键点击主类,选择 “Run”“Debug”。项目启动后,使用 Postman 或 curl 进行 HTTP 请求测试,验证各个 CRUD 操作。

示例请求

创建用户
curl -X POST "http://localhost:8080/users" -H "Content-Type: application/json" -d '{"name": "一周一志程序员", "email": "123456@gmail.com"}'
获取所有用户信息列表
curl -X GET "http://localhost:8080/users"
根据 ID 获取用户信息
curl -X GET "http://localhost:8080/users/1"
更新用户信息
curl -X PUT "http://localhost:8080/users/1" -H "Content-Type: application/json" -d '{"name": "一周一志程序员", "email": "654321@qq.com"}'
删除用户信息
curl -X DELETE "http://localhost:8080/users/1"

在这里插入图片描述

通过上述步骤,我们可以在 IDEA 中成功创建一个 Spring Boot 项目,并且使用 JDBC API 进行数据库操作。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sharding-JDBC 是一款基于 JDBC 的数据库中间件,用于将一个大型数据库表拆分成多个小表存储在不同的数据库中。Spring Boot 是一个非常流行的 Java 开发框架,它提供了很多方便的功能,比如自动配置、自动装配等,使得开发过程变得更加简单。 要在 Spring Boot 中整合 Sharding-JDBC,需要完成以下几个步骤: 1. 引入 Sharding-JDBC依赖 在 pom.xml 文件中添加 Sharding-JDBC 和对应的数据库驱动的依赖: ``` <dependency> <groupId>io.shardingjdbc</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>${sharding-jdbc.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> ``` 2. 配置 Sharding-JDBC 的数据源 在 application.yml(或 application.properties)文件中配置 Sharding-JDBC 的数据源。这里以 MySQL 数据库为例: ``` spring: datasource: driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource username: root password: 123456 url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false shardingsphere: datasource: names: ds0, ds1 ds0: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test0?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 123456 ds1: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 123456 sharding: tables: user_info: actualDataNodes: ds$->{0..1}.user_info$->{0..1} tableStrategy: standard: shardingColumn: id preciseAlgorithmClassName: io.shardingjdbc.core.api.algorithm.sharding.PreciseModuloShardingAlgorithm rangeAlgorithmClassName: io.shardingjdbc.core.api.algorithm.sharding.RangeModuloShardingAlgorithm ``` 其中,`datasource.names` 配置了数据源的名称,`datasource.ds0` 和 `datasource.ds1` 分别配置了两个数据库实例的连接信息。`sharding.tables` 配置了需要进行分片的表的信息,`actualDataNodes` 配置了分片后的数据节点,`tableStrategy` 配置了分片算法。 3. 配置 MyBatis 如果使用 MyBatis 作为 ORM 框架,需要在 MyBatis 的配置文件中配置 Sharding-JDBC 的插件和数据源: ``` <plugins> <plugin interceptor="io.shardingjdbc.spring.boot.masterslave.SpringBootMasterSlavePlugin"/> </plugins> <environments default="master_slave"> <environment id="master_slave"> <transactionManager type="JDBC"/> <dataSource type="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${spring.datasource.driver-class-name}"/> <property name="url" value="${spring.datasource.url}"/> <property name="username" value="${spring.datasource.username}"/> <property name="password" value="${spring.datasource.password}"/> </dataSource> </environment> </environments> ``` 4. 测试分片效果 完成以上步骤后,就可以启动应用程序并测试分片效果了。可以插入一些数据并进行查询,观察数据是否被正确地分配到了不同的数据库中。 以上是整合 Sharding-JDBCSpring Boot 的基本步骤。当然,在实际应用中还需要根据具体业务需求进行更加详细的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值