<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[while(true){ study }]]></title><description><![CDATA[while(true){ study }]]></description><link>https://blog.youkuaiyun.com/qq_44706176</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_44706176]]></copyright><item><title><![CDATA[Docker常用命令]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/130857668</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/130857668</guid><author>qq_44706176</author><pubDate>Wed, 24 May 2023 23:45:25 +0800</pubDate><description><![CDATA[记录一下Docker常用命令]]></description><category></category></item><item><title><![CDATA[SpirngMVC获取请求参数]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126681388</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126681388</guid><author>qq_44706176</author><pubDate>Sat, 03 Sep 2022 19:51:12 +0800</pubDate><description><![CDATA[这里我们创建一个控制器，以及一个用于跳转成功的页面一开始去访问这个地址，然后跳转到test_param页面，点击里面的超链接，携带参数跳转到success页面，这是用ServletAPI做到的，但是我们在SpringMVC中基本是不用这种方式来实现。注：我们在使用SpringMVC的时候，能不用原生API就不用，因为我们当前操作的数据，SpringMVC就已经帮助我们获取过了，而且它还会给我们提供更简单的方式让我们获取，没有必要使用原生的ServletAPI。]]></description><category></category></item><item><title><![CDATA[RequestMapping注解]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126681095</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126681095</guid><author>qq_44706176</author><pubDate>Sat, 03 Sep 2022 19:21:12 +0800</pubDate><description><![CDATA[从注解名称上我们可以看到，@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来，建立映射关系。SpringMVC接收到指定的请求，就会来找到在映射关系中对应的控制器方法来处理这个请求。]]></description><category></category></item><item><title><![CDATA[自定义映射resultMap（处理一对多、多对一映射）]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126652569</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126652569</guid><author>qq_44706176</author><pubDate>Thu, 01 Sep 2022 23:33:48 +0800</pubDate><description><![CDATA[这里注意一下：我们的表用的是下划线，而实体类用的是驼峰命名。这时候通过mybatis查询，这个时候字段跟属性肯定是对应不上的。我们之前都写过JDBC工具类，其实就是把查询出来的字段名，通过反射获取对应的属性名，然后来进行赋值。但是这里属性名和字段名不一样，该怎么赋值？这时候我们建一个查询环境此时查询出来的应该是什么样的？字段名跟属性名一致的话，那它们一定是相对应的，可以查出来，但是员工id，员工姓名，字段名和属性名不一致。创建测试类。]]></description><category></category></item><item><title><![CDATA[特殊SQL的执行——模糊查询、批量删除等]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126464745</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126464745</guid><author>qq_44706176</author><pubDate>Mon, 22 Aug 2022 14:16:23 +0800</pubDate><description><![CDATA[这里我们要注意，这样写的SQL语句是有问题的，我们不能在模糊查询里这么用'%#{fuzzy}%'，也就是说在这里不能用#{}，因为#{}相当于占位符赋值，占位符赋值解析完之后，会变成一个占位符问号来表示，这个时候要给问号占位符赋值，那就要用预编译对象中的set来赋值，但是我们要注意，这个问号是在单引号里面，这个时候问号属于字符串的一部分，所以这个时候问号并不会当作占位符来解析，我们来看一下报错信息。既然#{}不行，那么我们换为${}，因为${}相当于字符串拼接，它会把参数的值拼接到SQL语句中。]]></description><category></category></item><item><title><![CDATA[MyBatis的各种查询功能]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126464445</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126464445</guid><author>qq_44706176</author><pubDate>Mon, 22 Aug 2022 14:02:07 +0800</pubDate><description><![CDATA[因为Map集合也可以存储多条数据，但是map和list不一样，你可以直接把每条数据转换为的map放在list中，但是不能把每条数据转换为的map放在map集合中，因为map是键值对，我们查出来的数据作为值，但是谁作为键呢？我们一般查询完一条数据都要转换为实体类对象，但是有这么个情况，我们查询出来的结果没有相对应的实体类，就比如说我们现在查询的结果里面有分组函数，比如说我们要查这个部门里的最高薪资，最低薪资，以及薪资总和，这时候并没有相应的实体类。实体类里的属性就是固定的，而Map集合里的键不固定。]]></description><category></category></item><item><title><![CDATA[MyBatis获取参数值的两种方式]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126460871</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126460871</guid><author>qq_44706176</author><pubDate>Mon, 22 Aug 2022 11:19:22 +0800</pubDate><description><![CDATA[MyBatis获取参数值的两种方式：${}和#{}${}的本质就是字符串拼接，#{}的本质就是占位符赋值 ${}使用字符串拼接的方式拼接sql，若为字符串类型或日期类型的字段进行赋值时，需要手动加单引号；但是#{}使用占位符赋值的方式拼接sql，此时为字符串类型或日期类型的字段进行赋值时，可以自动添加单引号。]]></description><category></category></item><item><title><![CDATA[MyBatis核心配置文件]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126460542</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126460542</guid><author>qq_44706176</author><pubDate>Mon, 22 Aug 2022 10:20:59 +0800</pubDate><description><![CDATA[这个是主要配置数据库的连接环境。在environments里面可以设置很多个environment，我们现在就设置了一个配置连接数据库的环境，它叫开发环境，那么下面我们还可以设置，比如说我们下面把id改为test，这里叫测试环境。我们都知道id是唯一标识，不能重复，在真正的开发中，不可能同时使用2个环境，这里肯定会使用其中的某一个，这时候environments标签里有个default属性就很重要了，来设置当前默认使用环境的id。]]></description><category></category></item><item><title><![CDATA[测试Mybatis流程]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126459753</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126459753</guid><author>qq_44706176</author><pubDate>Mon, 22 Aug 2022 10:08:15 +0800</pubDate><description><![CDATA[(1)获取核心配置文件的输入流，这里有个类是Resources，是org.apache.ibatis.io里面的，这里面提供了一个getResourceAsStream，这个是获取当前某个文件所对应的字节输入流，我们的核心配置文件记录的是如何配置连接数据库，核心配置文件也引入了映射文件，也就是映射文件的SQL，所以要是想实现mybatis的功能，我们需要知道核心配置文件写了什么。]]></description><category></category></item><item><title><![CDATA[面向对象编程(高级部分)——final关键字]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126455777</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126455777</guid><author>qq_44706176</author><pubDate>Sun, 21 Aug 2022 22:12:02 +0800</pubDate><description><![CDATA[(1)当不希望类被继承时,可以用final修饰(2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。【案例演示: 访问修饰符 final 返回类型 方法名】(3)当不希望类的某个属性的值被修改，可以用final修饰。此时这样是可以修改的。那么我们要定义为不能修改。此时想修改就会报错。]]></description><category></category></item><item><title><![CDATA[面向对象编程(高级部分)——单例模式]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126455617</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126455617</guid><author>qq_44706176</author><pubDate>Sun, 21 Aug 2022 21:28:52 +0800</pubDate><description><![CDATA[也就是说在整个软件运行过程中，从开始运行到最后的结束运行的过程中，要保证某一个类，只有一个实例，不可以再有第二个。那么这样有什么用？？在网站开发等，有一个核心类，它非常耗用资源，但实际上我们只需要一个，那么这时候单例设计模式就很有价值。]]></description><category></category></item><item><title><![CDATA[面向对象编程(高级部分)——代码块]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126433095</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126433095</guid><author>qq_44706176</author><pubDate>Fri, 19 Aug 2022 23:48:36 +0800</pubDate><description><![CDATA[此时我们在Cat类里面写一个静态属性，还写一个静态代码块，我们在main方法里去使用静态属性，也会导致静态代码块执行，并且是先执行静态代码块。前面的静态属性和静态代码块肯定是没变的，那在输出完静态后，肯定是普通代码块了，普通代码块和普通属性的初始化也是按定义的顺序进行调用。可以这样理解，普通代码块是构造器的补充，构造器被调用了，那么普通代码块也会被调用。如果在AAA类里面加一个普通代码块，那就是在输出AAA的构造器之前，先输出父类的普通代码块。也就是说，代码块调用的顺序是优先于构造器的。]]></description><category></category></item><item><title><![CDATA[面向对象编程(高级部分)——理解main方法语法]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126433040</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126433040</guid><author>qq_44706176</author><pubDate>Fri, 19 Aug 2022 22:49:40 +0800</pubDate><description><![CDATA[(2) 但是，不能直接访问该类中的非静态成员，必须创建该类的一个实例对象后，才能通过这个对象去访问类中的非静态成员【举例说明】(1) 在 main()方法中，我们可以直接调用 main 方法所在类的静态方法或静态属性。在IDEA中如何给String数组传参。]]></description><category></category></item><item><title><![CDATA[面向对象编程(高级部分)——类变量和类方法]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126432727</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126432727</guid><author>qq_44706176</author><pubDate>Fri, 19 Aug 2022 22:37:46 +0800</pubDate><description><![CDATA[面向对象编程(高级部分)——类变量和类方法]]></description><category></category></item><item><title><![CDATA[多态（基本介绍、快速入门、注意事项以及细节、动态绑定机制）]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126293870</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126293870</guid><author>qq_44706176</author><pubDate>Sun, 14 Aug 2022 10:38:05 +0800</pubDate><description><![CDATA[方法或对象具有多种形态。是面向对象的第三大特征，多态是建立在封装和继承基础之上的。}}class B { //父类System.out.println("B say() 方法被调用...");}}class A extends B { //子类public int sum(int n1, int n2) { //和下面的sum 构成重载}}System.out.println("A say()方法被调用...");}}......]]></description><category></category></item><item><title><![CDATA[继承的使用以及细节问题]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126201783</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126201783</guid><author>qq_44706176</author><pubDate>Sat, 06 Aug 2022 22:52:29 +0800</pubDate><description><![CDATA[继承的使用，以及细节问题，Super的使用和细节]]></description><category></category></item><item><title><![CDATA[IOC操作Bean管理（基于注解方式）]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126110865</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126110865</guid><author>qq_44706176</author><pubDate>Mon, 01 Aug 2022 22:23:55 +0800</pubDate><description><![CDATA[首先我们在spring配置文件头文件要加context配置在测试类加载spring配置文件的时候，我们在spring配置文件中只写了一段代码，就是开启组件扫描，当这一生效，spring就知道我们是用注解方式来做，它会到我们配置的包里面找到包的所有类，如果说类上面有相关的注解，那么就根据注解的方式把对象创建，对象创建之后就可以调用输出等。注解有四种方式，都可以创建对象，只不过在不同层中，让开发人员更加清晰当前组件所扮演的角色，为了代码规范，最好我们都在不同场景运用不同注解。...]]></description><category></category></item><item><title><![CDATA[IOC具体操作（Bean管理操作）——基于xml方式]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126108827</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126108827</guid><author>qq_44706176</author><pubDate>Mon, 01 Aug 2022 21:26:17 +0800</pubDate><description><![CDATA[1）在Spring配置文件中使用bean标签，标签里面添加对应的属性，就可以实现对象创建（2）在bean标签有很多属性，介绍常用的属性id属性唯一标识class属性创建对象的那个类的全路径——包类路径(com.godairo.spring5.User)name属性做个了解就行，用的不多，作用是和id一样的，id的位置也可以不用id，用的是name，而它们区别就是，id里面不能加特殊符号，name可以加特殊符号，这是早期的属性，基本现在不用name，都用id。.........]]></description><category></category></item><item><title><![CDATA[IOC容器]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126108585</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126108585</guid><author>qq_44706176</author><pubDate>Mon, 01 Aug 2022 19:59:50 +0800</pubDate><description><![CDATA[IOC翻译过来就是控制反转，那到底是干嘛的？我们在做操作的时候，都需要创建类的对象，而用原始方式都是new一个对象，比如说我现在有2个类，想要用另一个类中的方法，都是引用。而现在这个过程可以通过IOC实现，好处就是解耦。(1)IOC就是把对象的创建，对象之间调用的过程，都交给Spring进行管理。(2)而我们使用IOC的目的就是为了降低耦合度(3)刚刚的入门案例就是IOC的实现使用场景需要获取对象的时候原有的获取对象的方式使用newObject()来创建一个对象。使用了IoC之后。...]]></description><category></category></item><item><title><![CDATA[Spring框架概述以及入门案例]]></title><link>https://blog.youkuaiyun.com/qq_44706176/article/details/126083303</link><guid>https://blog.youkuaiyun.com/qq_44706176/article/details/126083303</guid><author>qq_44706176</author><pubDate>Sun, 31 Jul 2022 11:19:02 +0800</pubDate><description><![CDATA[1、Spring是轻量级的开源的JavaEE框架2、Spring可以解决企业应用开发的复杂性3、Spring有两个核心部分IOC和AOP之前创建对象时候，都是要new一个类，然后把对象创建，而IOC就是把创建对象的过程，交给Spring进行管理，也就是Spring帮我们去创建对象，我们就不用new的方式去做了。比如说我想在程序中加个功能，或者扩展功能一个功能，按照原始方式，我们需要改变源代码进行实现，而AOP可以在不修改源代码的情况下，进行功能的添加或增强。4、Spring特点。......]]></description><category></category></item></channel></rss>