最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot2中常見(jiàn)的數(shù)據(jù)庫(kù)訪問(wèn)方法詳解

 更新時(shí)間:2025年10月13日 09:38:48   作者:杰西筆記  
在現(xiàn)代 Java 企業(yè)級(jí)開(kāi)發(fā)中,Spring Boot 已成為構(gòu)建微服務(wù)和 Web 應(yīng)用的主流框架,本文將圍繞 Spring Boot 2 版本深入講解如何進(jìn)行高效,穩(wěn)定的數(shù)據(jù)庫(kù)訪問(wèn),希望對(duì)大家有所幫助

前言

在現(xiàn)代 Java 企業(yè)級(jí)開(kāi)發(fā)中,Spring Boot 已成為構(gòu)建微服務(wù)和 Web 應(yīng)用的主流框架。其“約定優(yōu)于配置”的設(shè)計(jì)理念極大地簡(jiǎn)化了項(xiàng)目搭建與維護(hù)成本。而在實(shí)際開(kāi)發(fā)過(guò)程中,數(shù)據(jù)庫(kù)操作 是絕大多數(shù)應(yīng)用的核心功能之一。本文將圍繞 Spring Boot 2 版本(以 2.7.x 為主),深入講解如何進(jìn)行高效、穩(wěn)定的數(shù)據(jù)庫(kù)訪問(wèn),涵蓋多種主流技術(shù)棧,并結(jié)合實(shí)際案例,幫助開(kāi)發(fā)者全面掌握 Spring Boot 中的數(shù)據(jù)持久化方案。

一、使用 Spring Data JPA 實(shí)現(xiàn) ORM 操作

1.1 什么是 JPA

JPA(Java Persistence API)是 Java EE 中定義的一套持久化規(guī)范,它并不直接操作數(shù)據(jù)庫(kù),而是由具體的實(shí)現(xiàn)(如 Hibernate、EclipseLink)來(lái)完成底層工作。Spring Data JPA 是 Spring 對(duì) JPA 規(guī)范的進(jìn)一步封裝,提供了更簡(jiǎn)潔的 API 和自動(dòng)化的 CRUD 支持。

適用場(chǎng)景:快速開(kāi)發(fā)、中小型項(xiàng)目、注重實(shí)體建模而非 SQL 控制的系統(tǒng)。

1.2 添加依賴(lài)并啟用 JPA

首先,在 pom.xml 文件中引入必要的依賴(lài):

<dependencies>
    <!-- Spring Data JPA 起步依賴(lài) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL 驅(qū)動(dòng) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Web 起步依賴(lài)(用于測(cè)試接口) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

Spring Boot 會(huì)自動(dòng)配置以下核心組件:

  • EntityManagerFactory:JPA 核心工廠,負(fù)責(zé)創(chuàng)建實(shí)體管理器。
  • PlatformTransactionManager:事務(wù)管理器,支持聲明式事務(wù)。
  • DataSource:數(shù)據(jù)源對(duì)象。
  • JpaRepositoriesAutoConfiguration:自動(dòng)掃描并注冊(cè) Repository 接口。

1.3 配置數(shù)據(jù)庫(kù)連接信息

application.yml 中配置 MySQL 數(shù)據(jù)源及 JPA 行為:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
    username: root
    password: yourpassword
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: update   # 自動(dòng)建表策略
    show-sql: true       # 控制臺(tái)輸出 SQL
    properties:
      hibernate:
        format_sql: true # 格式化 SQL 輸出
        dialect: org.hibernate.dialect.MySQL8Dialect  # 指定方言
    open-in-view: false  # 防止 N+1 查詢(xún)問(wèn)題

參數(shù)說(shuō)明:

ddl-auto:

  • none:不做任何處理
  • validate:驗(yàn)證表結(jié)構(gòu)是否匹配
  • update:更新表結(jié)構(gòu)(推薦開(kāi)發(fā)環(huán)境)
  • create:每次啟動(dòng)都重建表(慎用)
  • create-drop:?jiǎn)?dòng)時(shí)創(chuàng)建,關(guān)閉時(shí)刪除

生產(chǎn)環(huán)境建議設(shè)置為 none,通過(guò) Flyway 或 Liquibase 管理數(shù)據(jù)庫(kù)版本。

1.4 定義實(shí)體類(lèi)(Entity)

