您的位置:首页 > 文旅 > 美景 > 互联网创业项目名称_哪里做网站_抄一则新闻四年级_百度大数据官网

互联网创业项目名称_哪里做网站_抄一则新闻四年级_百度大数据官网

2025/1/8 2:47:17 来源:https://blog.csdn.net/Fultter/article/details/144917110  浏览:    关键词:互联网创业项目名称_哪里做网站_抄一则新闻四年级_百度大数据官网
互联网创业项目名称_哪里做网站_抄一则新闻四年级_百度大数据官网

在后端开发中,Java 操作数据库是核心技能。本文将详细介绍 JDBC、MyBatis 及 SpringBoot 配置文件相关知识,并给出实用代码示例。

一、JDBC(Java DataBase Connectivity)

(一)简介

JDBC 是 sun 公司定义的操作关系型数据库的 API 规范。它如同一个标准接口,各数据库厂商实现此接口并提供驱动 jar 包。例如,我们在使用 MySQL 数据库时,需引入mysql-connector-j依赖。在代码中,通过Class.forName("com.mysql.cj.jdbc.Driver");注册驱动(在较新版本的 JDBC 中,这一步骤可省略),然后利用DriverManager.getConnection(url, user, password);获取数据库连接,其中url是数据库连接地址,如jdbc:mysql://localhost:3036/webuserpassword分别是数据库用户名和密码。

(二)查询数据

