SSM框架的介绍
文章平均质量分 54
学习一些SSM框架技术,为下一步写程序做一个基础的铺垫
嚣张的程序猿
这个作者很懒,什么都没留下…
展开
-
Spring事务回顾
声明式事务回顾事务把一组业务当成一个业务来做;要么都成功,要么都失败!事务在项目开发中,十分的重要涉及到数据的一致性问题,不能马虎!确保完整性和一致性;事务ACID原则:1.原子性2.一致性3.隔离性多个业务可能操作同一个资源,防止数据破坏4.持久性事务一旦提交,无论系统发生什么问题,结果都不会被影响,被持久化的写到存储器中!...原创 2021-04-15 19:24:27 · 83 阅读 · 0 评论 -
SpringMVC 回顾MVC架构
MVC架构MVC:模型 (dao,service) 视图(jsp) 控制器(Servlet)原创 2021-04-13 19:49:22 · 80 阅读 · 0 评论 -
SSM框架整合
SSM框架整合这个项目呢是对咋们以前学习的一个大整合里面呢如果有什么比较重要的东西呢我也会列出来给大家讲解,第一部呢就是保证你环境变量和tomcat,maven,jdk一个版本的兼容问题这些工作准备好以后呢就可以开始写咋们这次的项目了,也就相当于是一个大练习吧。这里把项目结构给大家拿过来准备工作完成后大家去创建一个干净的maven项目然后导入依赖 <!--导入依赖 junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spr原创 2021-04-13 08:11:35 · 723 阅读 · 0 评论 -
回顾Mybatis的整合
整合Mybatis导入相关的jar包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://ma原创 2021-04-10 18:06:32 · 79 阅读 · 0 评论 -
Spring AOP
使用Spring实现AOP项目结构使用AOP,需要导入一个依赖包! <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency>在原创 2021-04-08 18:31:28 · 70 阅读 · 0 评论 -
Spring5 动态代理
动态代理动态代理和静态代理的角色一样动态代理的代理类是动态生成的,不是我们直接写好的!动态代理分为两大类:基于接口的动态代理,基于类的动态代理基于接口----JDK动态代理基于类:cglibjava字节码实现:javasist...原创 2021-04-06 09:56:01 · 75 阅读 · 0 评论 -
Spring5 静态代理模式
代理模式为什么到学习代理模式?因为这就是SpringAOP的底层!【SpringAOP和SpringMVC】代理模式的分类:1.静态代理2.动态代理静态代理角色分析:抽象角色:一般会使用接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作客户:访问代理对象的人!代码步骤接口package com.cloud.demo;//租房public interface Rent { void rent原创 2021-04-02 16:24:18 · 65 阅读 · 0 评论 -
Spring5 使用JavaConfig实现配置
使用JavaConfig实现配置项目结构CloudConfig配置类package com.cloud.config;import com.cloud.pojo.User;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotatio原创 2021-03-31 20:20:48 · 123 阅读 · 0 评论 -
Spring5 使用注解开发
使用注解开发在Spring4之后,要使用注解开发,必须要保证aop的包导入了使用注解需要导入context约束,增加注解的支持!<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:conte原创 2021-03-30 21:15:09 · 151 阅读 · 1 评论 -
Spring5 注解实现自动装配
注解实现自动装配支持:jdk1.5版本后支持注解开发,Spring2.5就支持注解了!要使用需要知道以下几点1.导入约束:context约束2.配置注解的支持:context:annotation-config/<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.o原创 2021-03-30 11:04:44 · 97 阅读 · 0 评论 -
Spring bean的作用域以及Bean的自动装配
bean的作用域单例模式(Spring默认机制)<bean id="user2" class="com.cloud.pojo.User" c:name="王狗蛋" c:age="65" scope="singleton"/>原型模式:每次从容器中get的时候,都会产生一个新对象!<bean id="user2" class="com.cloud.pojo.User" c:name="王狗蛋" c:age="65" scope="prototype"/>其余的原创 2021-03-30 08:41:07 · 84 阅读 · 0 评论 -
Spring5 依赖注入环境
依赖注入构造器注入set方式注入拓展方式注入原创 2021-03-29 18:56:16 · 62 阅读 · 0 评论 -
Spring5 IOC创建对象方式以及Spring配置说明
IOC创建对象方式1,使用无参构造创建对象,就默认 <bean id="user" class="com.cloud.pojo.User"> <property name="name" value="陈狗蛋"/> </bean>2,假设我们要使用有参构造创建对象一共有3中方法下标赋值<!--下标赋值--> <bean id="user" class="com.cloud.pojo.User">原创 2021-03-28 16:49:15 · 98 阅读 · 0 评论 -
Spring 第一个程序HelloSpring
HelloSpring第一步呢去创建一个项目(项目结构)第二步呢去创建一个实体类package com.cloud.pojo;public class Hello { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override原创 2021-03-27 10:41:34 · 89 阅读 · 0 评论 -
Spring5 前言
前言:经过上一个阶段的学习呢Mybatis的学习就结束了接下来呢也就进入了Spring5的学习了在学习Spring5之前呢给大家讲一下它的由来原创 2021-03-24 15:36:18 · 59 阅读 · 0 评论 -
Mybatis 二级缓存的学习
二级缓存二级缓存也叫全局缓存,一级缓存作用域太低了,所以就诞生了二级缓存基于namespace级别的缓存,一个名称空间,对应一个二级缓存;工作机制一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中;如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中;新的会话查询信息,就可以从二级缓存中获取内容;不同的mapper查出的数据会放在自己对应的缓存(map)中:步骤:...原创 2021-03-26 16:30:03 · 48 阅读 · 0 评论 -
Mybatis 缓存原理
Mybatis缓存原理其实这个缓存原理呢我个人认为就是缓存查找顺序,我们先来讲一讲缓存,我们第一次去跑这个程序呢它会先去数据库去拿数据同时呢也会将数据保存在一级缓存的作用域中如果你开启了二级缓存之后当一级缓存作用域关闭之后呢数据就会被保存在二级缓存中,当你再次查询这个数据的时候它会先去看一下二级缓存中是否有这个数据没有呢就去一级缓存中看看如果还是没有那就会在一次去数据库中查找。...原创 2021-03-28 17:24:05 · 58 阅读 · 0 评论 -
Mybatis 缓存简介
22.缓存简介查询:连接数据库,是很浪费资源的!所以我们就想把第一次查询的结果,给他暂时存在一个可以直接取到的地方也就是内存,也就是我们说的缓存我们再次去查询相同的数据的时候呢就不在去走数据库了而是直接去走缓存什么是缓存【Cache】存在于内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效原创 2021-03-25 09:18:34 · 101 阅读 · 0 评论 -
Mybatis 动态SQL之Foreach
25.SQL片段有的时候,我们可能会将一些功能的部分抽取出来,方便复用!使用SQL标签抽取公共部分<sql id="getSql"> <if test="title != null"> title=#{title} </if> <if test="author !=null" > and author =#{author} </if&原创 2021-03-23 09:41:08 · 109 阅读 · 2 评论 -
Mybatis 动态SQL常用标签
IF:其实在上一篇文章中已经有IF了这里把它拿过来是为了更好的衔接 <select id="addBlog2" parameterType="map" resultType="Blog"> select * from mybatis.blog where 1=1 <if test="title != null"> and title=#{title} </if> <if t原创 2021-03-23 07:59:50 · 81 阅读 · 1 评论 -
Mybatis 动态SQL环境搭建
21.动态SQL什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句利用动态SQL这一特性使你的学习更加方便动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。ifchoose (when, otherwise)trim (where, set)foreach搭建环境create t原创 2021-03-22 09:37:03 · 114 阅读 · 0 评论 -
Mybatis 一对多和多对一数据的处理
20.多对一的处理1.按照查询嵌套处理<!--思路: 1.查询所有学生信息 2.根据查询出来的学生的tid,寻找对应的老师! --> <select id="getStudent" resultMap="StudentTeacher"> select * from mybatis.student </select> <resultMap id="StudentTea原创 2021-03-20 21:34:13 · 132 阅读 · 1 评论 -
Mybatis 复杂查询环境搭建
19.多对一处理多对一和一对多:对于学生这边而言,相当于一个关联,多个学生关联一个老师(多对一)对于老师而言,相当于一个集合,一个老师教很多学生(一对多)SQL:大家去建两个表一个老师表,一个学生表测试环境搭建导入lombok<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifa原创 2021-03-18 19:40:43 · 58 阅读 · 0 评论 -
Mybatis Lombok讲解
18.LombokProject Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your loggin原创 2021-03-18 08:51:03 · 212 阅读 · 0 评论 -
Mybatis 注解增删改查
17.注解实现CRUD我们可以在工具类MybatisUtils创建的时候实现自动提交事务! public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(true); }编写接口添加注解 //方法存在多个参数,所有参数前面必须加上@Param("id")注解 //获取你参数呢是获取你@Param("")中的参数,大家一定要注意这个小细节 //查询用户原创 2021-03-17 19:49:12 · 100 阅读 · 0 评论 -
Mybatis执行流程解析
16.Mybatis执行流程解析第一步:Resources获取加载全局配置文件第二步:实例化SqlSessionFactoryBuilder构造器第三步:解析配置文件流XML ConfigBuilder第四步:Configuration所有的配置信息第五步:SqlSessionFactory实例化第六步:transactional事务管理第七步:创建executor执行器第八步:创建sqlSession最后实现CRUD如果出错就返回transactional事务管理,没有执行成功也返回t原创 2021-03-17 17:09:32 · 81 阅读 · 0 评论 -
Mybatis 使用注解开发讲解
15.使用注解开发1.面向接口编程大家之前都学过面向对象编程,也学过接口,但在真正的开发中,很多时候我们会选择面向接口编程根本原因:解耦,可拓展,提高复用,分层开发,上层不用管具体的实现,大家都使用的共同标准,使得开发变得容易,规范性更好在一个面向对象的系统中,系统的各种功能是有许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到模块之间的交互,在系统设计原创 2021-03-17 16:22:56 · 84 阅读 · 0 评论 -
Mybatis RowBounds分页讲解
14.RowBounds分页讲解(了解即可)不在使用SQL实现分页接口 //分页 List<User> getUserRowBounds();User Mapper.xml<!--RowBounds查询数据--> <select id="getUserRowBounds" resultMap="UserMap"> select * from mybatis.user; </select>测原创 2021-03-16 21:28:36 · 177 阅读 · 0 评论 -
Mybatis Limit分页的学习
13.Limit分页大家思考一下为什么要分页?减少大家对数据的处理量,可以有效的去选择想要处理的数据使用Limit分页语法: SELECT * from user limit startIndex,pageSize;SELECT * from user limit 3;#[0,n]使用Mybatis实现分页,核心SQL接口 //分页查询 List<User> getUserByLimit(Map<String,Object> map);Use原创 2021-03-16 10:06:13 · 119 阅读 · 0 评论 -
Mybatis 日志工厂的讲解
11.日志工厂如果一个数据库操作,出现了异常,我们需要排错。日志呢就是我们的好帮手!曾经:sout,debug现在:日志工厂!SLF4JLOG4JLOG4J2JDK_LOGGINGCOMMONS_LOGGINGSTDOUT_LOGGING(掌握)NO_LOGGING在Mybatis中具体使用那个一日志实现,在设置中设定!STDOUT_LOGGING标准日志输出在mybatis核心配置文件中,配置我们的日志!<!--配置日志--> <settings原创 2021-03-15 18:58:33 · 103 阅读 · 0 评论 -
Mybatis的ResultMap结果集映射
9.解决属性名和字段名不一致的问题数据库中的字段新建一个项目,大家可以参考我写的第一个Mybatis程序去新建一个项目,我这边呢就考贝我自己写好的项目了,测试实体类字段不一致的情况。package com.cloud.pojo;//实体类public class User { private int id; private String name; private String password; }测试出问题 //select * from myb原创 2021-03-15 08:56:08 · 86 阅读 · 1 评论 -
Mybatis之生命周期和作用域
8.作用域和生命周期生命周期,和作用域,是至关重要,因为错误的使用会导致非常严重的并发问题。SqlSessionFactoryBuilder:一旦创建SqlSessionFactory,就不在需要它了局部变量SqlSessionFactory:说白了就是可以想象为:数据库连接池SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有然后理由去丢弃它或重新创建另一个实例。因此SqlSessionFactory的最佳作用域是应用作用域。最简单的就是使用单例模式或原创 2021-03-13 22:29:44 · 104 阅读 · 0 评论 -
Mybatis配置之映射器说明
6.其他配置(了解即可 大概率以后不会使用到它)typeHandlers(类型处理器)objectFactory(对象工厂)plugins插件(一些插件呢是为了更加简化代码)mybatis-generator-core(根据数据库自动生成mybatis文件搞定增删改查)mybatis-plus(使得Mbatis文件更加的简洁)通用mapper7.映射器(mappers)MapperRegistry: 注册绑定我们的Mapper文件;方式一:推荐使用这个<mappers&原创 2021-03-13 20:12:21 · 61 阅读 · 0 评论 -
Mybatis配置别名优化
4.类型别名(typeAliases)类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。原创 2021-03-13 11:34:40 · 61 阅读 · 0 评论 -
Mybatis配置解析
1.核心配置文件mybatis-config.xmlMybatis 的配置文件包含了会深深影响 Mybatis 行为的设置和属性消息。configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataS原创 2021-03-13 10:22:55 · 78 阅读 · 0 评论 -
模糊查询
模糊查询思考:模糊查询该怎么写?在接口中写一个方法 //模糊查询 List<User> getUserLike(String value); //Map查询用户接口 <!--模糊查询--> <select id="getUserLike" resultType="com.cloud.pojo.User"> select * from mybatis.user where name like #{valu原创 2021-03-12 22:19:16 · 167 阅读 · 0 评论 -
第一个Mybatis程序
Mybatis环境:JDK1.8Mysql 5.7maven 3.6.1IDEA回顾:JDBCMysqlJava基础MavenJunitSSM框架:配置文件。最好的方式:看官网文档;简介什么是MyBatis!MyBatis是一款优秀的持久层框架它支持定制化SQL,储存过程以及高级映射MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解来配置和映射原生类型,接口和Java的POJO(Plain Old Ja原创 2021-03-10 17:16:35 · 142 阅读 · 0 评论