創(chuàng)建一個(gè)用戶(hù)實(shí)體類(lèi),映射到數(shù)據(jù)庫(kù)表 user

import javax.persistence.*;

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", length = 50, nullable = false)
    private String name;

    @Column(name = "age")
    private Integer age;

    @Column(name = "email", unique = true)
    private String email;

    // 構(gòu)造方法
    public User() {}

    public User(String name, Integer age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    // Getter 和 Setter 方法省略...
}

1.5 創(chuàng)建 Repository 接口

Spring Data JPA 的強(qiáng)大之處在于只需定義接口,無(wú)需編寫(xiě)實(shí)現(xiàn)類(lèi)即可完成 CRUD 操作。

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    // 根據(jù)姓名查詢(xún)(方法名解析)
    List<User> findByName(String name);

    // 根據(jù)姓名和年齡查詢(xún)
    List<User> findByNameAndAge(String name, Integer age);

    // 模糊查詢(xún)
    List<User> findByNameContaining(String keyword);

    // 使用 @Query 注解自定義 SQL
    @Query("SELECT u FROM User u WHERE u.age > :age")
    List<User> findByAgeGreaterThan(@Param("age") Integer age);
}

方法名解析機(jī)制:Spring Data JPA 支持通過(guò)方法名自動(dòng)生成查詢(xún)語(yǔ)句,如 findByXxxAndYyy、findByXxxOrderByYyyDesc 等。

1.6 編寫(xiě) Service 層邏輯

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Service
@Transactional
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }

    public User findById(Long id) {
        Optional<User> user = userRepository.findById(id);
        return user.orElse(null);
    }

    public User save(User user) {
        return userRepository.save(user);
    }

    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }

    public List<User> searchByName(String name) {
        return userRepository.findByNameContaining(name);
    }
}

1.7 控制器層暴露接口

import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAll() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User getById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User create(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping("/{id}")
    public User update(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id) {
        userService.deleteById(id);
    }
}

1.8 測(cè)試驗(yàn)證

啟動(dòng)應(yīng)用后,可通過(guò) Postman 或 curl 測(cè)試:

curl -X POST http://localhost:8080/api/users \
     -H "Content-Type: application/json" \
     -d '{"name":"張三","age":25,"email":"zhangsan@example.com"}'

查看控制臺(tái)輸出的 SQL 是否正常執(zhí)行。

二、集成 Druid 數(shù)據(jù)源提升性能與監(jiān)控能力

雖然 Spring Boot 默認(rèn)使用 HikariCP 作為連接池,但在國(guó)內(nèi)企業(yè)級(jí)項(xiàng)目中,Druid 因其強(qiáng)大的監(jiān)控功能和穩(wěn)定性被廣泛采用。

2.1 引入 Druid 依賴(lài)

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.11</version>
</dependency>

2.2 配置 Druid 數(shù)據(jù)源

修改 application.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 基礎(chǔ)連接屬性
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/springboot_db?useSSL=false&serverTimezone=UTC
      username: root
      password: yourpassword

      # 連接池配置
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false

      # 打開(kāi) PSCache,并指定每個(gè)連接上 PSCache 的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20

      # 配置監(jiān)控統(tǒng)計(jì)攔截的 filters
      filters: stat,wall,log4j

      # SQL 防火墻和慢 SQL 記錄
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

2.3 配置監(jiān)控頁(yè)面(StatViewServlet)

創(chuàng)建配置類(lèi)啟用 Druid 監(jiān)控:

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {

    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource dataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        StatViewServlet servlet = new StatViewServlet();
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(servlet, "/druid/*");

        Map<String, String> initParams = new HashMap<>();
        initParams.put("loginUsername", "admin");
        initParams.put("loginPassword", "123456");
        initParams.put("allow", ""); // 允許所有人訪問(wèn)
        initParams.put("deny", "192.168.1.1"); // 拒絕特定 IP

        bean.setInitParameters(initParams);
        return bean;
    }

    @Bean
    public FilterRegistrationBean<WebStatFilter> webStatFilter() {
        WebStatFilter filter = new WebStatFilter();
        FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(filter);
        bean.setUrlPatterns(Arrays.asList("/*"));
        bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return bean;
    }
}