假设我们有user表,包含idusernamepassword等字段,现要查询usernamedaqiaopassword123456的用户信息。首先创建 maven 项目并引入相关依赖,同时准备好User实体类。代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcQueryExample {public static void main(String[] args) throws Exception {// 注册驱动(可省略)Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://localhost:3306/web01?serverTimezone=UTC";String user = "root";String password = "1234";Connection conn = DriverManager.getConnection(url, user, password);// 获取StatementStatement stmt = conn.createStatement();// 执行SQL查询ResultSet resultSet = stmt.executeQuery("SELECT * FROM user WHERE username = 'daqiao' AND password = '123456'");// 处理结果while (resultSet.next()) {int id = resultSet.getInt("id");String username = resultSet.getString("username");String password = resultSet.getString("password");// 可继续获取其他字段信息System.out.println("id: " + id + ", username: " + username + ", password: " + password);}// 释放资源resultSet.close();stmt.close();conn.close();}
}

这里使用Statement执行 SQL 语句,通过ResultSetnext()方法逐行获取数据,并根据列名或编号获取具体字段值。

(三)增删改数据

以更新用户密码为例,将id1的用户密码更新为1234567890。代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcUpdateExample {public static void main(String[] args) throws Exception {// 准备工作Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/web";Connection connection = DriverManager.getConnection(url, "root", "root@1234");Statement statement = connection.createStatement();// 执行SQL更新int rowsAffected = statement.executeUpdate("update user set password = '1234567890' where id = 1");System.out.println("受影响行数: " + rowsAffected);// 释放资源statement.close();connection.close();}
}

执行DML语句(如INSERTUPDATEDELETE)时,使用executeUpdate()方法,它返回受影响的行数。

(四)预编译 SQL

预编译 SQL 能防止 SQL 注入且性能更高。例如查询usernamepassword动态变化的用户信息:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class JdbcPreparedStatementExample {public static void main(String[] args) throws Exception {// 获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web", "root", "1234");// 预编译SQLPreparedStatement pstmt = conn.prepareStatement("SELECT * FROM user WHERE username =? AND password =?");pstmt.setString(1, "linchong");pstmt.setString(2, "123456");// 执行查询ResultSet resultSet = pstmt.executeQuery();// 处理结果while (resultSet.next()) {int id = resultSet.getInt("id");String username = resultSet.getString("username");// 输出字段值System.out.println("id: " + id + ", username: " + username);}// 释放资源resultSet.close();pstmt.close();conn.close();}
}

这里使用PreparedStatement,通过setString()等方法设置参数,避免了 SQL 注入风险,且在多次执行类似 SQL 语句时,数据库可缓存编译后的语句,提高性能。

二、MyBatis

(一)简介

MyBatis 是优秀的持久层框架,简化了 JDBC 开发。它起源于 Apache 的 iBatis 项目,历经迁移和发展。其官网为https://mybatis.org/mybatis-3/zh_CN/index.html

(二)入门程序

以查询所有用户数据为例,首先创建 SpringBoot 工程并引入 MyBatis 相关依赖,准备user表和User实体类,在application.properties中配置数据库连接信息,如:

spring.datasource.url=jdbc:mysql://localhost:3306/web
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234

然后编写 MyBatis 的持久层接口UserMapper

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;@Mapper
public interface UserMapper {@Select("select * from user")public List<User> findAll();
}

在测试类中(需添加@SpringBootTest注解),可通过@Autowired注入UserMapper并调用findAll()方法获取用户数据。

(三)JDBC 与 MyBatis 对比

JDBC 代码存在硬编码、繁琐、资源浪费和性能降低等问题。例如查询用户数据时,需手动创建连接、处理结果集和释放资源。而 MyBatis 通过简单的接口定义和配置,大大简化了操作,提高了开发效率。

(四)数据库连接池

数据库连接池负责管理数据库连接,如 Druid(阿里巴巴开源)、C3P0、DBCP、Hikari(SpringBoot 默认)等。以 Druid 为例,引入druid-spring-boot-starter依赖,并在application.properties中配置:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/web
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234

连接池可重用连接、提升系统响应速度并避免连接遗漏。

(五)增删改查操作

  • 删除用户
import org.apache.ibatis.annotations.Delete;@Mapper
public interface UserMapper {@Delete("delete from user where id = #{id}")public void deleteById(Integer id);
}
  • 添加用户
import org.apache.ibatis.annotations.Insert;@Mapper
public interface UserMapper {@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")public void insert(User user);
}
  • 更新用户
import org.apache.ibatis.annotations.Update;@Mapper
public interface UserMapper {@Update("update user set username=#{username}, password=#{password}, name=#{name}, age=#{age} where id=#{id}")public void update(User user);
}
  • 查询用户
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;@Mapper
public interface UserMapper {@Select("select * from user where username=#{username} and password=#{password}")public User findByUsernameAndPassword(@Param("username") String uname, @Param("password") String pwd);
}

在 MyBatis 中,#{}是占位符,会生成预编译 SQL,安全且性能高;${}是拼接符,存在 SQL 注入风险,常用于表名、字段名动态设置。

(六)XML 映射配置

MyBatis 支持 XML 配置 SQL 语句,规则如下:

  • XML 映射文件与 Mapper 接口同包同名。
  • XML 文件的namespace属性为 Mapper 接口全限定名。
  • XML 文件中sql语句的id与 Mapper 接口方法名一致且返回类型一致。例如:
<mapper namespace="com.itheima.mapper.UserMapper"><select id="findAll" resultType="com.itheima.pojo.User">select id, username, password, name, age from user</select>
</mapper>

一般简单增删改查可用注解,复杂 SQL 功能建议用 XML 配置。

三、SpringBoot 配置文件

SpringBoot 支持application.propertiesapplication.yamlapplication.yml配置文件。application.properties格式较为臃肿、层级结构不清晰。application.yamlapplication.yml简洁且以数据为中心,使用缩进表示层级关系,数值前需空格,注释用#。例如:

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/web01username: rootpassword: 1234mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

yml文件中,若配置项值以0开头,需用''引起来,防止被解析为八进制。

通过对以上 Java 操作数据库技术的学习和实践,我们能更好地应对后端开发中的数据持久化需求,提升开发效率和应用性能。在实际项目中,可根据具体场景灵活选择 JDBC、MyBatis 及合适的配置方式,构建稳定可靠的后端系统。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com