MyBatis

java程序员福利:呈上227道Spring+SpringMVC+MyBatis面试题

╄→尐↘猪︶ㄣ 提交于 2020-08-16 03:53:47
前言 昨天给大家分享的Springcloud的面试题,今天的话就给大家来一波基础面试题吧,也就是SSM的面试题,希望大家能够喜欢! Spring55道 一般问题 1.1.不同版本的Spring Framework有哪些主要功能? 1.2、什么是Spring Framework? 1.3、列举Spring Framework的优点。 1.4、Spring Framework有哪些不同的功能? 1.5、Spring Framework中有多少个模块,它们分别是什么? 1.6、什么是Spring 配置文件? 1.7. Spring 应用程序有哪些不同组件? 1.8、使用Spring有哪些方式? 2.依赖注入(loc) 2.1、什么是Spring I0C容器? 2.2、什么是依赖注入? 2.3、可以通过多少种方式完成依赖注入? 2.4、区分构造函数注入和setter 注入。 2.5、spring 中有多少种I0C容器? 2.6、区分BeanFactory和ApplicationContext. 2.7、列举loC的一些好处。 2.8、Spring loC的实现机制。 3、Beans- 3.1、什么是spring bean? 3.2、spring 提供了哪些配置方式? 3.3、spring 支持集中bean scope ? 3.4、spring bean容器的生命周期是什么样的? 3.5

一个java文件是怎么一步一步执行的

浪子不回头ぞ 提交于 2020-08-16 03:46:45
说点什么呢,java比你想的要难 写了多年java,发现好多人并不知道一个class文件怎么被解析执行的,所以我也发表下看法 1. 编写java源文件 ​ 2. 把java源文件编译成 .class字节码文件 ,JVM不认识源文件 ​ 3. JVM处理class文件 搞java开发,不得不提的就是JVM了, JVM全称是 Java Virtual Machine(简称JVM,中文叫Java虚拟机,请务必记住JVM,看到不少人整天JVM的,都不知道它的全称是什么),java的宿主环境,可以认为JVM就是虚拟仿真出来的一台计算机。简单绘了一张图,如下(一图胜千言): ​ java之所以一次编写,到处运行,就是因为虚拟机(虚拟虚拟,虚拟出来的计算机,一台被托管的电脑)的缘故。 3.1 jvm处理class文件 加载是指将java源文件编译之后的class文件读入到内存中,然后在堆区创建一个java.lang.Class对象,用于封装类在方法区内的数据结构。类加载的最终目的是封装类在方法区的数据结构,并向java程序员提供访问方法区数据的接口。 类的生命周期一共分为5个阶段,加载、连接、初始化、使用、卸载。 ​ 加载 :类的加载过程主要完成3件事件,1.通过类的全限定名来获取定义此类的二进制字节流,2.将这个类字节流代表的静态存储结构转为方法区的运行时数据结构,3

MyBatis入门教程(基于Mybatis3.2)

大兔子大兔子 提交于 2020-08-16 03:39:49
MyBatis和Hibernate一样都是基于ORM的关系型数据库框架 ORM工具的基本思想: 1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session。 5.在java对象和数据库之间有做mapping的配置文件,也通常是xml文件。 MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。 本文就一个demo的形式,讲诉MyBatis的数据库操作过程,新建一个web项目,项目结构如图: 我们需要准备mybatis3.2.jar和mysql的jar,日志输出的jar根据自己项目的需要 新建数据库,数据表是users,设置id为主键,同时自动增长 新建一个资源文件config 编写数据库配置信息文件db.properties: driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\:3306/db_mysql?useUnicode\=true&characterEncoding\=utf-8 username=root

JAVA后端 开发 复习笔录

