- 博客(39)
- 收藏
- 关注
原创 mybatis核心文件的深入了解
上次我们对mybatis的核心文件讲了一些标签,还有几个没用讲,这次我们就把剩下的讲了typeHandlers标签(类型转换标签):有些类型他们是可以自动转换的,但是有些是不能自动转换的。这个标签的主要作用是当数据库的数据类型和java数据类型不一样的时候,我们就需要用到它。比如我们在数据库中,我们有生日字段,但是里面存的是1970年到现在的毫秒数,是一个长整型,但是在java的数据类型为日期类型。开发步骤:1,定义转换类继承类BaseTypeHandler<T>2,覆盖4个未实现的
2022-05-14 19:03:26 320
原创 mybatis之动态SQL
Mybatis的映射文件中,前面我们的SQL都是比较简单的,有些时候业务逻辑复杂时,我们的SQL是动态变化的,此时在前面的学习中我们的SQL就不能满足要求了。有时候的参数是不一定的,以前我们学的都是固定死的,参数的个数也是确定的,动态SQL的参数是不一定的。在这里我们主要讲解一下if和foreach两种:准备条件:配置方面用的是代理方式。跟mybatis的的代理开发_Outlier_Lin的博客-CSDN博客这个是一样的。关于if:(我们查询一个但有多个限制条件)<mapper
2022-05-14 15:30:07 315
原创 mybatis的的代理开发
mybatis的代理开发:(代理也相当于是通过调用方法来实现逻辑业务的)Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。这种相比传统的方法我们不需要自己去创建这个接口的实现类了,直接通过mybatis来帮助我们来完成实现类。Mapper接口开发需要遵循以下规范:1、Mapper.xml文件中的namespace与mapper接口的全限定名相同2、Mapper接
2022-05-14 10:51:27 517
原创 mybaties的核心配置文件
在mybaties的核心配置文件中,我们可以在根标签configruation里面配置的标签有:properties 属性:该标签可以加载外部的properties文件settings设置typeAliases类型别名:设置类型别名typeHandlers类型处理器objectFactory对象工厂plugins插件environnents环境:数据源环境配置标签。它内部还有其他的子标签:environment:环境变量的配置。transactionManager:配置事
2022-05-13 12:02:13 264
原创 mybatis的增删改查
插入操作:首先要在映射文件填写语句:<!-- 插入操作--> <insert id="save" parameterType="com.outlier.domain.User"> insert into user value(#{id},#{username},#{password}) </insert>解释上面的属性:首先是insert标签,id就不用说了,前面的快速入门已经说过了,这里的属性par.
2022-05-11 19:47:33 149
原创 mybatis的快速入门
MyBatis的开发步骤:1 添加MyBatis的坐标2 创建user数据表3 编写User实体类4 编写映射文件UserMapper.xml5 编写核心文件SqIMapConfig.xml6 编写测试类接下来我们就用代码演示:第一步:添加MyBatis的坐标 <dependencies> <dependency> <groupId>junit</groupId> <artifa
2022-05-11 17:30:53 400
原创 spring的事物控制(利用注解开发)
准备工作这些在这个博客:Spring的事物控制(利用xml进行开发)_Outlier_Lin的博客-CSDN博客我们前面知道有新注解,原始注解,我们可以通过这两种完全的替代xml文件,但是我这里就很简单,没用有新注解,所以有些就没有替代。...
2022-05-10 19:13:08 170
原创 Spring的事物控制(利用xml进行开发)
首先我们要知道,SpringMVC的事物控制其实就是利用了aop的思想。所以在开发过程中我们要知道谁是切点?谁是通知?配置切面?在这里的切点就是我们需要进行事物控制的方法,通知在这个事物控制里面就是事物控制。然后再进行织入的过程。接下来我们用一个转账的例子来详细解释利用xml来进行事物的控制。准备工作:先在pom中导入我们需要的坐标: <dependencies> <dependency> <groupId>junit<
2022-05-10 18:35:55 301
原创 spring-aop(利用注解开发)
开发步骤:1创建目标接口和目标类(内部有切点)2创建切面类(内部有增强方法)3将目标类和切面类的对象创建权交给spring4在切面类中使用注解配置织入关系5在配置文件中开启组件扫描和AOP的自动代理6 测试下面代码实例:第一步:创建目标接口和目标类(内部有切点)(由于在前一篇博客讲的很详细这里我们只需要把以前的一些Xml配置变成注解就行)@Component("target")public class Target implements TargetInterface..
2022-05-07 20:13:17 358
原创 spirng-aop(以xml的形式完成开发)
首先我们要知道aop分为哪几种代理?分为两种,一种是jdk代理。它是根据接口来进行开发的。第二种是cglib代理,它是通过继承的关系来进行开发的。那么AOP底层到底使用那种代理方式?在spring中,框架会根据目标类是否实现接口来决定采用那种动态代理的方式。(所以我们不用自己考虑)我们再了解一下AOP的相关术语:Target(目标对象)︰代理的目标对象(意思就是我们需要增强的对象)Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类Joinpoint(连接点)︰所谓
2022-05-07 19:28:04 331
原创 SpringMVC异常处理
在SpringMVC中我们可以专门用一个组件来完成处理异常。系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。异常抛出的过程:(都是向上抛,最后全部交给前端控制器找到异常处理器进行异常处理)系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图:我们进行了
2022-05-06 16:51:06 596
原创 SpringMVC拦截器快速入门
拦截器(interceptor)的作用Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。就相当于是在访问之前可以进行业务逻辑的判断,判断出到底能不能访问。拦截器的详细使用:拦截器( Interceptor)是 SpringMVC框架自己的,只有使用了SpringMVC 框架的工程才能用在<mvc:mapping path=“”/>中配置了/**之后,也可以多所有资源进行拦截,但是可以通过<mvc:exclude
2022-05-06 14:32:29 234
原创 Spring之jdbc-template的简单应用
后面学了mybaties这个其实就没什么用了,还是简单的写一下,经典白学。JdbcTemplate概述它是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和ltbernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。JdbcTemplate开发步骤1导入spring-jdbc和spring-tx坐标2创
2022-05-05 19:08:23 786
原创 请求数据之文件上传
文件上传的三要素1 表单项type=“file”2表单的提交方式是post3文件上传的具体代码实现过程:准备过程:首先我们先创建一个jsp文件:记住文件上传的重点:方法必须是post,提交的时候必须是多部分表单。第一步:导入fileupload和io坐标 <dependency> <groupId>commons-fileupload</groupId> <artifactId&g.
2022-05-04 12:41:15 504
原创 SpringMVC获得请求参数之自定义类型的转换器
自定义类型的转换器开发步骤:1定义转换器类实现接口Converter2 在配置文件中声明转换器3 在<annotation-driver>中引用转换器代码实例:效果:控制台:虽然这样没报错但是你的参数改为:这样就报错了。因为每个人的书写习惯不同,这时候我们就需要转换器了。第一步:定义转换器类实现接口Converter第二步:在配置文件中声明转换器 <bean id="ConversionService" cla..
2022-04-27 21:13:28 159
原创 SpringMVC请求数据之Restful风格的参数
代码实例:这个注解的要求就是这两个地方一定要相同。然后请求方式也不像以前通过?username=zhangsan来完成,而是直接通过user/quick17/zhangsan这样来传递。这只是get请求方式,我们可以通过requestMappring来完成不同的请求方式,因为requestMappring里面有属性method。通过这样的方式来完成,不同的请求方式。...
2022-04-27 20:12:04 152
原创 Springmvc请求参数之参数绑定注解
当我们直接通过获得普通数据的请求参数的时候,我们直接就可以获得到例如:但是当我们给的请求参数不是username而是name时,就不能打印出正确的参数,而是打印的是null,所以现在我们就可以使用参数绑定注解来完成当请求参数名称与Controller的业务方法参数名称不一致的时候,我们就需要通过@RequestParam注解显示的绑定。代码实例:效果:控制台:关于@RequestParam内部属性:我感觉这个注解有点鸡肋。就如上面这个代码的例子。如
2022-04-27 19:41:43 575
原创 获得请求参数之配置全局乱码过滤器(解决乱码的问题)
在获得请求参数的时候我们如果书写中文的时候,就会发生乱码的问题,例如:控制台打印的就是:就出现了乱码的问题。当post请求的时候,数据会出现乱码的问题,我们可以设置一个过滤器来进行编码的过滤代码实例:代码解释:首先的calss:是告诉springmvc框架它在哪儿。然后名字随便取。然后init-param是告诉它我要用什么编码格式。然后要为这个过滤器配置映射(也就是在哪儿执行)下面的pattern的/*代表的是针对于全部然后再运行:控制台:
2022-04-27 17:22:44 188
原创 SpringMVC获得请求数据
SpringMVC可以接收如下类型的参数:1基本数据类型2 POJO类型参数(就是普通的JavaBean对象)3 数组类型的参数4 集合类型参数服务器端获得请求参数,有时还要进行数据的封装。一下是代码实例讲解和解析:获得基本数据类型的参数:Controller中的业务方法的参数名称要求与请求参数的name一致,参数值会自动映射。例:我要获得下面的参数username,和age在Controller中业务方法的参数就为:首先@RequestMapping()
2022-04-27 17:08:44 266
原创 SpringMVC的数据响应之回写数据
回写数据的方式:1直接返回字符串2返回对象或者集合下面是代码实例和具体解析:方法1:通过response来完成:运行效果:方法2:上面的发方法是通过response来完成的,但是跟以前的方法没什么区别,也不能体现出框架的作用,接下来我们通过方法来直接返回我们通过注解@Responseboby来告诉SpringMVC返回的字符串,不是用来跳转的,而是直接在http响应体中返回的。如果没有这个注解,spring就会去视图跳转。运行结果:返回一定格式的字符.
2022-04-26 19:23:23 521
原创 SpringMVC的数据响应之页面跳转
页面跳转分为:1,直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转2,ModelAndView对象返回下面是代码实例和详细解析:直接返回字符串:这个视图解析器其实SpringMVC框架自己有,但是我们这样写就相当于重写了,然后根据我们自己的实际需要去进行配置。ModelAndView对象:(通过这种形式有很多的方法,下面一 一 讲解)方法1:代码解释:我们要返回ModelAndView,那么返回值肯定就要是ModelAndVie.
2022-04-26 16:59:21 1296
原创 SpringMVC的执行过程
第一步:首先是客户端向前端控制器(DispatcherServlet)发出请求第二步:前端控制器(DispatcherServlet)向处理器映射器(HandlerMapping)请求查询Handler第三步:处理器映射器(HandlerMapping)向前端控制器(DispatcherServlet)返回HandlerExcutionChain第四步:前端控制器(DispatcherServlet)向处理器适配器(HandlerAdaptor)请求执行Handler第五步:处理器适配器(H
2022-04-26 15:46:26 213
原创 关于SpringMVC的XML配置解析
我们知道在SpringMVC中的执行过程中,有什么处理器映射器,什么处理器适配器,还有视图解析器等,这些我们都可以配置。接下来我们以视图解析器为例子:我们经过源码查看,支持视图解析器的是类是InternalResourceViewResolver。这个类中主要的原理就是通过添加前缀和后缀来完成的。所以它里面有前缀属性prefix,有后缀属性suffix我们就直接通过普通数据的依赖注入方式去进行注入,指定前后缀加的东西(因为一般我们的视图都是放在一个文件夹中的,并且基本上都是JSP文件,所以就很好
2022-04-25 20:09:07 546
原创 关于组件扫描的详细解析
以前在学spring框架的时候,我们也用过组件扫描,现在我们学SpringMVC我们同样也会用组件扫描,当然你写在哪个配置文件中都可以完成扫描,但是我们为了好管理,我们都是各自扫各自负责的层的业务。但是扫描的时候我们怎么避免多个配置文件怎么扫描重复呢?接下来我们就详细的解说首先我们要明白组件扫描在context命名空间下。base-package就是我们要扫描的包的名字。如果这样写我们就会跟以前Spring的配置文件扫描重复,这时候我们在中间就会加入一些条件,来避免扫描重复现在我
2022-04-25 19:41:50 1448
原创 关于注解RequestMapping注解的解析
@RequestMapping的作用:建立请求URL和处理请求方法之间的对应关系一般用在的位置:类上:请求URL的第一级访问目录,此处不写的话,就相当于应用的根目录方法上:请求URL的第二级访问目录,与类上的使用@RequestMapping标注的一级目录一起组成访问虚拟路径下面是应用实例:应用在方法上:效果:应用在类上:效果:值得注意的是:为什么我应用在类上的时候返回值前面加了一个“/”如果不加“/”就回报404错误,找不到资源这是为什么呢?
2022-04-25 17:07:17 1794
原创 快速入门SpringMVC
首先我们要先创建一个MAVEN项目,以前我们是直接创建的是JAVA普通项目,现在我们直接创建MAVEN项目创建MAVEN项目:因为我们要选择下面的项目,所以这里要勾选。在下面我们要选择的是记住不要选这个:然后我们新建我们需要的文件夹,右击main进行选择首先先建立存放源码的地方同样的方法再创建resource然后我们再源码里面建立需要用到的类以及接口(这些都是准备工作,前面的博客都有(集成WEB环境)唯一不一样的,就是我们现在建立的是MAVEN项目)Spr
2022-04-22 20:18:00 313
原创 Spring集成WEB环境(进阶解耦合)
我们以前获取配置文件都是通过这两句代码,由于你的配置文件也就是applicationContext.xml,它的名字不一定叫这个名字,因为这个名字是可以自定义的,只是我们大家都约定熟成为这个名字,所以我们就相当于是耦合死了。而且每次都会创建一个容器,也会影响性能接下来我们就开始解耦合。我们使用Spring提供的获取应用上下文(也就是配置文件)的工具我们是相当于通过监听器,来创建容器,只要项目一运行,我们就创建容器,把它放到一个大家都能取到的地方(servletContext域
2022-04-15 21:43:20 509
原创 解决Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
这是一个关于IDEA启动tomcat的一个错误首先点击File找到下面这个选项然后点击左侧然后找到对右侧这个地方右击选择下面图示这个地方最后选择APPLY就可以了可以看我完全项目Spring集成WEB环境(简单应用)_Outlier_Lin的博客-CSDN博客...
2022-04-15 18:31:16 4392 2
原创 Spring集成WEB环境(简单应用)
创建项目:我们刚开始可以创建一个WEB项目(当然也可以创建一个普通的JAVA项目,然后引入WEB也行,博客最后面会展示)创建了项目之后,我们引入MAVEN框架(不会引入的,可以看我这个博客Spring程序的开发步骤创建项目以及最简单的实现_Outlier_Lin的博客-CSDN博客)然后创建一个Dao层的接口以及实现类再创建一个service层的接口和实现类这里我用了依赖注入(通过set方法),去实例化userdao(不会依赖注入的同学可以看我这个博客关于Spri
2022-04-15 18:16:32 909
原创 Spring集成junit
首先,我们要了解的是,基本上在利用spring开发的时候基本上每个测试类都会有如下问题这两行代码又是少不了的,因为一行是加载配置文件(配置类),一行是获得对象,所以这两行都是少不了的,整合junit就是为了解决这个问题上述问题的解决思路:Spring集成junit步骤:第一步:导入spring集成Junit坐标我们先去MAVEN的依赖关系去看一看,发现里面没有spring-test的jar包,因为spring-test就是spirng集成Junit的包现在我们导入
2022-04-15 12:13:03 924
原创 Spring注解开发(新注解)
为什么要用新注解呢?因为有些东西是原始注解无法替代的,前面我们使用原始注解都是在自己定义的类,可以随意增加属性和方法,但是当我们用第三方类的时候(也就是别人已经定义好的类)这个我们是无法去给它添加属性,方法,也不能去找到别人的源码去里面添加注解,还有在spring的配置文件中我们也无法给类添加组件扫描,这时候我们就要用到新注解。无法用原始注解来替代的:关于Spring的新注解:我们使用新注解要有一个思想,这个思想就是替代思想,我们要用一个核心配置的类去替代XML核心文件。.
2022-04-13 18:20:31 589
原创 Spring配置数据源(连接池)
首先数据源就是为了提高程序的性能而出现的。连接池的作用是为了提高性能,避免重复多次的打开数据库连接而曹诚性能的下降和系统资源的浪费;连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建和销毁的过程。这样以提高系统的性能。数据源的开发步骤:1,导入数据源的坐标和数据库驱动坐标2,创建数据源对象3,设置数据源的基本连接数据4,使用数据源获取连接资源和归还连接资源使用连接池的优势:1、资源复用:由于数据库连接得到重用,避免了频繁创建
2022-04-12 22:18:00 4361 1
原创 Spring的相关API
ApplicationContext:接口类型,代表应用上下文,可以通过其实例来获得Spring容器中的Bean对象后面的new ClassPathXmlApplicationContext,其实就是ApplicationContext的实现类,我们通过多态的方式来进行接收。ApplicationContext的实现类:主要有三种第一种new ClassPathXmlApplicationContext(),它是从根路径下加载配置文件(推荐使用这种)第二种:FileSystemXmlAp
2022-04-12 20:08:39 354
原创 关于Bean的子标签
constructor-org:<bean>元素的子元素,可以使用此元素传入构造参数进行实例化,也是依赖注入的时候使用的一种方式这里面的属性name的参数,指得是构造器的形式参数ref属性指的是在容器中的引用(是另一个Bean的ID)property:<bean>元素的子元素,用于调用 Bean 实例中的 setter 方法来属性赋值,从而完成依赖注入。对象的依赖注入如果通过set方法来注入就会使用这个子标签。这里的name属性里的参数指的是set方法
2022-04-12 19:47:08 442
原创 关于Bean标签的一些属性以及getBean()方法
id属性:Bean 的唯一标识符,Spring 容器对 Bean 的配置和管理都通过该属性完成,就相当于给 它起一个名字,到时候调用的时候就通过id来调用class属性:该属性指定了 Bean 的具体实现类,它必须是一个完整的类名,即类的全限定名。就 相当于是把类给引入进去scope属性:用于设定 Bean 实例的作用域,属性值可以为 singleton(单例)、prototype(原型)、request、session 和 global Session。其默认值是 singleton。
2022-04-12 19:31:02 751 1
原创 关于Spring的依赖注入
一 对象的依赖注入 通过set方法 (通过Bean注入,就是后面的ref)需要注入的类中要有一个属性,这个属性就是被注入的类,还要创建该属性的set方法,因为我们是通过set方法进行注入的,所以进行如下的书写然后在Spring 的核心配置文件中开始进行编写注入需要注意的是 property标签中的name属性里面填的是set方法的名字,但是要去掉set并且首字母小写,虽然看似就是属性的名字,其实不是,如果你把set方法后面的名字进行修改了,这个name里面的值也应该修改,然后后面的r
2022-04-12 15:49:32 840
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人