ibatis

Spring面试题实战整理,Java开发求职BAT的必经之路

喜欢而已 提交于 2020-10-25 13:34:51
Spring 概述 什么是 Spring? Spring 是个 Java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。 使用 Spring 轻量:Spring 是轻量的,基本的版本大约 2MB。 控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): :Spring 支持面向切面的编程,并且把应用业务逻辑和系统服务分开容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC 框架:Spring 的 WEB 框架是个精心设计的框架,是 Web 框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: :Spring 提供方便的 API 把具体技术相关的异常(比如由 JDBC,Hibernate or JDO抛出的)转化为一致的 unchecked 异常。 Spring 由哪些模块组成? 以下是 Spring 框架的基本模块: Core module Bean module Context module Expression

阿里:MySQL数据库规范

陌路散爱 提交于 2020-10-23 18:41:06
阿里:MySQL数据库规范 简介:基于阿里数据库设计规范扩展而来 设计规范 1.【推荐】字段允许适当冗余,以提高查询性能,但必须考虑数据一致。冗余字段应遵循: 不是频繁修改的字段。 不是 varchar 超长字段,更不能是 text 字段。 正例:商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存 储类目名称,避免关联查询。 2.【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计2年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。 3.【推荐】id必须是主键,每个表必须有主键,且保持增长趋势的, 小型系统可以依赖于 MySQL 的自增主键,大型系统或者需要分库分表时才使用内置的 ID 生成器 4.【强制】id类型没有特殊要求,必须使用bigint unsigned,禁止使用int,即使现在的数据量很小。id如果是数字类型的话,必须是8个字节。参见最后例子 方便对接外部系统,还有可能产生很多废数据 避免废弃数据对系统id的影响 未来分库分表,自动生成id,一般也是8个字节 5.【推荐】字段尽量设置为 NOT NULL, 为字段提供默认值。 如字符型的默认值为一个空字符值串’’;数值型默认值为数值 0;逻辑型的默认值为数值 0; 6.【推荐】每个字段和表必须提供清晰的注释 7.【推荐】时间统一格式:

手写mybatis框架-增加缓存&事务功能

