- 前言 接上一篇,今天我们接着来分析MyBatis的源码。今天的分析的核心是SQL的执行过程。主要分为如下章节进行分析 代理类的生成SQL的执行过程处理查询结果 mapper 接口的代理类的生成过程分析 首先我们来看看mapper 接口的代理类的生成过程,如下是一个MyBatis查询的调用实例。 StudentMapper mapper = sqlSessio... 前言 接上一篇,今天我们接着来分析MyBatis的源码。今天的分析的核心是SQL的执行过程。主要分为如下章节进行分析 代理类的生成SQL的执行过程处理查询结果 mapper 接口的代理类的生成过程分析 首先我们来看看mapper 接口的代理类的生成过程,如下是一个MyBatis查询的调用实例。 StudentMapper mapper = sqlSessio...
- 前言 在面试中我们经常会被到MyBatis中 #{} 占位符与${}占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而${}则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。 源码解析 首先我们来看看MyBatis 中SQL的解析过程,MyBatis 会将映射文件中的SQL拆分成一个... 前言 在面试中我们经常会被到MyBatis中 #{} 占位符与${}占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而${}则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。 源码解析 首先我们来看看MyBatis 中SQL的解析过程,MyBatis 会将映射文件中的SQL拆分成一个...
- 今天接着说说如何在日志中配置SQL打印输出。 log4j的依赖添加 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</vers... 今天接着说说如何在日志中配置SQL打印输出。 log4j的依赖添加 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</vers...
- 您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。上一篇我们介绍了Idea中几个常用插件,这篇文章,我们接着来介绍比较常见好用的插件。话不多说,直接进入主题。 文章目录 Mybatis Log PluginVisualVM LauncherDatabase工具sql语句补全直接在Idea中编写sql语句执行 总结还想说两句 ... 您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。上一篇我们介绍了Idea中几个常用插件,这篇文章,我们接着来介绍比较常见好用的插件。话不多说,直接进入主题。 文章目录 Mybatis Log PluginVisualVM LauncherDatabase工具sql语句补全直接在Idea中编写sql语句执行 总结还想说两句 ...
- 您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。小伙伴们,有啥想看的,想问的,欢迎积极留言告诉我喔。 事情是这样的,做测试的女朋友这段时间正在学习Python。这天晚上我下班回家,看到她一个人正在学习SQLAlchemy。真是个好学的girl,这时候我意识到自己表现的机会来了。这个我懂呀。然后,就有了下面这篇文章。 文章目录 ... 您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。小伙伴们,有啥想看的,想问的,欢迎积极留言告诉我喔。 事情是这样的,做测试的女朋友这段时间正在学习Python。这天晚上我下班回家,看到她一个人正在学习SQLAlchemy。真是个好学的girl,这时候我意识到自己表现的机会来了。这个我懂呀。然后,就有了下面这篇文章。 文章目录 ...
- 首先创建数据库hncu,建立stud表格。 添加数据: create table stud( sno varchar(30) not null primary key, sname varchar(30) not null, age int, saddress varchar(30) ); INSERT INTO stud VALUES('1001','Tom',2... 首先创建数据库hncu,建立stud表格。 添加数据: create table stud( sno varchar(30) not null primary key, sname varchar(30) not null, age int, saddress varchar(30) ); INSERT INTO stud VALUES('1001','Tom',2...
- 原文请访问: 【MySQL性能优化】概述与优化方面(一) 像sql语句如何进行调优,基本上在中高级程序员面试中都有可能会被问到。 所以说,了解,或者学习一下如何进行sql调优是必要的。 我会关于该sql调优文章出一个系列的博客。与大家一起学下去 首先不具体进行介绍,先大体的概括一下,因为答案基本是死的,但是处理方式是活的 MySQL性能优化/概述 ... 原文请访问: 【MySQL性能优化】概述与优化方面(一) 像sql语句如何进行调优,基本上在中高级程序员面试中都有可能会被问到。 所以说,了解,或者学习一下如何进行sql调优是必要的。 我会关于该sql调优文章出一个系列的博客。与大家一起学下去 首先不具体进行介绍,先大体的概括一下,因为答案基本是死的,但是处理方式是活的 MySQL性能优化/概述 ...
- 我们先看一个如下数据库表: 我们如果想查询这张表里面age为11和1的人该怎么办呢? 那么我们的 in 操作符就起作用了: SELECT * FROM table1 WHERE age1 IN(11,1); 查询来自表哥table1的数据,条件为age1 在(11,1)这两个数之中,其中in的意思就是说查询的数据在什么之中。那么我们这样使用in就可以查询a... 我们先看一个如下数据库表: 我们如果想查询这张表里面age为11和1的人该怎么办呢? 那么我们的 in 操作符就起作用了: SELECT * FROM table1 WHERE age1 IN(11,1); 查询来自表哥table1的数据,条件为age1 在(11,1)这两个数之中,其中in的意思就是说查询的数据在什么之中。那么我们这样使用in就可以查询a...
- 使用别名主要原因是因为如果在很多表的时候,我们的表名可能会混淆,导致语句不清晰,那么我们使用别名就可以让我们操作数据库表的时候更加清晰明了,那么我们假设有如下表: 那么我们查找我们age1的值为11的数据,如果我们嫌我们的表名table1(在这里这个表名为table1)的名字太丑,太长的话,那么我们就可以使用如下的语句使我们的table1表名在这个命令中改变为t1... 使用别名主要原因是因为如果在很多表的时候,我们的表名可能会混淆,导致语句不清晰,那么我们使用别名就可以让我们操作数据库表的时候更加清晰明了,那么我们假设有如下表: 那么我们查找我们age1的值为11的数据,如果我们嫌我们的表名table1(在这里这个表名为table1)的名字太丑,太长的话,那么我们就可以使用如下的语句使我们的table1表名在这个命令中改变为t1...
- 最近一段时间项目转入SSIS,从DB2和TeraData向MSSql中迁入,其中又穿插了perl一些的知识,感觉这段时间相当的充实,以前一直关注C#,javascript,不怎么写sql,现在一天写一两千行的sql,脸不红,气不喘,一口气连上八楼都不心跳加速了. 因为一些知识只是临时性的添加,所以显得很杂乱. (1)sql datatime 格式化 Select ... 最近一段时间项目转入SSIS,从DB2和TeraData向MSSql中迁入,其中又穿插了perl一些的知识,感觉这段时间相当的充实,以前一直关注C#,javascript,不怎么写sql,现在一天写一两千行的sql,脸不红,气不喘,一口气连上八楼都不心跳加速了. 因为一些知识只是临时性的添加,所以显得很杂乱. (1)sql datatime 格式化 Select ...
- 首先我们看如下数据库表: 如果我们想查询如上表中的age1的值在0到5的数据该如何查询? 那么在这里我们用到我们的sql操作符between…adn。 SELECT * FROM table1 WHERE age1 BETWEEN 0 AND 5 其中between后面的0 and 5 意思就是 查询寻数据,条件为age1的值为0到5,那么结果如下: 首先我们看如下数据库表: 如果我们想查询如上表中的age1的值在0到5的数据该如何查询? 那么在这里我们用到我们的sql操作符between…adn。 SELECT * FROM table1 WHERE age1 BETWEEN 0 AND 5 其中between后面的0 and 5 意思就是 查询寻数据,条件为age1的值为0到5,那么结果如下:
- 1.sql语句准备 string sqlstr = “select * from t_person where name=@name 最好是预留一个where条件 在分页的时候sql语句里面 一定要预留一个”where”和”order by “的字段准备 2.开始开发之前,好好回顾一下以犯的错,不要一犯再犯 3.在没有理解完全理解需求之前(至少要达到需求和数据库的字段完全的对... 1.sql语句准备 string sqlstr = “select * from t_person where name=@name 最好是预留一个where条件 在分页的时候sql语句里面 一定要预留一个”where”和”order by “的字段准备 2.开始开发之前,好好回顾一下以犯的错,不要一犯再犯 3.在没有理解完全理解需求之前(至少要达到需求和数据库的字段完全的对...
- 首先看两个表: table1: table2: 如果我们要查询table1表和 table2表中的 name1的值,但是不存在重复的值一起输出出来,那么就可以用union操作符: SELECT name1 FROM table1 UNION SELECT name1 FROM table2 结果我们会查询出不重复的值。结果我就不用图片了。 如果我... 首先看两个表: table1: table2: 如果我们要查询table1表和 table2表中的 name1的值,但是不存在重复的值一起输出出来,那么就可以用union操作符: SELECT name1 FROM table1 UNION SELECT name1 FROM table2 结果我们会查询出不重复的值。结果我就不用图片了。 如果我...
- 子查询:一个查询嵌套在另一个查询当中;又叫内部查询。 子查询 可以分为: 单行单列(就是一个值) 单行多列(就是有一行,这一行有很多不同列数据) 多行单列(同一列不同的数据) 多行多列(可以说就是一张表了吧) 我们先来看单行单列的子查询: SELECT * FROM table1 WHERE id = (SELECT id FROM table2 LIMI... 子查询:一个查询嵌套在另一个查询当中;又叫内部查询。 子查询 可以分为: 单行单列(就是一个值) 单行多列(就是有一行,这一行有很多不同列数据) 多行单列(同一列不同的数据) 多行多列(可以说就是一张表了吧) 我们先来看单行单列的子查询: SELECT * FROM table1 WHERE id = (SELECT id FROM table2 LIMI...
- 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。 例如,删除一个表,表名为 table1 的表: drop table <表名>; drop table table1 ; drop删除数据库 test1: drop database <数据库名>; drop database test1; 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。 例如,删除一个表,表名为 table1 的表: drop table <表名>; drop table table1 ; drop删除数据库 test1: drop database <数据库名>; drop database test1;
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签