ssm
spirng与springMVC与mybatis等主流框架
李广进
死磕自己
展开
-
说一下Mysql 的执行流程?
其实就是说架构图,总的来说是 客户端->server层->存储引擎->取数据。server层中是连接器->分析器->优化器->执行器->存储引擎 而 连接器后先进行查询缓存。...原创 2020-06-07 22:59:31 · 141 阅读 · 0 评论 -
mybatis中的当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。第 2 种: 通过来映射字段名和实体类属性名的一一对应的关系。...原创 2020-05-01 23:57:39 · 362 阅读 · 0 评论 -
Mybaits 的优点与缺点?
优点:1基于SQL语句编程,灵活。2与JDBC相比,消除了 JDBC 大量冗余的代码,有统计说是50%,不需要手动开关连接。3很好的与各种数据库兼容(MyBatis 用 JDBC 连接数据库,所以只要 JDBC 支持的数据库 MyBatis都支持)4能够与 Spring 很好的集成;缺点:(1)SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有...原创 2020-04-30 00:06:21 · 344 阅读 · 0 评论 -
MyBatis 与 与 Hibernate 有哪些不同?
Hibernate 是完全的 ORM 框架,Mybattis 是半 ORM 框架。Hibernate 对于业务简单的项目开发效率比较高,因为他对于单表的操作开发更高效。Mybatis 对于业务复杂的项目要更优先使用,因为他的 sql 编写更灵活。Hibernate 学习成本要比 Mybatis 高,Mybatis 使用更为简单。...原创 2020-04-30 00:05:50 · 100 阅读 · 0 评论 -
mybaits 动态sql?
sql语句拼接,使得一个方法适应多种操作Where标签:代替sql中的where关键字,自动忽略where标签中的第一个and或者是or条件连接符If标签:可以对参数进行判断,灵活拼接sql语句(if中还可以使用当前数据类型的方法)Set标签:它代替sql语句中的set关键字,而且会忽略最后成立条件的分隔符逗号Foreach标签(循环—批量操作): 可以遍历传递的参数为集合类型的方法,批量...原创 2020-04-30 00:05:08 · 82 阅读 · 0 评论 -
MyBatis中的$和#区别?
#{}: 占位符 PreparedStatement sql较为简洁,避免sql注入风险:字符串拼接Statement,拼接字符串sql语句较为繁琐,sql注入风险。注意:1、如果参数为简单类型时,{}: 字符串拼接 Statement,拼接字符串sql语句较为繁琐,sql注入风险。注意:1、如果参数为简单类型时,:字符串拼接Statement,拼接字符串sql语句较为繁琐,sql注入风险。...原创 2020-04-30 00:04:24 · 91 阅读 · 0 评论 -
MyBatis中的Mapper动态代理遵循的规则?
①.接口方法名与映射文件中Mapper.xml中id名一致。②.返回值类型与Mapper.xml文件中返回值类型一致③.方法的入参类型与Mapper.xml中的入参的类型一致④.命名空间 绑定此接口...原创 2020-04-30 00:03:42 · 357 阅读 · 0 评论 -
MyBatis执行流程运行原理?
1、通过流加载 配置文件2、通过创建SqlSessionFactoryBuilder工厂调用build()方法获取流返回的是一个SqlSessionFactory接口对象3、调用sqlSessionFactory的openSession();方法,返回的是一个SqlSession接口对象4、调用sqlSession的getMapper方法,通过反射获取对象,返回的是一个具体的接口对象5、调...原创 2020-04-30 00:03:06 · 163 阅读 · 0 评论 -
SqlSession级别是什么意思?mapper范围级别又是什么意思?
SqlSession级别是什么意思?在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则SqlSession的缓存清空。mapper范围级别又是什么意思?在同一个namespace下的mapper文件中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执...原创 2020-04-30 00:02:10 · 2113 阅读 · 0 评论 -
MyBatis缓存机制是什么?
mybatis 一级缓存是 SqlSession 级别的缓存,默认支持一级缓存,不需要在配置文件去配置。mybaits 的二级缓存是 mapper 范围级别,除了在 SqlMapConfig.xml 设置二级缓存的总开关<settingname=‘cacheEnabled’ value=‘true’/>还要在具体的 mapper.xml 中开启二级缓存:<mappername...原创 2020-04-30 00:01:24 · 254 阅读 · 0 评论 -
SpringMVC 与 与 Struts2 的区别?
springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。springmvc 是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2 是基于类开发,传递参数是通过类的属性,只能设计为多例。Struts 采用值栈存储请求和响应的数据,通过 OGNL 存取数据。 springmvc 通过参数解析器是将 r...原创 2020-04-30 00:00:44 · 94 阅读 · 0 评论 -
SpringMVC有那些组件?
前端控制器DispatcherServlet处理器映射器HandlerMapping处理器适配器HandlerAdapter处理器Handler(需要工程师开发)视图解析器View resolver视图View原创 2020-04-29 23:59:59 · 308 阅读 · 0 评论 -
SpringMVC 的实现原理?
用户发送请求至前端控制器-调用处理器映射器-生成处理器对象-返回前端控制器-处理适配器-调用具体的处理器Controller返回一个ModelAndView给前端控制器-调用视图解析器-视图渲染-响应用户.1、用户发送请求至前端控制器 DispatcherServlet。2、 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。3、处理器映射器找到具...原创 2020-04-29 23:59:03 · 346 阅读 · 0 评论 -
说一下你对MVC的理解?
MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC中的模型、视图、控制器它们分别担负着不同的任务。Model:处理业务逻辑的模块。如service dao entityView:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。 如 jspController:负...原创 2020-04-29 23:58:28 · 1947 阅读 · 0 评论 -
Spring 中体现的设计模式?
工厂设计模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。代理设计模式 : Spring AOP 功能的实现。单例设计模式 : Spring 中的 Bean 默认都是单例的。模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类...原创 2020-04-29 23:57:49 · 137 阅读 · 0 评论 -
spring中不同的隔离级别有不同的数据一致性问题?
脏读 :表示一个事务能够读取另一个事务中还未提交的数据。比如,某个事务尝试插入记录 A,此时该事务还未提交,然后另一个事务尝试读取到了还未提交的数据A。不可重复读 :是指在一个事务内,多次读同一数据。幻读 :指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,产生了幻觉。发生幻读的原因也是另外一个事务新增或者...原创 2020-04-29 23:57:25 · 306 阅读 · 0 评论 -
spirng中七个事务传播行为是什么?
① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务就加入该事务,该设置是最常用的设置。② PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。③ PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。④ P...原创 2020-04-29 23:56:46 · 122 阅读 · 0 评论 -
spring五个事务隔离级别是什么?
这些常量均是以 ISOLATION_开头。即形如 ISOLATION_XXX。DEFAULT:采用 DB 默认的事务隔离级别。MySql 的默认为 REPEATABLE_READ(可重复读);Oracle默认为 READ_COMMITTED。(读已提交)READ_UNCOMMITTED:读未提交。未解决任何并发问题。READ_COMMITTED:读已提交。解决脏读,存在不可重复读与幻读。...原创 2020-04-29 23:56:06 · 957 阅读 · 0 评论 -
Spring如何管理事务(四种方式)?
(1)编程式事务管理对基于 POJO 的应用来说是唯一选择。我们需要在代码中调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。(2)基于 TransactionProxyFactoryBean的声明式事务管理(3)基于 @Transactional 的声明式事务管理(4)基于Aspectj AOP配置事务...原创 2020-04-29 23:55:28 · 980 阅读 · 0 评论 -
Spring的事务管理ACID特性?
原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability)。atomic( 原子性 ): 要么都发生,要么都不发生。consistent( 一致性 ): 数据应该不被破坏。修改前与修改后都可以看到,修改中间不可以看到Isolate( 隔离性 ): 用户间操作不相混淆Durable( 持久性 ): 永久保存 , 例如保存到数据...原创 2020-04-29 23:55:05 · 93 阅读 · 0 评论 -
你用AOP做过/实现过什么功能?
在项目中用过事务管理。在spring-config.xml文件原创 2020-04-29 23:54:17 · 873 阅读 · 0 评论 -
AOP实现方式?
1、静态AOP:在编译期,切面直接以字节 码的形式编译到目标字节 码文件中。2、动态AOP(JDK动态代理):在运行期,目标类加载后,为接口动态生成代理类,将切面植入到代理类中。3、动态代码字节生成(cglib):在运行期,目标类加载后,动态构建字节码文件生成目标类的子类,将切面逻辑加入到子类中。4、自定义类加载器:在运行前,目标加载前,将切面逻辑加到目标字节码中。...原创 2020-04-29 23:53:05 · 170 阅读 · 0 评论 -
AOP中Spring通知有哪些类型?
Spring切面可以应用5种类型的通知:前置通知(Before):在目标方法被调用之前调用通知功能;后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么;返回通知(After-returning ):在目标方法成功执行之后调用通知;异常通知(After-throwing):在目标方法抛出异常后调用通知;环绕通知(Around):通知包裹了被通知的方法,在被通...原创 2020-04-29 23:52:31 · 759 阅读 · 0 评论 -
AOP两种代理方式以及区别?
Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK 动态代理只能对实现了接口的类生成代理,而不能针对类.JDK 动态代理主要涉及到 java.lang.reflect 包中的两个类:Proxy 和 InvocationHandler。InvocationHandler 是一个接口,通过实现该接口定义横切逻辑,并通过反射机制调用目标类 的代码,动态将横切...原创 2020-04-29 23:51:53 · 2630 阅读 · 0 评论 -
Spirng中的常用注解的区别?
@Component 一般的pojo@Repository 数据访问层Bean->只能标注在 DAO 类@Service 对应的是业务层Bean@Controlle 控制层Bean@Value@Autowired 可以实现spring的自动装配@Resource 和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的;@RequestMapping有那几种类...原创 2020-04-28 00:14:40 · 99 阅读 · 0 评论 -
Spring IOC 的过程原理?
1、读取Bean配置信息。(通过xml或者注解(全部的注解都可以)的方式)2、根据Bean注册表实例化Bean3、将Bean实例放到Spring容器中4、使用Bean原创 2020-04-28 00:13:35 · 71 阅读 · 0 评论 -
Spring中bean的五种自动装配方式?
Spring 装配包括手动装配和自动装配,手动装配是有基于 xml 装配、构造方法、setter 方法等自动装配有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。五种:no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设 置成...原创 2020-04-28 00:11:05 · 1083 阅读 · 0 评论 -
依赖注入四种方式?
a、接口注入;(其中接口注入由于在灵活性和易用性比较差,现在从Spring4开始已被废弃。)b、setter方法注入;c、构造方法注入;d、注解方法注入原创 2020-04-28 00:10:11 · 339 阅读 · 0 评论 -
说说Spring中的IOC和DI的关系?
IOC“控制反转” 不是什么技术,而是一种设计思想。DI是“依赖注入”是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。DI其实就是IOC的另外一种说法,DI是由Martin Fowler 在2004年初的一篇论文中首次提出的。他总结道:控制的什么被反转了?就是获得依赖对象的方式反转了。谁依赖于谁:当然是应用程序依赖于IOC容器;为什么需要依赖:应...原创 2020-04-28 00:09:01 · 656 阅读 · 0 评论 -
Spring中的IOC是指什么?
IOC (Inversion of Control)即控制反转(把对象的控制权从程序代码本身转移外部的容器中),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。为什么有IOC? 为了解决对象之间的耦合度过高的问题。谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IOC是有专门一个容器来...原创 2020-04-28 00:08:00 · 664 阅读 · 0 评论 -
Spring框架中的单例bean是线程安全的吗?它是如何处理线程并发问题的?
不是,Spring框架中的单例bean不是线程安全的。spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。实际上大部分 spring bean 是无状态的(比如 dao 类),在某种程度上来说 bean 也是安全的,但如果 bean 有状态的话(比如 view model )就要开发者自己去保证线程安全了,最简单的就是改变 bean 的作...原创 2020-04-28 00:06:56 · 5002 阅读 · 0 评论 -
bean的作用范围?
通过scope属性,可以设置bean的作用域,Spring支持5种作用域。singleton单态模式 在整个容器内,使用singletion定义的Bean是单例的,默认是单态的。prototype 原态模式 每次使用getBean方法获取的同一个实例都是一个新的实例。request 对于每一次http请求,都会产生一个不同的Bean实例。仅用于HTTP Request。session ...原创 2020-04-28 00:04:28 · 442 阅读 · 0 评论 -
Sping是如何加载Bean配置文件(3种)?
1.FileSystemXmlApplicationContext 默认从项目工作路径开始查找,是路径。2.ClassPathXmlApplicationContext 默认为项目的classpath下的路径ApplicationContext applicationContext1 = new FileSystemXmlApplicationContext(“src/main/java...原创 2020-04-28 00:03:54 · 220 阅读 · 0 评论 -
Spring中的容器是什么?
容器是Spring的核心,用来存放、初始化、管理Bean对象的(通过IOC管理)、相当于生产Bean的工厂。在xml中进行配置。原创 2020-04-28 00:02:09 · 678 阅读 · 0 评论 -
谈谈你对 Spring 的理解?
1.狭义上 spirng 就是指 Spring Framework,特别是其中的核心思想控制反转和依赖注入、事务处理等特性,在进行大型项目开发的时候能够帮助我们更好的管理对象。2.广义上 spring 就是指 spring 家族的一些列产品:如 SpringMvc,SpringBoot,SpringJPA,SpringCloud 等等。Spring 是项目开发中最重要的框架,可以帮助我们更好...原创 2020-04-27 11:03:54 · 314 阅读 · 0 评论