訪問(wèn) http://localhost:8080/druid 即可進(jìn)入監(jiān)控頁(yè)面,查看:

  • SQL 執(zhí)行次數(shù)、耗時(shí)
  • 連接池狀態(tài)
  • 慢 SQL 日志
  • Web 請(qǐng)求統(tǒng)計(jì)

三、使用 MyBatis 進(jìn)行靈活 SQL 控制

當(dāng)業(yè)務(wù)邏輯復(fù)雜、需要精細(xì)控制 SQL 時(shí),MyBatis 是更合適的選擇。

3.1 添加依賴(lài)

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>

3.2 配置 MyBatis

mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.example.entity
  configuration:
    map-underscore-to-camel-case: true  # 開(kāi)啟駝峰映射
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 控制臺(tái)打印 SQL

3.3 編寫(xiě) Mapper 接口與 XML 映射文件

接口:

@Mapper
public interface UserMapper {
    List<User> findAll();
    User findById(Long id);
    int insert(User user);
    int update(User user);
    int deleteById(Long id);
}

XML 文件(src/main/resources/mapping/UserMapper.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.example.entity.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
        <result property="email" column="email"/>
    </resultMap>

    <select id="findAll" resultMap="BaseResultMap">
        SELECT * FROM user
    </select>

    <select id="findById" parameterType="long" resultMap="BaseResultMap">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.example.entity.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user(name, age, email) VALUES (#{name}, #{age}, #{email})
    </insert>

    <update id="update" parameterType="com.example.entity.User">
        UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}
    </update>

    <delete id="deleteById" parameterType="long">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

3.4 使用注解方式(可選)

對(duì)于簡(jiǎn)單 SQL,可以直接使用注解:

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("INSERT INTO user(name, age, email) VALUES (#{name}, #{age}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insert(User user);
}

四、整合 MyBatis-Plus 提升開(kāi)發(fā)效率

MyBatis-Plus 是 MyBatis 的增強(qiáng)工具,提供了通用 CRUD、分頁(yè)、代碼生成等功能,極大提升開(kāi)發(fā)效率。

4.1 添加依賴(lài)

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

4.2 配置插件(分頁(yè)支持)

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分頁(yè)插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

4.3 定義實(shí)體與 Mapper

@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

4.4 使用內(nèi)置方法完成 CRUD

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public List<User> listAll() {
        return userMapper.selectList(null);
    }

    public IPage<User> page(int pageNum, int pageSize) {
        Page<User> page = new Page<>(pageNum, pageSize);
        return userMapper.selectPage(page, null);
    }

    public List<User> searchByName(String name) {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.like("name", name);
        return userMapper.selectList(wrapper);
    }
}

4.5 條件構(gòu)造器(QueryWrapper)

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 18)
       .like("name", "王")
       .orderByDesc("id");

List<User> users = userMapper.selectList(wrapper);

五、其他數(shù)據(jù)庫(kù)訪問(wèn)方式簡(jiǎn)述

方式特點(diǎn)
JdbcTemplate輕量級(jí),適合簡(jiǎn)單 SQL,需手動(dòng)映射結(jié)果
Spring Data JDBC輕量 ORM,比 JPA 簡(jiǎn)單,適合簡(jiǎn)單對(duì)象映射
R2DBC響應(yīng)式數(shù)據(jù)庫(kù)連接,適用于 WebFlux 架構(gòu)

六、總結(jié)與選型建議

技術(shù)優(yōu)點(diǎn)缺點(diǎn)推薦場(chǎng)景
JPA快速開(kāi)發(fā),自動(dòng) CRUDSQL 控制弱,學(xué)習(xí)曲線陡中小型項(xiàng)目、快速原型
MyBatisSQL 靈活,易于優(yōu)化需寫(xiě) XML,維護(hù)成本高復(fù)雜查詢(xún)、遺留系統(tǒng)
MyBatis-Plus開(kāi)發(fā)效率極高,功能豐富對(duì)新手有一定門(mén)檻推薦首選,尤其互聯(lián)網(wǎng)項(xiàng)目
JdbcTemplate輕量、直接無(wú) ORM,編碼繁瑣簡(jiǎn)單腳本、工具類(lèi)
Druid監(jiān)控能力強(qiáng),穩(wěn)定配置較復(fù)雜所有生產(chǎn)環(huán)境推薦集成

