SSM
文章平均质量分 82
Spring SpringMVC Mybatis
Listener-1379
全栈工程师
展开
-
【SSM】整合开发
(1)ssm整合过程(2)准备工作(3)相关配置(4)测试整合效果原创 2023-04-24 11:20:09 · 790 阅读 · 0 评论 -
【SSM】SpringMVC(三:SpringMVC拦截器)
2)开发拦截器的功能,实现HandlerInterceptor接口,重写preHandle()方法。2)postHandle():在请求被处理之后,但结果还没有渲染前进行操作,可以改变响应结果。3)afterCompletion:所有的请求响应结束后执行善后工作,清理对象,关闭资源。2)实现HandlerInterceptor接口,实现的接口,推荐使用实现接口的方式。1)改造登录方法,在session中存储用户的信息,用于进行权限的验证。1)preHandle():在请求被处理之前进行操作。原创 2023-04-17 18:32:11 · 349 阅读 · 0 评论 -
【SSM】SpringMVC(二.注解式开发)
RequestMapping注解可以注解在方法上,也可以注解在类上,但意义是不同的。此注解加在方法上,是为此方法去注册一个可以访问的名称(路径)此注解加在类上,是相当于包名(虚拟路径),为了区分不中类中相同名称的action。value 属性值常以“/”开始。@RequestMapping 的 value 属性用于定义所匹配请求的 URI。原创 2023-04-17 11:29:03 · 267 阅读 · 0 评论 -
【SpringMVC】SpringMVC(一:第一个SpringMVC项目)
因为web的请求都是由Servlet来进行处理的,而SpringMVC的核心处理器就是一个DispatcherServlet,它负责接收客户端的请求,并根据请求的路径分派给对应的action(控制器)进行处理,处理结束后依然由核心处理器DispatcherServlet进行响应返回。而action中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。该文件名可以任意命名。该注解可以加在类上相当于包名,还可以加在方法上相当于action的名称,都是来指定映射路径的。原创 2023-04-14 16:28:24 · 351 阅读 · 0 评论 -
【SSM】Spring6(十二.Spring6集成MyBatis3.5)
使用IDEA的DataBase插件连接数据库。原创 2023-04-12 22:58:14 · 802 阅读 · 0 评论 -
【SSM】Spring6(十一.Spring对事务支持)
在service类中有a()方法和b()方法,a()方法上有事务,b()方法上也有事务,当a()方法执行过程中调用了b()方法,事务是如何传递的?● REQUIRES_NEW:开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起【不管有没有,直接开启一个新事务,开启的新事务和之前的事务不存在嵌套关系,之前事务被挂起】● NOT_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务【不支持事务,存在就挂起】在AccountServiceImpl中加入异常(模拟异常),运行。原创 2023-04-11 23:18:49 · 472 阅读 · 0 评论 -
【SSM】Spring6(十.面向切面编程AOP)
将与核心业务无关的代码独立的抽取出来,形成一个独立的组件,然后以横向交叉的方式应用到业务流程当中的过程被称为AOP。● 第二种方式:Spring框架结合AspectJ框架实现的AOP,基于XML方式。● 第一种方式:Spring框架结合AspectJ框架实现的AOP,基于注解方式。● 环绕通知:@Around 目标方法之前添加通知,同时目标方法执行之后添加通知。● 第三种方式:Spring框架自己实现的AOP,基于XML配置方式。● 后置通知:@AfterReturning 目标方法执行之后的通知。原创 2023-04-10 18:01:40 · 469 阅读 · 0 评论 -
【SSM】Spring6(九.代理模式)
调用的处理器:这是一个JDK动态代理规定的接口,接口全名:java.lang.reflect.InvocationHandler。这是一个回调接口,也就是说调用这个接口中方法的程序已经写好了,就差这个接口的实现类了。类加载器:在内存中生成了字节码,要想执行这个字节码,也是需要先把这个字节码加载到内存当中的。在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。接口类型:代理类和目标类实现相同的接口,所以要通过这个参数告诉JDK动态代理生成的类要实现哪些接口。原创 2023-04-09 20:29:12 · 319 阅读 · 0 评论 -
【SSM】Spring6(八.JdbcTemplate)
在jdbcTemplate中只要是update,delete,insert都是调用update方法。spring配置文件。原创 2023-04-07 21:09:47 · 103 阅读 · 0 评论 -
【SSM】Spring6(七.Spring IoC注解式开发)
假设在某个包下有很多Bean,有的Bean上标注了Component,有的标注了Controller,有的标注了Service,有的标注了Repository,现在由于某种特殊业务的需要,只允许其中所有的Controller参与Bean管理,其他的都不实例化。@Autowired注解有一个required属性,默认值是true,表示在注入的时候要求被注入的Bean必须是存在的,如果不存在则报错。@Controller、@Service、@Repository这三个注解都是@Component注解的别名。原创 2023-04-06 22:23:32 · 329 阅读 · 0 评论 -
【SSM】Spring6(六.Bean的循环依赖)
Bean都是单例的,我们可以先把所有的单例Bean实例化出来,放到一个集合当中(我们可以称之为缓存),所有的单例Bean全部实例化完成之后,以后我们再慢慢的调用setter方法给属性赋值。原因:主要原因是因为通过构造方法注入导致的:因为构造方法注入会导致实例化对象的过程和对象属性赋值的过程没有分离开,必须在一起完成导致的。(1)在spring容器加载的时候,实例化Bean,只要其中任意一个Bean实例化后,马上进行“曝光”通过构造方法注入产生了循环依赖,并且Spring是无法解决这种循环依赖的。原创 2023-04-06 15:39:53 · 422 阅读 · 0 评论 -
【SSM】Spring6(五.Bean的生命周期)
● 而对于 prototype 作用域的 Bean,Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器将不再跟踪其生命周期。● 当Bean实现了BeanClassLoaderAware,Spring会将加载该Bean的类加载器传递给Bean。这三个点位的特点是检查是否实现某些特定的接口,如果实现了接口,spring容器会调用这些特定接口中的方法。● 当Bean实现了BeanNameAware,Spring会将Bean的名字传递给Bean。原创 2023-04-05 22:07:08 · 467 阅读 · 0 评论 -
【SSM】Spring6(四.Bean的实例化方法)
Spring IoC容器的顶级对象,BeanFactory被翻译为“Bean工厂”,在Spring的IoC容器中,“Bean工厂”负责创建Bean对象。● 第二类:工厂Bean(记住:工厂Bean也是一种Bean,只不过这种Bean比较特殊,它可以辅助Spring实例化其它Bean对象。FactoryBean:它是一个Bean,是一个能够辅助Spring实例化其它Bean对象的一个Bean。需要在spring的配置文件中告诉spring,调用哪个类的哪个方法获取Bean。Spring配置文件。原创 2023-04-04 11:55:31 · 252 阅读 · 0 评论 -
【SSM】Spring6(三.工厂模式)
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。● 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。● 一个调用者想创建一个对象,只要知道其名称就可以了。● 屏蔽产品的具体实现,调用者只关心产品的接口。属于工厂方法模式一种特殊的。原创 2023-04-03 22:13:26 · 83 阅读 · 0 评论 -
【SSM】Spring6(二.Bean的生命周期)
● global session:portlet应用中专用的。如果在Servlet的WEB应用中使用global session的话,和session一个效果。或每次注入的时候都是新对象。● websocket:一个websocket生命周期对应一个Bean。仅限于在WEB应用中使用。● application:一个应用对应一个Bean。仅限于在WEB应用中使用。● request:一个请求对应一个Bean。仅限于在WEB应用中使用。● session:一个会话对应一个Bean。仅限于在WEB应用中使用。原创 2023-04-03 21:04:58 · 229 阅读 · 0 评论 -
【SSM】Spring6(一.IOC的实现)
依赖注入的两种方式:实现原理:3.2 方法二:通过参数名3.3 方法三:不指定下标和参数名,可以类型自动推断。3. 注入专题3.1 注入内部bean vs 注入外部bean3.2 注入简单类型User.javaspring.xmlspring中的简单类型:3.3 级联属性赋值3.4注入数组3.4.1 数组元素为简单类型3.4.2 数组元素非简单类型● 如果数组中是简单类型,使用value标签。● 如果数组中是非简单类型,使用ref标签。● 如果集合中是简单类型,使原创 2023-04-03 12:59:25 · 235 阅读 · 0 评论 -
【SSM】MyBatis(十二.缓存)
将select语句的查询结果放到缓存(内存)当中,下一次还是这条select语句的话,直接从缓存中取,不再查数据库。● 或者集成其它第三方的缓存:比如EhCache【Java语言开发的】、Memcache【C语言开发的】等。4. SqlSession对象关闭或提交之后,一级缓存中的数据才会被写入到二级缓存当中。● 二级缓存:将查询到的数据存储到SqlSessionFactory中。(1)方式一:第一次查询和第二次查询之间,手动清空了一级缓存。● 一级缓存:将查询到的数据存储到SqlSession中。原创 2023-04-01 10:43:29 · 150 阅读 · 0 评论 -
【SSM】MyBatis(十一.MyBatis的高级映射和延迟加载)
● 第二个优点:支持延迟加载。【暂时访问不到的数据可以先不查询。提高程序的执行效率。多对一:多的一方为主表,一的一方为副表。一对多:一的一方为主表,多的一方为副表。● 第一个优点:代码复用性增强。一般全局开启延迟加载。原创 2023-04-01 00:06:52 · 128 阅读 · 0 评论 -
【SSM】MyBatis(十.动态sql)
比如我们只更新提交的不为空的字段,如果提交的数据是空或者"",那么这个字段我们将不更新。主要使用在update语句当中,用来生成set关键字,同时去掉最后多余的“,”● 所有条件都为空时,where标签保证不会生成where子句。include标签用来将声明的sql片段包含到某个sql语句当中。where标签的作用:让where子句更加动态智能。● prefix:在trim标签中的语句前添加内容。● suffix:在trim标签中的语句后添加内容。● 自动去除某些条件前面多余的and或or。原创 2023-03-31 16:30:34 · 261 阅读 · 0 评论 -
【SSM】MyBatis(九.查询语句专题)
● 第三种方式:是否开启驼峰命名自动映射(配置settings)查询结果的列名和java对象的属性名对应不上怎么办?● 第二种方式:使用resultMap进行结果映射。● 第一种方式:as 给列起别名。原创 2023-03-30 21:47:37 · 297 阅读 · 0 评论 -
【SSM】MyBatis(八.参数处理)
【代码】【SSM】MyBatis(八.参数处理)原创 2023-03-29 21:56:25 · 65 阅读 · 0 评论 -
【SSM】MyBatis(七.使用小技巧)
{} 底层使用PreparedStatement,先进行sql语句编译,然后给sql语句的问号传值,没有注入风险。${} 底层使用Statement,先进行sql语句拼接,然后sql语句编译,存在注入风险。优先使用 #{},但是如果需要sql语句的的关键字放到sql语句当中,只能使用${}如果class较多,可以使用这种package的方式,但前提条件和上一种方式一样。● package:将包内的映射器接口实现全部注册为映射器。● class:使用映射器接口实现类的完全限定类名。当我们使用 #{}时。原创 2023-03-28 16:15:55 · 362 阅读 · 0 评论 -
【SSM】MyBatis(六.MyBatis接口代理)
MyBatis内置了代理模式。在内存中生成Dao接口的代理类,然后生成代理类的实例。MyBatis能使用这种代理功能的前提是XxxxxMapper.xml中的namespace使用全限定名称,id使用类名。后续我们只需要写接口即可,不用写实现类。原创 2023-03-27 21:43:06 · 210 阅读 · 0 评论 -
【SSM】MyBatis(五.MyBatis三大对象作用域)
SqlSessionFactory 推荐作用域范围是全局作用域,与应用的生命周期一样。SqlSessionFactoryBuilder用过就丢掉,推荐作用范围在方法体内。SqlSession 线程级别,推荐一个request请求期间。原创 2023-03-22 21:53:53 · 127 阅读 · 0 评论 -
【SSM】MyBatis(四.MyBatis在web中的应用)
utils包中新建SqlSessionUtil.java。(5)将之前的resources资源拷贝下来。(1)IDEA中创建Maven WEB应用。(2)将web.xml配置为更高的版本。(4)配置Tomcat服务器。pojo包中建Account。exception包。原创 2023-03-22 21:51:15 · 355 阅读 · 0 评论 -
【SSM】MyBatis(三.核⼼配置⽂件详解)
(4)我们自己也可以编写数据源组件,只要实现javax.sql.DataSource接口就行了。JDK中有这套规范:javax.sql.DataSource(这个数据源的规范,这套接口实际上是JDK规定的。(6)type属性用来指定数据源的类型,就是指定具体使用什么方式来获取Connection对象:(type属性有三个值:必须是三选一。比如你可以写一个属于自己的数据库连接池(数据库连接池是提供连接对象的,所以数据库连接池就是一个数据源)。(5)常见的数据源组件(数据库连接池):druid。原创 2023-03-19 17:48:20 · 399 阅读 · 0 评论 -
【SSM】MyBatis(二.使用MyBatis完成CRUD)
在SQL Mapper配置⽂件中标签的namespace属性可以翻译为命名空间,这个命名空间主要是为了防⽌sqlId冲突的。使用POJO对象传递值的话,#{}这个大括号中写的是get方法的方法名去掉get,然后将剩下的单词首字母小写,然后放进去。原创 2023-03-18 22:42:24 · 345 阅读 · 0 评论 -
【SSM】MyBatis(一.基础)
(7)在mybatis-config.xml文件中指定XxxxMapper.xml文件的路径。放到这个包下面的一般是配置文件,资源,直接放到这里等同于放到类的根目录之下。(5)编写mybatis核心配置文件:mybatis-config.xml。(1)创建一个名为mybatis的空Project。(3)修改指向自己下载的maven3.8.8。(6)编写XxxxMapper.xml文件。Object(JVM中的Java对象)(8)编写MyBatis程序。(9)mybatis的事务管理。Mapping(映射)原创 2023-03-17 23:01:01 · 505 阅读 · 0 评论