自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

while(true){ study }

while(true){ study }

  • 博客(85)
  • 收藏
  • 关注

原创 Docker常用命令

记录一下Docker常用命令

2023-05-24 23:45:25 1071

原创 SpirngMVC获取请求参数

这里我们创建一个控制器,以及一个用于跳转成功的页面一开始去访问这个地址,然后跳转到test_param页面,点击里面的超链接,携带参数跳转到success页面,这是用ServletAPI做到的,但是我们在SpringMVC中基本是不用这种方式来实现。注:我们在使用SpringMVC的时候,能不用原生API就不用,因为我们当前操作的数据,SpringMVC就已经帮助我们获取过了,而且它还会给我们提供更简单的方式让我们获取,没有必要使用原生的ServletAPI。

2022-09-03 19:51:12 388

原创 RequestMapping注解

从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。SpringMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。

2022-09-03 19:21:12 3280 1

原创 自定义映射resultMap(处理一对多、多对一映射)

这里注意一下:我们的表用的是下划线,而实体类用的是驼峰命名。这时候通过mybatis查询,这个时候字段跟属性肯定是对应不上的。我们之前都写过JDBC工具类,其实就是把查询出来的字段名,通过反射获取对应的属性名,然后来进行赋值。但是这里属性名和字段名不一样,该怎么赋值?这时候我们建一个查询环境此时查询出来的应该是什么样的?字段名跟属性名一致的话,那它们一定是相对应的,可以查出来,但是员工id,员工姓名,字段名和属性名不一致。创建测试类。

2022-09-01 23:33:48 3528 1

原创 特殊SQL的执行——模糊查询、批量删除等

这里我们要注意,这样写的SQL语句是有问题的,我们不能在模糊查询里这么用'%#{fuzzy}%',也就是说在这里不能用#{},因为#{}相当于占位符赋值,占位符赋值解析完之后,会变成一个占位符问号来表示,这个时候要给问号占位符赋值,那就要用预编译对象中的set来赋值,但是我们要注意,这个问号是在单引号里面,这个时候问号属于字符串的一部分,所以这个时候问号并不会当作占位符来解析,我们来看一下报错信息。既然#{}不行,那么我们换为${},因为${}相当于字符串拼接,它会把参数的值拼接到SQL语句中。

2022-08-22 14:16:23 1942

原创 MyBatis的各种查询功能

因为Map集合也可以存储多条数据,但是map和list不一样,你可以直接把每条数据转换为的map放在list中,但是不能把每条数据转换为的map放在map集合中,因为map是键值对,我们查出来的数据作为值,但是谁作为键呢?我们一般查询完一条数据都要转换为实体类对象,但是有这么个情况,我们查询出来的结果没有相对应的实体类,就比如说我们现在查询的结果里面有分组函数,比如说我们要查这个部门里的最高薪资,最低薪资,以及薪资总和,这时候并没有相应的实体类。实体类里的属性就是固定的,而Map集合里的键不固定。

2022-08-22 14:02:07 3623

原创 MyBatis获取参数值的两种方式

MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值 ${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。

2022-08-22 11:19:22 2475

原创 MyBatis核心配置文件

这个是主要配置数据库的连接环境。在environments里面可以设置很多个environment,我们现在就设置了一个配置连接数据库的环境,它叫开发环境,那么下面我们还可以设置,比如说我们下面把id改为test,这里叫测试环境。我们都知道id是唯一标识,不能重复,在真正的开发中,不可能同时使用2个环境,这里肯定会使用其中的某一个,这时候environments标签里有个default属性就很重要了,来设置当前默认使用环境的id。

2022-08-22 10:20:59 1583 3

原创 测试Mybatis流程

(1)获取核心配置文件的输入流,这里有个类是Resources,是org.apache.ibatis.io里面的,这里面提供了一个getResourceAsStream,这个是获取当前某个文件所对应的字节输入流,我们的核心配置文件记录的是如何配置连接数据库,核心配置文件也引入了映射文件,也就是映射文件的SQL,所以要是想实现mybatis的功能,我们需要知道核心配置文件写了什么。

2022-08-22 10:08:15 811

原创 面向对象编程(高级部分)——final关键字

(1)当不希望类被继承时,可以用final修饰(2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。【案例演示: 访问修饰符 final 返回类型 方法名】(3)当不希望类的某个属性的值被修改,可以用final修饰。此时这样是可以修改的。那么我们要定义为不能修改。此时想修改就会报错。

2022-08-21 22:12:02 301

原创 面向对象编程(高级部分)——单例模式

也就是说在整个软件运行过程中,从开始运行到最后的结束运行的过程中,要保证某一个类,只有一个实例,不可以再有第二个。那么这样有什么用??在网站开发等,有一个核心类,它非常耗用资源,但实际上我们只需要一个,那么这时候单例设计模式就很有价值。

2022-08-21 21:28:52 366 1

原创 面向对象编程(高级部分)——代码块

此时我们在Cat类里面写一个静态属性,还写一个静态代码块,我们在main方法里去使用静态属性,也会导致静态代码块执行,并且是先执行静态代码块。前面的静态属性和静态代码块肯定是没变的,那在输出完静态后,肯定是普通代码块了,普通代码块和普通属性的初始化也是按定义的顺序进行调用。可以这样理解,普通代码块是构造器的补充,构造器被调用了,那么普通代码块也会被调用。如果在AAA类里面加一个普通代码块,那就是在输出AAA的构造器之前,先输出父类的普通代码块。也就是说,代码块调用的顺序是优先于构造器的。

2022-08-19 23:48:36 279

原创 面向对象编程(高级部分)——理解main方法语法

(2) 但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员【举例说明】(1) 在 main()方法中,我们可以直接调用 main 方法所在类的静态方法或静态属性。在IDEA中如何给String数组传参。

2022-08-19 22:49:40 293

原创 面向对象编程(高级部分)——类变量和类方法

面向对象编程(高级部分)——类变量和类方法

2022-08-19 22:37:46 239

原创 多态(基本介绍、快速入门、注意事项以及细节、动态绑定机制)

方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。}}class B { //父类System.out.println("B say() 方法被调用...");}}class A extends B { //子类public int sum(int n1, int n2) { //和下面的sum 构成重载}}System.out.println("A say()方法被调用...");}}......

2022-08-14 10:38:05 660

原创 继承的使用以及细节问题

继承的使用,以及细节问题,Super的使用和细节

2022-08-06 22:52:29 283

原创 IOC操作Bean管理(基于注解方式)

首先我们在spring配置文件头文件要加context配置在测试类加载spring配置文件的时候,我们在spring配置文件中只写了一段代码,就是开启组件扫描,当这一生效,spring就知道我们是用注解方式来做,它会到我们配置的包里面找到包的所有类,如果说类上面有相关的注解,那么就根据注解的方式把对象创建,对象创建之后就可以调用输出等。注解有四种方式,都可以创建对象,只不过在不同层中,让开发人员更加清晰当前组件所扮演的角色,为了代码规范,最好我们都在不同场景运用不同注解。...

2022-08-01 22:23:55 179

原创 IOC具体操作(Bean管理操作)——基于xml方式

1)在Spring配置文件中使用bean标签,标签里面添加对应的属性,就可以实现对象创建(2)在bean标签有很多属性,介绍常用的属性id属性唯一标识class属性创建对象的那个类的全路径——包类路径(com.godairo.spring5.User)name属性做个了解就行,用的不多,作用是和id一样的,id的位置也可以不用id,用的是name,而它们区别就是,id里面不能加特殊符号,name可以加特殊符号,这是早期的属性,基本现在不用name,都用id。.........

2022-08-01 21:26:17 300

原创 IOC容器

IOC翻译过来就是控制反转,那到底是干嘛的?我们在做操作的时候,都需要创建类的对象,而用原始方式都是new一个对象,比如说我现在有2个类,想要用另一个类中的方法,都是引用。而现在这个过程可以通过IOC实现,好处就是解耦。(1)IOC就是把对象的创建,对象之间调用的过程,都交给Spring进行管理。(2)而我们使用IOC的目的就是为了降低耦合度(3)刚刚的入门案例就是IOC的实现使用场景需要获取对象的时候原有的获取对象的方式使用newObject()来创建一个对象。使用了IoC之后。...

2022-08-01 19:59:50 478

原创 Spring框架概述以及入门案例

1、Spring是轻量级的开源的JavaEE框架2、Spring可以解决企业应用开发的复杂性3、Spring有两个核心部分IOC和AOP之前创建对象时候,都是要new一个类,然后把对象创建,而IOC就是把创建对象的过程,交给Spring进行管理,也就是Spring帮我们去创建对象,我们就不用new的方式去做了。比如说我想在程序中加个功能,或者扩展功能一个功能,按照原始方式,我们需要改变源代码进行实现,而AOP可以在不修改源代码的情况下,进行功能的添加或增强。4、Spring特点。......