馋奶兔 提交于 2020-08-15 18:43:13
这份博客,更多的是作为一个复习笔录的总结分享,会有些许 不足希望各位大佬指点一二 这次复习 分为四大章 分别是JAVA基础部分内容 WEB网页设计 进阶部分 拓展 java基础部分 java环境的搭建 基础语法 循环结构 数组,函数 面向对象开发 23种设计模式详解 接口 内部类 idea环境搭建 字符串 可变字符串 集合 字节流 线程 网络编程 WEB网页设计 html静态网页设计 css层叠样式表 JavaScript 进阶部分 Jquery xml配置文件 linux虚拟机 Mysql数据库 Oracle 数据库 数据库底层 jdbc开发 Tomcat,http协议, 前后端联合开发 JSP开发 AJax,json git,Maven Mybatis框架 Spring,SpringMVC,SpringBoot 三大主流框架 全文检索 搜索引擎技术 协调服务 分布式微服务 拓展部分 框架整合开发 算法解析 来源: oschina 链接: https://my.oschina.net/u/4324616/blog/4496997

mybatis整合 遇见的问题

南笙酒味 提交于 2020-08-15 16:50:57
当sql连接不上的时候,先检查是否是sql连接缺少时区问题,当连接少了?serverTimezone=UTC 会各种错误。 比如遇见到的 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1c4542cb] was not registered for synchronization because synchronization is not active Mapper method has an unsupported return type: class com.lee.entity.Employee 如果sql语句执行成功,那么只是返回类型出了问题。 出现这样的问题是因为 类型不匹配。 解决方法: insert、delete、update操作默认返回一个int类型的整数,将增删改的接口改成int或者void即可。 select操作返回的类型可以是自定义的Map或者是List(目前遇到的),这里等我总结了resultType相关知识再回来补充! 如果有帮助点个赞,一起学习吧! 来源: oschina 链接: https://my.oschina.net/u/4375750/blog/4326491

[5+1]开闭原则(二)

落花浮王杯 提交于 2020-08-15 16:44:40
[5+1]开闭原则(二) 前言 面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。 ↑ 五个,再加一个,就是5+1个。哈哈哈。 这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使你能说出来某段代码违反了某项原则,常常也很难明确指出错在哪儿、要怎么改。 所以,这里来讨论讨论这六条设计原则的“为什么”和“怎么做”。顺带,作为面向对象设计思想的一环,这里也想聊聊它们与抽象、高内聚低耦合、封装继承多态之间的关系。 [5+1]开闭原则(一) 看上一篇,请这边走。 开闭原则与面向对象 虽然我一直在从项目管理的角度来理解和讨论面向对象思想,但是二者还是存在不少区别的。例如,二者的项目成本就有很大的不同。 绝大多数项目的成本都有这样一个特点:新建成本比维护成本更高。例如,盖房子的成本高,物业管理的成本低;买房子的成本高,装修的成本低;造车、买车的成本高,维护保养的成本低;等等等等。这里的“维护”也包括了新增或修改,例如,研发一种新飞机的成本显然要远远高于在现有机型上增增改改,不然的话,歼七姬怎么会被改得连亲妈都不认识了呢=。= 但是

MyBatis源码安装

◇◆丶佛笑我妖孽 提交于 2020-08-15 15:45:37
传统 JDBC 的弊端 1、jdbc 底层没有用连接池、操作数据库需要频繁的创建和关联链接。消耗很大的资源 2、写原生的 jdbc 代码在 java 中,一旦我们要修改 sql 的话,java 需要整体编译,不利于系统维护 3、使用 PreparedStatement 预编译的话对变量进行设置 123 数字,这样的序号不利于维护 4、返回 result 结果集也需要硬编码。 mybatis 核心概念 Configuration 、 SqlSessionFactory 、 Session 、 Executor 、 MappedStatement 、StatementHandler、ResultSetHandler 名称 意义 Configuration 管理 mysql-config.xml 全局配置关系类 SqlSessionFactory Session 管理工厂接口 Session SqlSession 是一个面向用户(程序员)的接口。SqlSession 中提供了很多操作数据库的方法 Executor 执行器是一个接口(基本执行器、缓存执行器) 作用:SqlSession 内部通过执行器操作数据库 MappedStatement 底层封装对象 作用:对操作数据库存储封装,包括 sql 语句、输入输出参数 StatementHandler 具体操作数据库相关的 handler