∥☆過路亽.° 提交于 2020-10-16 08:43:01
增加代码详解 缓存 com.simple.ibatis.cache 缓存接口-Cache public interface Cache { /**放入缓存*/ void putCache(String key,Object val); /**获取缓存*/ Object getCache(String key); /**清空缓存*/ void cleanCache(); /**获取缓存健数量*/ int getSize(); /**移除key的缓存*/ void removeCache(String key); } 自定义框架缓存接口,提供基本的增删改查功能。 缓存基本实现类-SimpleCache public class SimpleCache implements Cache{ // 内部使用HashMap作为缓存实现 private static Map<String,Object> map = new HashMap<>(); // 调用map.put()方法实现存缓存功能 @Override public void putCache(String key, Object val) { map.put(key,val); } // 调用map.get()方法实现取缓存功能 @Override public Object getCache(String key) {

学Java必会的70个常见Spring面试题(带答案)

时光总嘲笑我的痴心妄想 提交于 2020-10-10 08:34:31
这篇文章主要介绍了70个学Java必会的常见Spring面试题,主要包括Spring、Spring boot、Spring Cloud、Spring MVC、MongoDB、MyBatis、微服务实战,Spring 全家桶等,感兴趣的朋友可以了解一下! 由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取: 链接: 点这里!!! 暗号:CSDN Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务

我的开发日记(十)

≡放荡痞女 提交于 2020-10-07 00:23:29
最近开发基本都是在搬砖,补漏洞,今天正式部署到服务准备联调了,中间遇到了一些难点。 字符编码 由于时间紧迫没有来得及研究,只是根据日志和经验找到了解决方案。这里用到了非常基础的 Java 知识,幸好我没有忘干净。 首先,在 build.gradle 中要指定编码格式,如下: tasks.withType(JavaCompile) { options.encoding = "UTF-8" } 其次呢,在过滤器里面我是读去 request 和 response 的 ServletOutputStream 中的内容用来写入日志的,所以还需要会写到原来的对象中,这里就有一个坑,也需要指定编码格式。 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; ResponseWrapper responseWrapper = new

Java程序员的MyBatis学习总结——MyBatis快速入门

若如初见. 提交于 2020-10-06 02:01:46
一、Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 二、mybatis快速入门 2.1、准备开发环境 1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2、添加相应的jar包 【mybatis】 mybatis-3.1.1.jar 【MYSQL驱动包】 mysql-connector-java-5.1.7-bin.jar 3、创建数据库和表,针对MySQL数据库 SQL脚本如下: 1createdatabasemybatis;2usemybatis;3CREATETABLEusers(idINTPRIMARYKEYAUTO_INCREMENT, NAMEVARCHAR(20), ageINT);4INSERTINTOusers(NAME, age)VALUES('孤傲苍狼',27);5INSERTINTOusers(NAME, age)VALUES('白虎神皇',27); 将SQL脚本在MySQL数据库中执行,完成创建数据库和表的操作,如下: 到此

记一次 Mybatis 一级缓存清理无效引起的源码走读

前提是你 提交于 2020-10-02 22:31:48
今天对象在学习 Mybatis 时发现 org.apache.ibatis.session.SqlSession 对象的 clearCache() 方法并不能清理一级缓存, 同一 session 下相同查询条件返回的结果还是旧值。测试代码如下 上网搜索 网上搜索找到了相同问题, 并没有人解答。例如: https://www.iqismart.com/topi... 查看官方文档 http://www.mybatis.org/mybati... SqlSession 实例有一个本地缓存在执行 update,commit,rollback 和 close 时被清理。要明确地关闭它(获取打算做更多的工作) ,你可以调用 clearCache()。 看起来, 没什么问题, 方法也没有被标记成废弃. 打印详细日志 先把日志配上, 看看有没有打印什么有用的信息, 添加 slf4j、logback 依赖,添加 logback.xml , 日志级别设置为 DEBUG 运行后未看到跟清理缓存有关的信息, 调整日志级别为 TRACE 后依旧没有. < configuration> < contextName>mybatis </ contextName> < appender name= "stdout" class= "ch.qos.logback.core.ConsoleAppender"> <

MyBatis(五):mybatis关联映射

◇◆丶佛笑我妖孽 提交于 2020-09-28 17:49:18
Mybatis中表与表之间的关系分为一下4类: 1)一对一 2)一对多 3)多对一 4)多对多 创建数据Demo表 数据库表: 用户表user:记录了购买商品的用户信息。 订单表orders:记录了用户所创建的订单(购买商品的订单)。 订单明细表orderdetail:记录了订单的详细信息即购买商品的信息。 商品表items:记录商品信息。 数据模型: 数据表之间的关系: 先分析数据级别之间有关系的表之间的业务关系: usre和orders: user —-> orders:一个用户可以创建多个订单,一对多 orders —-> user:一个订单只由一个用户创建,一对一 orders和orderdetail: orders —-> orderdetail:一个订单可以包括 多个订单明细,因为一个订单可以购买多个商品,每个商品的购买信息在orderdetail记录,一对多关系。 orderdetail —-> orders:一个订单明细只能包括在一个订单中,一对一 orderdetail和itesm: orderdetail —-> itesms:一个订单明细只对应一个商品信息,一对一 items —-> orderdetail:一个商品可以包括在多个订单明细 ,一对多 创建Demo表 /* Navicat MySQL Data Transfer Source Server :

springboot 集成mybatis3.4.5 mapper tk.mybatis

时光毁灭记忆、已成空白 提交于 2020-08-17 20:10:49
本篇主要介绍的是springboot如何集成mybatis,以及一些常用的mapper编写,与顶层tk.mybatis的mapper结合集成,看懂之后即可快速的开发 1、配置sqlSessionFactory import com.gta.train.platform.persis.page.plugin.PageInterceptor; import lombok.RequiredArgsConstructor; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;