2022-07-31 11:19:02 229

原创 this的使用以及细节

Java虚拟机会给每个对象分配this,代表当前对象。我们具体来看代码Dog.java/**57.*/}System.out.println("Dog(Stringname,intage)构造器");}}}Test.javaDogdog1=newDog("小白",23);Dogdog2=newDog("小黑",24);}}可以看到new出来的两个对象,hashCode是不一样的,然后我们在构造器里面也去写this.hashCode。...

2022-07-29 00:03:13 265

原创 对象创建的流程分析

这时候就会把帅哥这个实参传给n,再通过n传给name属性,此时会把name的null变成帅哥,而这个"帅哥"是在常量池里,这个地方也会有一个地址,比如说这个地址是0x1133,然后之前的name值是null,此时是0x1133,这时候0x1133就指向常量池的0x1133所对应的"帅哥",然后再把20这个实参赋给了形参,这个时候age又变成了20。对象是在堆里的,那里面才是真正的对象,就像真正的人一样,而p只是对象的引用而已,可以这么理解,有个人叫张三,而这边有个人,那么这个人到底是谁?......

2022-07-27 23:22:51 164

原创 IO流原理及流的分类,流体系图——常用类

FileInputStream是文件输入流/***演示读取文件...*单个字节读取,效率比较低*/@Testtry{//创建FileInputStream对象,用于读取文件/***从该输入流读取一个字节的数据。如果没有输入可用,此方法将阻止。*如果返回-1,表示读取完毕,那么读的话肯定是循环读取,不可能只读取一个字节。*那么while的条件就是如果不等于-1就一直读取*/虽然可以读取到文件的内容,hello.txt里面的内容是要求/**要求/**...

2022-07-24 00:03:12 295

原创 文件(介绍、文件流、常用的文件操作)

3)需要注意的是创建多级目录需要用mkdirs,创建一级目录使用mkdir().(2)判断E\\demo02是否存在,存在就删除,否则提示不存在。(1)判断e\\news1.txt是否存在,如果存在就删除。

2022-07-23 23:49:59 163

原创 类加载(基本说明、流程图、类加载各个阶段完成的任务)

总的来说,静态加载就是在编译的时候就会加载相关的类,它会检查你的类是否正确,各方面会去检测。而动态加载是执行到这一段的时候才会加载,如果运行的时候没有用到这个类,即使不存在也不会报错,这样就降低了一定的依赖性。......

2022-07-18 23:28:28 1284

原创 Class类(基本介绍、常用方法)

从类图来看,Class就是一个类,和其他类是一样的,只是这个类的使用方法和功能有点特殊性,仅此而已。类加载器,也就是ClassLoader,里面有个方法叫loadClass(),通过这个方法来完成类加载,生成某个类对应的Class对象。如果加载的类不是同一个那Class肯定就不同了。验证一下我们可以创建一个Dog类这里肯定跟上面是不相同了,Dog类和Cat类已经不是同一个类,也就是说Dog类在堆内存中也会有一个Class对象,cls1和cls2对应的是同一个。......

2022-07-17 23:10:48 11830

原创 反射机制(原理示意图、优缺点、调优)

、比如说有一个Cat.java的源代码文件,里面有name属性,Cat构造器,hi方法然后对它进行编译,通过编译就会得到一个Cat.class的字节码文件那么字节码文件里面有什么呢?里面肯定是包含了属性,构造器,方法等等。如果我们在Runtime运行阶段,去new一个Cat对象,并且调用hi()方法那么它会把字节码文件加载到内存里的堆里面,就会生成Class类对象(Cat的),里面就有成员变量、构造器、成员方法等等。。......

2022-07-17 22:59:18 291

原创 一个需求引出反射

如果按照传统的写法,去调用cry(),而不是hi方法,那就要修改源码,我们得把cat.hi()修改成cat.cry()。有一个配置文件re.properties,这个配置文件指定了一些信息,有一个类的全路径,还指定了类的一个方法hi。通过cls对象可以得到加载的类的哪个方法,methodName所代表的那个方法对象,拿到这个过后就可以调用了。通过cls.newInstance()可以得到你加载的类的对象实例,这个对象类型,真正的运行类型就是Cat。也就是说,在反射的世界里,它把方法也可以看成是对象。...

2022-07-17 22:43:39 127

原创 DAO和增删改查通用方法————BasicDao

