![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
框架学习
文章平均质量分 85
记录在Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus学习内容 学习内容来源于B站黑马程序员
|旧市拾荒|
三年工作经验,任职于某银行科技部门,从事后端开发与数据开发。
展开
-
Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析
所以我们会发现,做任何模块的开发,对于这段代码,基本上都是对红色部分的调整,所以我们把去掉红色内容的东西称之为。修改以后的好处是,Mybatisplus已经帮我们把业务层的一些基础的增删改查都已经实现了,可以直接进行使用。至此代码生成器就已经完成工作,我们能快速根据数据库表来创建对应的类,简化我们的代码开发。,以后只需要传入不同的参数,就可以根据模板创建出不同模块的dao代码。对于代码生成器中的代码内容,我们可以直接从官方文档中获取代码进行修改,运行成功后,会在当前项目中生成很多代码,代码包含。原创 2023-02-13 20:25:33 · 489 阅读 · 0 评论 -
Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁
第一个最先想到的就是锁,锁在一台服务器中是可以解决的,但是如果在多台服务器下锁就没有办法控制,比如12306有两台服务器在进行卖票,在两台服务器上都添加锁的话,那也有可能会导致在同一时刻有两个线程在进行卖票,还是会出现并发问题。所以要想实现乐观锁,首先第一步应该是拿到表中的version,然后拿version当条件在将version加1更新回到数据库表中,所以我们在查询的时候,需要对其进行查询。你会发现,我们传递的是1,MybatisPlus会将1进行加1,然后,更新回到数据库表中。原创 2023-02-13 20:22:00 · 1301 阅读 · 0 评论 -
Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除
(1)添加与数据库表的列对应的一个属性名,名称可以任意,如果和数据表列名对不上,可以使用@TableField进行关系映射,如果一致,则会自动对应。如果只删除员工不删除合同表数据,那么合同的员工编号对应的员工信息不存在,那么就会出现垃圾数据,就会出现无主合同,根本不知道有张业绩这个人的存在。可想而知,MyBatisPlus的逻辑删除会将所有的查询都添加一个未被删除的条件,也就是已经被删除的数据是不应该被查询出来的。从测试结果来看,逻辑删除最后走的是update操作,会将指定的字段修改成删除状态对应的值。原创 2023-02-09 20:51:01 · 2602 阅读 · 0 评论 -
Java开发学习(四十七)----MyBatisPlus删除语句之多记录操作
很简单删除掉,但是一个个删除的话还是比较慢和费事的,所以一般会给用户一个批量操作,也就是前面有一个复选框,用户一次可以勾选多个也可以进行全选,然后删一次就可以将购物车清空,这个就需要用到。翻译方法的字面意思为:删除(根据ID 批量删除),参数是一个集合,可以存放多个id值。除了按照id集合进行批量删除,也可以按照id集合进行批量查询,还是先来看下API。方法名称翻译为:查询(根据ID 批量查询),参数是一个集合,可以存放多个id值。执行成功后,数据库表中的数据就会按照指定的id进行删除。原创 2023-02-09 20:49:25 · 690 阅读 · 0 评论 -
Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置
我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容。我们更想要的是按照数据库表字段进行自增长,在解决这个问题之前,我们先来分析下ID该如何选择:不同的表应用不同的id生成策略日志:自增(1,2,3,4,……)购物订单:特殊规则(FQ23948AK3843)外卖单:关联地区日期等信息(10 04 20200314 34 91)关系表:可省略id……不同的业务采用的ID生成方式应该是不一样的,那么在MyBatisPlus中都提供了哪些主键生成策略,以及我们该如何进行选择。原创 2023-02-09 20:48:23 · 1293 阅读 · 0 评论 -
Java开发学习(四十五)----MyBatisPlus查询语句之映射匹配兼容性
当表的列名和模型类的属性名发生不一致,就会导致数据封装不到模型对象,这个时候就需要其中一方做出修改,那如果前提是两边都不能改又该如何解决?,设置该字段是否在数据库表中存在,如果设置为false则不存在,生成sql语句查询的时候,就不会再查询该字段了。,该属性设置默认是否需要查询该字段的值,true(默认值)表示默认查询该字段,false表示默认不查询该字段。之所以数据能够成功的从表中获取并封装到模型对象中,原因是表的字段列名和模型类的属性名一样。,使用该注解可以实现模型类属性名和表的列名之间的映射关系。原创 2023-02-07 22:12:41 · 296 阅读 · 0 评论 -
Java开发学习(四十四)----MyBatisPlus查询语句之查询条件
除了上面介绍的这几种查询条件构建方法以外还会有很多其他的方法,比如isNull,isNotNull,in,notIn等等方法可供选择,具体参考官方文档的条件构造器来学习使用.前面我们只使用了lt()和gt(),除了这两个方法外,MybatisPlus还封装了很多条件对应的方法。需求:对年龄进行范围查询,使用lt()、le()、gt()、ge()、between()进行范围查询。orderByAsc/Desc(多个column):按照多个字段进行升序/降序。like():前后加百分号,如 %J%原创 2023-02-07 22:10:30 · 2827 阅读 · 0 评论 -
Java开发学习(四十三)----MyBatisPlus查询语句之查询投影
MybatisPlus只是对MyBatis的增强,如果MybatisPlus实现不了,我们可以直接在DAO接口中使用MyBatis的方式实现。目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容,我们所说的查询投影即不查询所有字段,只查询出指定内容的数据。为了在做结果封装的时候能够更简单,我们将上面的聚合函数都起了个名称,方面后期来获取这些数据。需求:聚合函数查询,完成count、max、min、avg、sum的使用。需求:分组查询,完成 group by的查询使用。count:总记录数。原创 2023-02-05 21:39:04 · 462 阅读 · 0 评论 -
Java开发学习(四十二)----MyBatisPlus查询语句之条件查询
在进行查询的时候,我们的入口是在Wrapper这个类上,因为它是一个接口,所以我们需要去找它对应的实现类,关于实现类也有很多,说明我们有多种构建查询条件对象的方式,三种构建查询对象的方式,每一种都有自己的特点,所以用哪一种都行,刚才都是一个条件,那如果有多个条件该如何构建呢?第一种方式介绍完后,有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功。使用一个age属性,如何去接收页面上的两个值呢?这个我们在前面都有见过,比如查询所有和分页查询的时候,都有看到过一个。原创 2023-02-05 21:37:00 · 2113 阅读 · 0 评论 -
Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发
我们更想要的是主键自增,应该是5才对,这个是我们后面要介绍的主键ID生成策略,这块的这个问题,我们暂时先放放。就是我们接下来的Lombok。Lombok只是简化模型类的编写,我们之前的方法也能用,比如有人会问:我如果只想要有name和password的构造函数,该如何编写?IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+h,会找到其有一个实现类为。T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值。原创 2023-01-11 21:15:33 · 400 阅读 · 0 评论 -
Java开发学习(四十)----MyBatisPlus入门案例与简介
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率通过刚才的案例,相信大家能够体会简化开发和提高效率这两个方面的优点。原创 2023-01-11 21:11:32 · 468 阅读 · 0 评论 -
Java开发学习(三十九)----SpringBoot整合mybatis
版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区。我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。选择当前模块需要使用的技术集(MyBatis、MySQL)来配置使用什么数据源。,或在MySQL数据库端配置时区解决此问题。会扫描接口并创建接口的代码对象交给。有默认的数据源,我们也可以指定使用。运行测试方法,我们会看到如下错误信息。,在该包下测试类,内容如下。管理,但是现在并没有告诉。现在我们并没有指定数据源,,并配置模块相关基础信息。原创 2023-01-05 21:55:47 · 413 阅读 · 1 评论 -
Java开发学习(三十八)----SpringBoot整合junit
先来回顾下Spring整合使用@RunWith注解指定运行器,使用注解来指定配置类或者配置文件。而SpringBoot整合junit特别简单,分为以下三步完成在测试类上添加注解使用@Autowired注入要测试的资源定义测试方法进行测试。原创 2023-01-05 21:53:45 · 129 阅读 · 0 评论 -
Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类
不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明。有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下。大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实。在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装。即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。原创 2023-01-03 20:40:51 · 1211 阅读 · 4 评论 -
Java开发学习(三十六)----SpringBoot三种配置文件解析
这种格式的配置文件在近些年已经占有主导地位,那么这种配置文件和前期使用的配置文件是有一些优势的,我们先看之前使用的配置文件。数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔,例如。注意:这种方式,框架内容大量数据,框架使用的比较多,而在开发中我们很少使用。的配置文件,我们就可以在该配置文件中修改端口号,在该配置文件中书写。再次启动服务,在控制台可以看到使用的端口号是。的配置文件中的内容相同,只是使用了不同的后缀名而已。的配置文件,里面配置了不同的数据,内容如下。原创 2023-01-03 20:38:52 · 588 阅读 · 0 评论 -
Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。使用了Spring框架后已经简化了我们的开发。而SpringBoot又是对Spring开发进行简化的,可想而知SpringBoot使用的简单及广泛性。既然SpringBoot是用来简化Spring开发的,那我们就先回顾一下,以SpringMVC创建工程,并在pom.xml配置文件中配置所依赖的坐标编写web3.0的配置类作为web程序,web3.0。原创 2022-12-29 21:57:54 · 391 阅读 · 0 评论 -
Java开发学习(三十四)----Maven私服(二)本地仓库访问私服配置与私服资源上传下载
说明:执行这个命令的时候,私服会保证项目所用到的资源私服里面都存在,因此第一次执行的时候会下载大量的资源,这个时间可能耗时比较长,需要稍微等一下。为了避免阿里云等Maven私服地址的影响,建议先将本地配置的阿里云等Maven私服镜像地址注释掉,等学习完后,再将其恢复。Maven下载的时候,又需要携带用户名和密码到私服上找对应的仓库组进行下载,然后再给IDEA。标签,要么在自己的pom.xml中配置,要么在其父项目中配置,然后子项目中继承父项目即可。如果私服中没有对应的jar,会去中央仓库下载,速度很慢。原创 2022-12-29 21:54:51 · 612 阅读 · 0 评论 -
Java开发学习(三十三)----Maven私服(一)私服简介安装与私服分类
团队开发现状分析(1)张三负责ssm_crm的开发,自己写了一个ssm_pojo模块,要想使用直接将ssm_pojo安装到本地仓库即可(2)李四负责ssm_order的开发,需要用到张三所写的ssm_pojo模块,这个时候如何将张三写的ssm_pojo模块交给李四呢?(3)如果直接拷贝,那么团队之间的jar包管理会非常混乱而且容器出错,这个时候就想能不能将写好的项目上传到中央仓库,谁想用就直接联网下载即可。原创 2022-12-26 20:44:18 · 175 阅读 · 0 评论 -
Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式
可以确保每次打包或者安装的时候,程序的正确性,假如测试已经通过在我们没有修改程序的前提下再次执行打包或安装命令,由于顺序执行,测试会被再次执行,就有点耗费时间了。这种方式最简单,但是有点"暴力",会把所有的测试都跳过,如果我们想更精细的控制哪些跳过哪些不跳过,就需要使用配置插件的方式。这个时候就有一个问题是,不同环境的配置是不相同的,如不可能让三个环境都用一个数据库,所以就会有三个数据库的url配置,skipTests:如果为true,则跳过所有测试,如果为false,则不跳过测试。原创 2022-12-26 20:41:32 · 465 阅读 · 0 评论 -
Java开发学习(三十一)----Maven属性与版本管理
1.1 问题分析如下图所示你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦。问题清楚后,我们需要解决的话,就可以参考咱们java基础所学习的变量,声明一个变量,在其他地方使用该变量,当变量的值发生变化后,所有使用变量的地方,就会跟着修改,即:1.2 解决步骤步骤1:工程中定义属性步骤2:修改依赖的version此时,我们只需要更新工程中properties标签中所维护的jar包版本,项目中所有的版原创 2022-12-07 21:14:04 · 488 阅读 · 0 评论 -
Java开发学习(三十)----Maven聚合和继承解析
分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是比较麻烦的如果四个项目都已经安装成功,当ssm_pojo发生变化后,我们就得将ssm_pojo重新安装到maven仓库,但是为了确保我们对ssm_pojo的修改不会影响到其他项目模块,我们需要对所有的模块进行重新编译,那又需要将所有的模块再来一遍项目少的话还好,但是如果项目多的话,一个个操作项目就容易出现漏掉或重复操作的问题,所以我们就想能不能抽取一个项目原创 2022-12-07 21:12:30 · 147 阅读 · 0 评论 -
Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析
现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用标签来进行jar包的引入即可。其实就是依赖,关于依赖管理里面都涉及哪些内容,我们就一个个来分析下:依赖传递可选依赖排除依赖我们先来说说什么是依赖:依赖指当前项目运行所需的jar,一个项目可以设置多个依赖。格式为:一、依赖传递与冲突问题1.1 依赖下钻比如下面的项目的依赖中有一个比较大的区别就是有的依赖前面有箭头,有的依赖前面没有。那么这个箭头原创 2022-12-06 22:38:32 · 725 阅读 · 0 评论 -
Java开发学习(二十八)----拦截器(Interceptor)详细解析
讲解拦截器的概念之前,我们先看一张图:(1)浏览器发送一个请求会先到Tomcat的web服务器(2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源(3)如果是静态资源,会直接到Tomcat的项目部署目录下去直接访问(4)如果是动态资源,就需要交给项目的后台代码进行处理(5)在找到具体的方法之前,我们可以去配置过滤器(可以配置多个),按照顺序进行执行(6)然后进入到到中央处理器(SpringMVC中的内容),SpringMVC会根据配置的规则进行拦截(7)如果满足规则,则进行处理,找到原创 2022-12-06 22:36:34 · 573 阅读 · 0 评论 -
Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发
REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格当我们想表示一个网络资源的时候,可以使用两种方式:传统风格资源描述形式 查询id为1的用户信息 保存用户信息REST风格描述形式传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能所以REST的原创 2022-12-05 23:10:43 · 257 阅读 · 0 评论 -
Java开发学习(二十六)----SpringMVC返回响应结果
SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户。比如:根据用户ID查询用户信息、查询用户列表、新增用户等。对于响应,主要就包含两部分内容:响应页面响应数据文本数据json数据因为异步调用是目前常用的主流方式,所以我们需要更关注的就是如何返回JSON数据。创建一个Web的Maven项目pom.xml添加Spring依赖 创建对应的配置类 编写模型类User原创 2022-12-05 23:07:27 · 543 阅读 · 0 评论 -
Java开发学习(二十五)----使用PostMan完成不同类型参数传递
错误的原因是:SpringMVC将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数据封装到对象中,但是List是一个接口无法创建对象,所以报错。请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数?简单数据类型一般处理的是参数个数比较少的请求,如果参数比较多,那么后台接收参数的时候就比较复杂,这个时候我们可以考虑使用POJO数据类型。SpringMVC是如何实现类型转换的?原创 2022-11-29 21:43:10 · 4757 阅读 · 2 评论 -
Java开发学习(二十四)----SpringMVC设置请求映射路径
当类上和方法上都添加了@RequestMapping注解,前端发送请求的时候,要和两个注解的value值相加匹配才能访问到。@RequestMapping注解value属性前面加不加/都可以原创 2022-11-29 21:36:52 · 199 阅读 · 0 评论 -
Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制
SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。SpringMVC是处于Web层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前端,所以如何处理请求和响应是SpringMVC中非常重要的一块内容。咱们现在web程序大都基于三层架构来实现。浏览器发送一个请求给后端服务器,后端服务器现在是使用Servlet来接收请求和数据。原创 2022-11-27 17:52:07 · 319 阅读 · 0 评论 -
Java开发学习(二十二)----Spring事务属性、事务传播行为
当转账业务之间出现异常(int i =1/0),转账失败,tbl_account成功回滚,但是tbl_log表未添加数据。及其子类进行事务回顾,其他的异常类型是不会回滚的,对应IOException不符合上述条件所以不回滚。rollbackFor是指定回滚异常,对于异常事务不应该都回滚么,为什么还要指定?这块需要更正一个地方,并不是所有的异常都会回滚事务,比如下面的代码就不会回滚。运行后,就能实现我们想要的结果,不管转账是否成功,都会记录日志。失败原因:日志的记录与转账操作隶属同一个事务,同成功同失败。原创 2022-11-27 17:49:17 · 147 阅读 · 0 评论 -
Java开发学习(二十一)----Spring事务简介与事务角色解析
1.1 相关概念介绍事务作用:在数据层保障一系列的数据库操作同成功同失败Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败数据层有事务我们可以理解,为什么业务层也需要处理事务呢?举个简单的例子,转账业务会有两次数据层的调用,一次是加钱一次是减钱把事务放在数据层,加钱和减钱就有两个事务没办法保证加钱和减钱同时成功或者同时失败这个时候就需要将事务放在业务层进行处理。Spring为了管理事务,提供了一个平台事务管理器。原创 2022-11-23 22:20:02 · 146 阅读 · 0 评论 -
Java开发学习(二十)----AOP总结
5.方法名书写保留动词,例如get,使用*表示名词,例如getById匹配描述为getBy*获取切入点方法返回值,前置和抛出异常后通知是没有返回值,后置通知可有可无,所以不做研究。JoinPoint:适用于前置、后置、返回后、抛出异常后通知,设置为方法的第一个形参。获取切入点方法运行异常信息,前置和返回后通知是不会有,后置通知可有可无,所以不做研究。通知(Advice):若干个方法的共性功能,在切入点处执行,最终体现为一个方法。切入点(Pointcut):匹配连接点的式子,也是具有共性功能的方法描述。原创 2022-11-23 22:17:50 · 107 阅读 · 0 评论 -
Java开发学习(十九)----AOP环绕通知案例之密码数据兼容处理
综上所述,我们需要考虑两件事: ①:在业务方法执行之前对所有的输入参数进行格式处理——trim() ②:使用处理后的参数调用原始方法——环绕通知中存在对原始方法的调用。当我们从别人发给我们的内容中复制提取码的时候,有时候会多复制到一些空格,直接粘贴到百度的提取码输入框。答案是可以的,我们只需要在业务方法执行之前对所有的输入参数进行格式处理——trim()我们的需求是将原始方法的参数处理后在参与原始方法的调用,能做这件事的就只有环绕通知。需求是使用AOP将参数进行统一处理,不管输入的密码。原创 2022-11-21 22:23:37 · 256 阅读 · 0 评论 -
Java开发学习(十八)----AOP通知获取数据(参数、返回值、异常)
前面的博客我们写AOP仅仅是在原始方法前后追加一些操作,接下来我们要说说AOP中数据相关的内容,我们将从获取参数、获取返回值和获取异常三个方面来研究切入点的相关信息。前面我们介绍通知类型的时候总共讲了五种,那么对于这五种类型都会有参数,返回值和异常吗?我们先来一个个分析下:获取切入点方法的参数,所有的通知类型都可以获取参数JoinPoint:适用于前置、后置、返回后、抛出异常后通知ProceedingJoinPoint:适用于环绕通知。原创 2022-11-21 22:21:16 · 544 阅读 · 0 评论 -
Java开发学习(十七)----AOP案例之测量业务层接口执行效率
这个的目的是查看每个业务层执行的时间,这样就可以监控出哪个业务比较耗时,将其查找出来方便优化。原始方法如果只执行一次,时间太快,两个时间差可能为0,所以我们要执行万次来计算时间差。我们没有办法区分到底是哪个接口的哪个方法执行的具体时间,具体如何优化?因为程序每次执行的时长是不一样的,所以运行多次最终的结果是不一样的。(4) 用后一个时间减去前一个时间的差值,就是我们需要的结果。配置切入点表达式,需要添加一个方法,并添加@Pointcut。所以要在方法执行的前后添加业务,经过分析我们将采用。原创 2022-11-13 22:22:33 · 150 阅读 · 0 评论 -
Java开发学习(十六)----AOP切入点表达式及五种通知类型解析
对于AOP中切入点表达式,总共有三个大的方面,分别是、和。1.1 语法格式首先我们先要明确两个概念:切入点:要进行增强的方法切入点表达式:要进行增强的方法的描述方式对于切入点的描述,我们其实是有两种方式的,先来看下面的例子描述方式一:执行com.itheima.dao包下的BookDao接口中的无参数update方法描述方式二:执行com.itheima.dao.impl包下的BookDaoImpl类中的无参数update方法因为调用接口方法的时候最终运行的还是其实现类的方法,所以上面两种描述方原创 2022-11-13 22:20:28 · 307 阅读 · 0 评论 -
Java开发学习(十五)----AOP入门案例及其工作流程解析
AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。OOP(Object Oriented Programming)面向对象编程我们都知道OOP是一种编程思想,那么AOP也是一种编程思想,编程思想主要的内容就是指导程序员该如何编写程序,所以它们两个是不同的编程范式。原创 2022-11-07 21:40:13 · 181 阅读 · 0 评论 -
Java开发学习(十四)----Spring整合Mybatis及Junit
Junit是一个搞单元测试用的工具,它不是我们程序的主体,也不会参加最终程序的运行,从作用上来说就和之前的东西不一样,它不是做功能的,看做是一个辅助工具就可以了。Junit运行后是基于Spring环境运行的,所以Spring提供了一个专用的类运行器,这个务必要设置,这个类运行器就在Spring的测试专用包中提供的,导入的坐标就是这个东西。Mybatis的基础环境我们已经准备好了,接下来就得分析下在上述的内容中,哪些对象可以交给Spring来管理?原创 2022-11-07 21:35:46 · 145 阅读 · 0 评论 -
Java开发学习(十三)----基于注解开发定义第三方bean及注解开发总结
在前面的博客中定义bean的时候都是在自己开发的类上面写个注解就完成了,但如果是第三方的类,这些类都是在jar包中,我们没有办法在类上面添加注解,这个时候该怎么办?遇到上述问题,我们就需要有一种更加灵活的方式来定义bean,这种方式不能在原始代码上面书写注解,一样能定义bean,这就用到了一个全新的注解@Bean。这个注解该如何使用呢?学习@Bean注解之前先来准备环境:创建一个Maven项目pom.xml添加Spring的依赖 添加一个配置类 添加BookDao、BookDaoIm原创 2022-10-22 16:46:52 · 177 阅读 · 0 评论 -
Java开发学习(十二)----基于注解开发依赖注入
出现问题的原因是,在BookServiceImpl类中添加了BookDao的属性,并提供了setter方法,但是目前是没有提供配置注入BookDao的,所以bookDao对象为Null,调用其save方法就会报。介绍完后,会有一种感觉就是这个注解好像没什么用,跟直接赋值是一个效果,还没有直接赋值简单,所以这个注解存在的意义是什么?@Autowired是按照类型注入的,给BookDao的两个实现起了名称,它还是有两个bean对象,为什么不报错?运行App类,查看运行结果,说明配置文件中的内容已经被加载到。原创 2022-10-22 16:43:12 · 293 阅读 · 0 评论 -
Java开发学习(十一)----基于注解开发bean作用范围与生命周期管理
前面使用注解已经完成了bean的管理,接下来将通过配置实现的内容都换成对应的注解实现,包含两部分内容:和。1.1 环境准备首先准备环境:创建一个Maven项目pom.xml添加Spring的依赖 添加一个配置类 添加BookDao、BookDaoImpl类 创建运行类App 最终创建好的项目结构如下:1.2 Bean的作用范围(1)先运行App类,在控制台打印两个一摸一样的地址,说明默认情况下bean是单例(2)要想将BookDaoImpl变成非单例,只需要在其原创 2022-10-17 22:47:42 · 131 阅读 · 0 评论