《从零开始的java从入门到入土的学习生活——JavaWeb后端篇》Chapter13——JavaWeb后端篇学习记录——MYSQL、MyBatis

《从零开始的java从入门到入土的学习生活——JavaWeb后端篇》Chapter13——JavaWeb后端篇学习记录——MYSQL、MyBatis

一、MYSQL数据库

数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库

1、SQL(Structured Query Language,简称SQL)

        结构化查询语言,它是操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。

        关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

        特点:
        ①使用表存储数据,格式统一,便于维护。
        ②使用SQL语言操作,标准统一,使用方便,可用于复杂查询。

2、SQL语句

        SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

        ①DDL

        DDL英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表)。常见操作:查询、创建、使用、删除。

        查询所有数据库:

show databases;

        查询当前数据库:

select database();

        创建数据库:

create database [ if not exists ] 数据库名 [default charset utf8mb4];

        使用数据库:

use 数据库名 ;

        删除数据库:

drop database [ if exists ] 数据库名 ;

        DDL语句当中关于表结构的操作。关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

        创建:

create table 表名( 字段1 字段1类型 [约束] [comment 字段1注释 ], 字段2 字段2类型 [约束] [comment 字段2注释 ], ...... 字段n 字段n类型 [约束] [comment 字段n注释 ] ) [ comment 表注释 ] ;

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

-- 创建表 create table user( id int comment 'ID 唯一标识', username varchar(50) comment'用户名', name varchar(10) comment'姓名', age int comment '年龄', gender char(1) comment '性别' )comment '用户信息表';

        若想要限制字段所存储的数据,就需要用到数据库中的约束

        约束

        作用在表中字段上的规则,用于限制存储在表中的数据。保证数据库当中数据的正确性、有效性和完整性。

        注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

主键自增:auto_increment——每次插入新的行记录时,数据库自动生成id字段(主键)下的值,具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

-- 创建表(约束) create table user( id int primary key auto_increment comment 'ID 唯一标识',-- 主键约束 自增 username varchar(50) not null unique comment'用户名',-- 非空 唯一约束 name varchar(10) not null comment'姓名',-- 非空 age int comment '年龄', gender char(1) default '男'comment '性别'-- 默认值 )comment '用户信息表';
        MYSQL数据类型

        MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

        数值类型:

        字符串类型:

        日期时间类型:

总结

关于表结构的查看、修改、删除操作,工作中一般都是直接基于图形化界面操作

②DML

        DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

        增加(insert)
  • 向指定字段添加数据
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
  • 全部字段添加数据
insert into 表名 values (值1, 值2, ...);
  • 批量添加数据(指定字段)
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
  • 批量添加数据(全部字段)
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

注意事项:插入数据时,指定的字段顺序需要与值的顺序是对应的。字符串和日期型数据应该包含在引号中。插入的数据大小,应该在字段的规定范围内。

        修改(update)
update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

注意事项:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

        删除(delete)
delete from 表名 [where 条件] ;

注意事项:DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。

③DQL

        DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。

语法结构如下:

SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
        基本查询
  • 查询多个字段
select 字段1, 字段2, 字段3 from 表名;
  • 查询所有字段(通配符)
select * from 表名;
  • 设置别名
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
  • 去除重复记录
select distinct 字段列表 from 表名;

注意:* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)

        条件查询

语法:

select 字段列表 from 表名 where 条件列表 ; -- 条件列表:意味着可以有多个条件

学习条件查询就是学习条件的构建方式,而在SQL语句当中构造条件的运算符分为两类:

  • 比较运算符
  • 逻辑运算符

比较运算符:

逻辑运算符:

注意:查询为NULL的数据时,不能使用 = null!=null 。得使用 is nullis not null

        聚合函数

        聚合函数查询就是纵向查询,它是对一列的值进行计算,然后返回一个结果值。(将一列数据作为一个整体,进行纵向计算)

注意 : 聚合函数会忽略空值,对NULL值不作为统计。

        分组查询

        按照某一列或者某几列,把相同的数据进行合并输出,语法如下:

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

注意:分组之后,查询的字段一般为聚合函数分组字段,查询其他字段无任何意义。执行顺序:where > 聚合函数 > having。

        where与having的区别——执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同:where不能对聚合函数进行判断,而having可以。

        排查查询

        对于数据进行降序(DESC)升序(ASC),或者一些排序,若未指明排序条件,则默认为升序排序,语法如下:

select 字段列表 from 表名 [where 条件列表] [group by 分组字段 ] order by 字段1 排序方式1 , 字段2 排序方式2 … ;

注意事项:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

        分页查询

        分页操作在业务系统开发时,也是非常常见的一个功能,语法如下:

select 字段列表 from 表名 limit 起始索引, 查询记录数 ;

注意事项:

——起始索引从0开始。 计算公式 :起始索引 = (查询页码 - 1)* 每页显示记录数

——分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT

——如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 条数

二、MyBatis

1、创建MyBatis

MyBatis是一款优秀的 持久层框架,用于简化JDBC的开发

导入Mybatis的起步依赖:

勾选后,将自动在maven里添加对应的依赖项。

application.properties 中配置数据库的连接信息。        

#数据库访问的url地址 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=root@1234

配置完就可以编写MyBatis的代码了,先创建一个User实体类(与数据库的内容要一致)

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class User { private Integer id; private String username; private String password; private String name; private Integer age; } } 

创建一个包 mapper 。在 mapper 包下创建一个接口 UserMapper ,这是一个持久层接口(Mybatis的持久层接口规范一般都叫 XxxMapper)。

