Java笔记-17、Web后端基础 Java操作数据库

news/2025/3/6 23:51:43/文章来源:https://www.cnblogs.com/subeipo/p/18756803

JDBC

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包。
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
public void testUpdate() throws Exception {// 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接String url = "jdbc:mysql://localhost:3306/web01";String userName = "root";String passWord = "123456";Connection connection = DriverManager.getConnection(url, userName, passWord);// 获取SQL语句执行对象Statement statement = connection.createStatement();// 执行SQLstatement.executeUpdate("update user set age = 23 where id = 1");// 关闭连接statement.close();connection.close();}
@Testpublic void testSelect(){String URL = "jdbc:mysql://localhost:3306/web01";String USER = "root";String PASSWORD = "1234";Connection conn = null;PreparedStatement stmt = null;ResultSet rs = null; //封装查询返回的结果try {// 1. 注册 JDBC 驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2. 打开链接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 3. 执行查询String sql = "SELECT id, username, password, name, age FROM user WHERE username = ? AND password = ?"; //预编译SQLstmt = conn.prepareStatement(sql);stmt.setString(1, "daqiao");stmt.setString(2, "123456");rs = stmt.executeQuery();// 4. 处理结果集while (rs.next()) {User user = new User(rs.getInt("id"),rs.getString("username"),rs.getString("password"),rs.getString("name"),rs.getInt("age"));System.out.println(user); // 使用 Lombok 的 @Data 自动生成的 toString 方法}} catch (SQLException se) {// Handle errors for JDBCse.printStackTrace();} catch (Exception e) {// Handle errors for Class.forNamee.printStackTrace();} finally {// 5. 关闭资源try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close();} catch (SQLException se) {se.printStackTrace();}}}

ResultSet(结果集对象):ResultSet rs = statement.executeQuery()

  • next():将光标从当前位置向前移动一行,并判断当前行是否为有效行,返回值为boolean。true:有效行,当前行有数据;false:无效行,当前行没有数据
  • getXxx(...):获取数据,可以根据列的编号获取,也可以根据列名获取(推荐)。

预编译SQL

参数动态传递。
优势一:可以防止SQL注入,更安全。
SQL注入:通过控制输入来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。
优势二:性能更高。

MyBatis入门

MyBatis是一款优秀的数据访问层(DAO,持久层)框架,用于简化JDBC的开发。

MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。

使用

  1. 创建SpringBoot工程、引入Mybatis相关依赖
  2. 准备数据库表和实体类
  3. 配置Mybatis(在application.properties中数据库连接信息)
  4. 编写Mybatis的持久层接口,定义SQL(注解/XML)

Mybatis的持久层接口命名规范为 XxxMapper,也称为 Mapper接口。

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
@Mapper //会自动为该接口创建一个实现类对象(代理对象),并自动将该实现类对象存入IOC容器
public interface UserMapper {@Select("select * from user")public List<User> findAll();}
@SpringBootTest
class MybatisdemoApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testFindAll(){List<User> userList = userMapper.findAll();userList.forEach(System.out::println);}
}

@SpringBootTest: 会在单元测试运行时,加载springBoot的环境。
测试类所在包需要与引导类包名相同(或放在引导类所在包的子包下)

辅助配置

配置SQL提示

CleanShot 2025-03-06 at 23.36.06@2x

配置Mybatis的日志输出

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.stdOutImpl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894884.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

netcore后台服务慎用BackgroundService

在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景。 BackgroundService 一时爽,并发火葬场。 BackgroundService 适用于单实例的无状态后台任务,例如:定期清理任务(删除过期数据、日志清理) 轻量级定时任务(如定期检查…

基于遗传优化SVM的电机参数预测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)输入:电机结构参数x1 x2 x3 x4 x5(分别是铁心高度 铁心厚度 绕组匝数 窗口宽度 导线截面积 ) 目标值:体积v、加速度ax、加速度ay和加速度az 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作…

JetBrains Rider 2024软件下载与安装教程

Rider2024是一款基于IntelliJ以及ReSharper所开发的跨平台式的开发环境,并且该软件也是C#、Unity等应用程序的专属开发环境。提供了极为强大的代码编辑器,对于C#和Unity等都能完美兼容,开发者用户们能够在其中轻松自在的编写出代码项目,同时还提供了智能代码补全的功能,提…

JetBrains CLion 2024软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【046】三位数字即可免费获取分享链接,无广告拒绝套路;2、安装教程(建议关闭杀毒软件)解压下载安装包文件,双击exe安装,弹窗安装对话框点击下一步选择软件的安装路径,选择C盘之外的空间,点击下一步创建桌面快捷方式勾选…

2025.3.6 起步

今天学习了web安全的基本知识 1,http,一种协议,常用TCP 2,http的请求方法(GET/POST/PUT...)和请求状态(200 OK/404 NOT FOUND...) 3,URL网址,及其组成 4,UA头,User-Agent,可以知道操作系统、CPU、浏览器类型 5,BurpSuite抓包返回包,可以得到很多信息6,Referer,告诉…

《AI时代生存手册:零基础掌握DeepSeek》 - PDF免费下载

通过本书,你将轻松上手DeepSeek,开启智能生活新篇章。通过本书,你将学会用Deepseek大幅提升工作效率,告别烦琐,拥抱高效。通过本书,你将学会如何让Deepseek成为您的职场超级助手。通过本书,你将学会如何利用DeepSeek激发自己的创作灵感,打造爆款内容,打造个人品牌。通…

Hive安装--本地模式

系统版本:CentOS Linux release 7.9.2009 (Core)ps: 最小化安装一、安装MySQL 1.下载 1.1安装包 官网:https://downloads.mysql.com/archives/community/1.2驱动 官网:https://downloads.mysql.com/archives/c-j/ps mysql-connector-java-5.1.47.jar,要这个2.安装 2.1安装依…

极空间docker部署Ghost博客

1. 下载镜像搜索不到、下载不了的请挂代理或者换源2. 编辑容器 2.1 将content路径映射到nas本地2.2 映射本地端口到ghost端口 注意:极空间限制了3000以内的端口不可外部访问,所以要设置成>3000的端口,我这里设置的33682.3 配置环境变量 这里我选择sqlite3作为数据库,url…

19C++循环结构-多重循环(2)-——教学

1、三重循环与程序的优化; 2、四重循环; 3、超市收费程序一、三重循环与程序的优化 教学视频 百钱买百鸡 3文钱可以买1只公鸡,2文钱可以买1只母鸡,1文可以买3只小鸡,要用100文买100只(每种鸡必买1只)。 试编一程序,求公鸡,母鸡、小鸡各有多少只? 如果100文钱全部买公…

fastadmin + workman 实现websocket前后端通信http

1.安装workman扩展composer require workerman/workerman2.安装think-workercomposer require topthink/think-worker=1.0.* 3.如果在windows下使用,还需下载composer require workerman/workerman-for-win4.根目录创建server.php 。用来启动服务#!/usr/bin/env php <?php…

日报202536

继续学习了Springboot,感觉有点麻烦:User package com.xxx.demo1.pojo;public class User {String id;String name;@Overridepublic String toString() {return "User{" +"id=" + id + \ +", name=" + name + \ +};}public String getId() {re…

[JLOI2014] 路径龟划

传送门 我的部落格 貌似没有比较通俗介绍红绿灯期望介绍方法的?我来一发不需要积分基础能看懂的严谨证明~ 题目大意 这道题 luogu 题面不太清晰,大意给定一张无向图,你需要开车从起点走到终点,有些点会设红绿灯,给出每个红绿灯的红灯时间和绿灯时间,你见到红绿灯时红绿灯…