mybatis 缓存的使用, 看这篇就够了

妖精的绣舞 提交于 2020-08-15 14:43:40
@ 目录 1 一级缓存 1.1 同一个 SqlSession 1.2 不同的 SqlSession 1.3 刷新缓存 1.4 总结 2 二级缓存 2.1 配置二级缓存 2.1.1 全局开关 2.1.2 分开关 2.1.3 entity 实现序列化接口 2.2 使用二级缓存 2.3 配置详解 2.3.1 type 2.3.2 eviction 2.3.3 flushInterval 2.3.4 size 2.3.5 readOnly 2.3.6 blocking 2.4 注意事项 缓存的重要性是不言而喻的。 使用缓存, 我们可以避免频繁的与数据库进行交互, 尤其是在查询越多、缓存命中率越高的情况下, 使用缓存对性能的提高更明显。 mybatis 也提供了对缓存的支持, 分为一级缓存和二级缓存。 但是在默认的情况下, 只开启一级缓存(一级缓存是对同一个 SqlSession 而言的)。 以下的项目是在 mybatis 初步使用(IDEA的Maven项目, 超详细) 的基础上进行。 对以下的代码, 你也可以从 我的GitHub 中获取相应的项目。 1 一级缓存 同一个 SqlSession 对象, 在参数和 SQL 完全一样的情况先, 只执行一次 SQL 语句(如果缓存没有过期) 也就是只有在参数和 SQL 完全一样的情况下, 才会有这种情况。 1.1 同一个 SqlSession

Spring 数据库接口多实现类,根据数据库类型自动匹配对应的实体

扶醉桌前 提交于 2020-08-15 14:39:04
背景 常用的数据库有mysql,oracle,sql server还有非关系型数据库Redis等,如果希望一套框架能在不同的数据库平台上都能正常运行,而且希望不用做多大的改动. 设计思路 可以将数据库操作抽象成接口,又具体的实现类去完成数据库操作,对用不同的数据库调用不同的实现类,为了兼容mybatis框架,我的设计如下。在传统的框架基础上多加一层daoService,只用于对数据库操作。 后面实现需要知道的知识 1 Autowired注解:最常用的注解之一,该注解根据type注入,如果一个类有多个实现时,将报错; 2 Qualifier注解:与Autowired配合使用,当出现多个实现时,使用该注解指定具体实现类, 指定的实现类的BeanDifition的AutowireCandidate必须为true,否则会报错,找不到实现类,当然该属性默认是true,只是在我们这个系统中,将改变这个属性 2-1 在实际使用时,发现这样会有bug,列:如果db_type=mysql ,@Qualifier("xmlUserService")时,由于指定的实例不存在,系统启动时就会报错,对拦截器重新修改为设置Primary属性,当系统中用户没有指定时,我们就将与db_type相等的实现类的Primary设为 3 Primary注解:当有多个实现时,标记有该注解的实现类为主要类

IDEA 整合 SSM 框架学习

心不动则不痛 提交于 2020-08-15 11:27:36
认识 Spring 框架 更多详情请点击这里: 这里 Spring 框架是 Java 应用最广的框架,它的 成功来源于理念,而不是技术本身 ,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程) 。 什么是 Spring: Spring 是一个 轻量级的 DI / IoC 和 AOP 容器的开源框架 ,来源于 Rod Johnson 在其著作 《Expert one on one J2EE design and development》 中阐述的部分理念和原型衍生而来。 Spring 提倡以 “最少侵入” 的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring 适用范围:任何 Java 应用 Spring 的根本使命:简化 Java 开发 尽管 J2EE 能够赶上 Spring 的步伐, 但 Spring 并没有停止前进, Spring 继续在其他领域发展,而 J2EE 则刚刚开始涉及这些领域,或者还没有完全开始在这些领域的创新。 移动开发、社交 API 集成、NoSQL 数据库、云计算以及大数据 都是 Spring 正在涉足和创新的领域。Spring 的前景依然会很美好。 Spring 的优势 低侵入 / 低耦合 (降低组件之间的耦合度