将来在实际开发中,一张表(比如说actor)对应一个ActorDao,而每一张表都跟java里的类有映射关系。各种Dao又有共有的部分,比如说连接数据库,关闭资源,这些肯定是相同的,把共有部分提到BasicDao里去,然后让其他的Dao继承它,里面还会用到泛型。根据业务需求,使用对应Dao。...

2022-07-17 00:24:52 471 2

原创 ApDBUtils+Druid的DML操作和查询

这里要注意的是我们知道返回的是单行记录,对应的是单个对象,而不是集合了,使用的Handler是BeanHandler,底层不会封装成集合了。如果我们插入一个不存在的id,那么就会返回一个空,比如说我们传入一个10,那么如果是null的话,我们也可以写业务逻辑。单行单列意思就是比如说我给id=2的信息,只查出这个人的名字。...

2022-07-17 00:02:28 288

原创 Apache的ApDBUtils

使用DBUtils+Druid数据库连接池的方式,完成对表actor的crud/**32.*///使用apache-DBUtils工具类+Druid完成对表的crud操作@TestpublicvoidtestQueryMany()throwsSQLException{//返回结果是多行的情况//1.先得到连接(Druid)//2.使用DBUtils类和接口,先引入DBUtils的jar文件,加入到本Project//3.创建QueryRunner。...

2022-07-16 23:49:10 391

原创 实现数据库连接池——C3P0、Druid(阿里德鲁伊)

举个例子这里有个售票窗口,售票窗口在默认情况下有3个窗口,现在到春节了,我们把3个窗口设置成5个窗口,这个就是初始化的操作,如果说5个窗口都已经在工作了,下面还有很多人要来买票,第6个人就要排队了。测试5000次连接mysql。......

2022-07-16 23:04:17 527

原创 数据库连接池——引出、分析、原理、种类

传统的连接得到连接通过PreparedStatement发送sql到mysql然后关闭连接如果说将来的连接特别的多,假如在某一个情况下,Java程序要频繁的连接MySQL数据库,我要得到多次连接,那么可能会把Mysql搞瘫痪了。那么就来模拟一下这个情况我们试试连接mysql5000次,然后故意不关连接,这时候会抛出一个异常。这个异常就导致我们服务器没办法工作了。出现这种情况别的程序再去连接Mysql是连接不上的这一次测试我们关闭连接。...

2022-07-16 22:57:08 210

原创 批处理应用

当需要成批插入或者更新记录时。可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率。JDBC的批量处理语句包括下面方法addBatch()添加需要批量处理的SQL语句或参数执行批量处理语句;清空批处理包的语句因为批量处理的数据量比较大,如果执行的SQL语句特别大,我们需要一批一批执行,清空了一批,再执行一批。JDBC连接MySQL时,如果要使用批处理功能,请再url中加参数?...

2022-07-16 22:45:10 301

原创 事务(Connection事务提交,以及回滚操作)

JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要调用Connection的setAutoCommit(false)可以取消自动提交事务在所有的SQL语句都成功执行后,调用Connection的commit();方法提交事务在其中某个操作失败或出现异常时,调用Connection的rollback);方法回滚事务。......

2022-07-16 00:58:30 4010

原创 JDBCUtils开发

说明在JDBC操作中,获取连接和释放资源是经常使用到的,可以将其封装JDBC连接工具类JDBCUtils。

2022-07-15 23:20:18 125

原创 预处理DML

这里要注意的是,因为sql语句问号占位符pwd是第一位,所以setString的时候索引需要调整一下,不然会修改失败。

2022-07-15 23:12:58 99

原创 Statement和PreparedStatement(SQL注入问题)

用于执行静态SQL语句并返回其生成的结果的对象。也就是说它是帮我们执行SQL语句,并且返回一个结果,就是干这个事情。我们在连接建立以后,需要对数据库进行访问,执行命令或者是SQL语句,可以通过StatementStatement是最先前出现的一种,后面发现Statement有些问题,就出现了PreparedStatement,这叫做预处理。Statement存在SQL注入问题。CallableStatement可以用来调存储过程。...

2022-07-14 23:56:41 841

原创 ResultSet底层

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行。最初,光标位于第一行之前。next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来遍历结果集。......

2022-07-14 23:49:28 521

原创 JDBC第一个程序——5种不同连接方式

注册驱动——加载Driver类获取连接——得到Conneciton执行增删改查——发送SQL给mysql执行释放资源——关闭相关的连接。

2022-07-14 20:21:46 348

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除