最終建議

  • 若追求開(kāi)發(fā)效率與功能完整性,推薦 MyBatis-Plus + Druid
  • 若團(tuán)隊(duì)熟悉 JPA 且項(xiàng)目偏重領(lǐng)域模型,可選擇 Spring Data JPA
  • 若為高并發(fā)響應(yīng)式系統(tǒng),則考慮 R2DBC

通過(guò)本文的詳細(xì)講解,相信你已經(jīng)掌握了 Spring Boot 2 中各種數(shù)據(jù)庫(kù)操作方式的核心要點(diǎn)。在實(shí)際項(xiàng)目中,合理選擇技術(shù)棧,結(jié)合業(yè)務(wù)需求,才能構(gòu)建出高性能、易維護(hù)的應(yīng)用系統(tǒng)。

以上就是Springboot2中常見(jiàn)的數(shù)據(jù)庫(kù)訪問(wèn)方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Springboot數(shù)據(jù)庫(kù)訪問(wèn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot 功能整合的實(shí)現(xiàn)

    Spring Boot 功能整合的實(shí)現(xiàn)

    Spring Boot生態(tài)豐富,集成也不算困難。本文簡(jiǎn)單的介紹下功能整合的步驟,最后提供一個(gè)具體的實(shí)現(xiàn)例子,學(xué)習(xí)Spring Boot的同學(xué)可以參考下
    2021-05-05
  • BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明

    BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明

    這篇文章主要介紹了BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)

    SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • JAVA Integer類(lèi)型自加實(shí)例詳解

    JAVA Integer類(lèi)型自加實(shí)例詳解

    這篇文章主要介紹了JAVA Integer類(lèi)型自加實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Maven配置阿里云鏡像的實(shí)現(xiàn)示例

    Maven配置阿里云鏡像的實(shí)現(xiàn)示例

    Maven默認(rèn)中央倉(cāng)庫(kù)位于國(guó)外,國(guó)內(nèi)訪問(wèn)時(shí)易出現(xiàn)網(wǎng)絡(luò)延遲高、下載失敗或速度慢的問(wèn)題,配置阿里云鏡像可將依賴(lài)下載源切換至國(guó)內(nèi)服務(wù)器,大幅提升 jar 包下載速度,下面就一起來(lái)了解一下
    2026-02-02
  • SpringBoot項(xiàng)目創(chuàng)建單元測(cè)試的流程步驟

    SpringBoot項(xiàng)目創(chuàng)建單元測(cè)試的流程步驟

    在日常開(kāi)發(fā)的過(guò)程中,對(duì)自己的代碼進(jìn)行單元測(cè)試是個(gè)非常重要的過(guò)程,一方面可以最小范圍的針對(duì)一個(gè)方法進(jìn)行測(cè)試,提高測(cè)試的簡(jiǎn)便性以及測(cè)試的成本,本篇文章主要是為了總結(jié)一下如何優(yōu)雅的在Springboot項(xiàng)目中使用單元測(cè)試去測(cè)試功能,需要的朋友可以參考下
    2024-11-11
  • Spring Boot整合Thymeleaf詳解

    Spring Boot整合Thymeleaf詳解

    這篇文章主要介紹了Spring Boot整合Thymeleaf詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Java探索之Thread+IO文件的加密解密代碼實(shí)例

    Java探索之Thread+IO文件的加密解密代碼實(shí)例

    這篇文章主要介紹了Java探索之Thread+IO文件的加密解密代碼實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例

    mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例

    這篇文章主要介紹了mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用Java實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換實(shí)例代碼

    使用Java實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換實(shí)例代碼

    最近在開(kāi)發(fā)項(xiàng)目中遇到一個(gè)比較好用的方法,那就是對(duì)字符串中的字母大小進(jìn)行轉(zhuǎn)換,所以下面這篇文章主要給大家介紹了關(guān)于如何使用Java實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

永济市| 深水埗区| 都兰县| 龙井市| 陇南市| 七台河市| 滨州市| 钟祥市| 自治县| 白玉县| 万安县| 广德县| 京山县| 元江| 桃园市| 邳州市| 宝坻区| 淳化县| 仁布县| 广宁县| 松溪县| 左云县| 临泽县| 东明县| 湄潭县| 铜鼓县| 榕江县| 报价| 乌恰县| 靖西县| 太仆寺旗| 三穗县| 石柱| 百色市| 河西区| 宜良县| 青铜峡市| 荣昌县| 太保市| 台东市| 阿勒泰市|