import com.genshin.pojo.User; import org.apache.ibatis.annotations.*; import java.util.List; @Mapper//应用程序运行时,会自动创建UserMapper接口的实现类对象,并注入到IOC容器中-bean public interface UserMapper { /** * 查询所有用户 */ /* @Select("select * from user")*/ public List<User>findAll(); /** * 根据id删除用户 */ @Delete("delete from user where id = #{id}") public Integer deleteById(Integer id); /** * 插入用户 */ @Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})") public void insert(User user); /** * 根据id更新用户 */ @Update("update user set username=#{username},password=#{password},name=#{name},age=#{age} where id=#{id}") public void update(User user); /** * 根据用户名和密码查询用户 */ @Select("select * from user where username=#{username} and password=#{password}") //public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password); public User findByUsernameAndPassword(String username, String password); }

2、XML映射配置

        MyBatis的开发方式主要有两种:注解XML,使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。

        使用XML开发需要有以下的规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  2. XML映射文件的namespace属性为Mapper接口全限定名一致
  3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

在上述的resource文件创建对应的xml文件,并写入对应的映射文件——xml映射文件中的dtd约束,直接从mybatis官网复制即可; 或者直接AI生成。

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper> <!--resultType:指定查询结果的封装类型--> <select resultType="com.genshin.pojo.User"> select id,username,password,name,age from user </select> </mapper>

Read more

DeepSeek V4正式发布!与Gemini 3.1 Pro深度评测:中国开源力量与美国闭源巅峰的正面交锋

DeepSeek V4正式发布!与Gemini 3.1 Pro深度评测:中国开源力量与美国闭源巅峰的正面交锋

2026年3月第一周,中国AI圈期待已久的DeepSeek V4正式发布,与此前两周谷歌推出的Gemini 3.1 Pro形成正面交锋。这不仅是两款旗舰模型的同期竞技,更是中国开源力量与美国闭源巅峰的技术路线对决:DeepSeek V4以“原生多模态+国产芯片深度适配+极致成本控制”杀入战场,而Gemini 3.1 Pro则以“ARC-AGI-2 77.1%推理断层领先+三层思考模式+幻觉抗性跃升”巩固护城河。本文从基准测试、核心架构、多模态能力、成本策略四大维度进行深度技术拆解,为开发者和AI爱好者提供硬核参考。 国内用户可通过聚合镜像平台RskAi(ai.rsk.cn)直接体验Gemini 3.1 Pro,同时等待DeepSeek V4的镜像接入,形成双模型布局——一个应对深度复杂推理,一个满足高性价比国产需求。 一、发布动态:时间线与战略意图 关键信号:DeepSeek V4打破了AI行业长期惯例—

By Ne0inhk

Git 入门:第一次将本地项目上传到 GitHub 仓库详细教程

一、背景信息         作为开发者,将本地代码托管到远程仓库(如 GitHub、Gitee 等)是一个基本且重要的技能。这不仅方便代码备份,还能轻松进行版本控制和团队协作。         本文将详细介绍如何将你已经存在的本地项目,第一次完整地上传到 GitHub 上的一个新的空白仓库。这与 git clone(从远程下载仓库)的操作是相反的。         我们将一步步走过 Git 命令的操作流程,并附带一些常见问题的处理和进阶技巧。 二、上传操作 2.1 目标读者         刚开始使用 Git,不熟悉命令行的开发者。         想将本地已有项目托管到 GitHub 的用户。 2.2 前提准备 1. 已安装 Git 并配置好用户信息(git config --global user.name "Your Name&

By Ne0inhk
无人机避障——Mid360+Fast-lio感知建图+Ego-planner运动规划(胎教级教程)

无人机避障——Mid360+Fast-lio感知建图+Ego-planner运动规划(胎教级教程)

电脑配置:Xavier-nx、ubuntu 18.04、ros melodic 激光雷达:Livox_Mid-360 结果展示:左边Mid360+Fast-lio感知建图,右边Ego-planner运动规划 1、读取雷达数据并显示 无人机避障——感知篇(采用Livox-Mid360激光雷达获取点云数据显示)-ZEEKLOG博客 看看雷达数据话题imu以及lidar两个话题  2、读取雷达数据并复现fast-lio  无人机避障——感知篇(采用Mid360复现Fast-lio)-ZEEKLOG博客 启动fast-lio,确保话题有输出   由于此处不需要建图,因此不打开rviz,launch文件如下修改: <launch> <!-- Launch file for Livox MID360 LiDAR --> <arg name="rviz&

By Ne0inhk

Leather Dress Collection开源大模型实践:Stable Diffusion 1.5皮革垂直领域应用

Leather Dress Collection开源大模型实践:Stable Diffusion 1.5皮革垂直领域应用 1. 项目介绍 Leather Dress Collection是一个专注于皮革服装设计的AI生成工具集,基于Stable Diffusion 1.5模型开发。这个项目包含了12个专门针对不同皮革服装风格的LoRA模型,可以帮助设计师、时尚爱好者快速生成高质量的皮革服装概念图。 这套工具特别适合以下人群使用: * 服装设计师寻找灵感 * 电商平台需要快速生成商品展示图 * 时尚博主创作内容 * 游戏/影视角色服装设计 2. 模型特点与优势 2.1 模型技术特点 Leather Dress Collection采用LoRA(Low-Rank Adaptation)技术对基础模型进行微调,这种技术有以下几个优势: * 模型文件小(平均19MB) * 训练成本低 * 可以灵活组合使用 * 生成效果专业 2.2 包含的服装风格 这套模型覆盖了多种流行的皮革服装风格: * 紧身连衣裙(Leather Bodycon Dress)

By Ne0inhk