MyBatis

Spring基础

一世执手 提交于 2020-02-27 04:06:31
主要用于service层; 轻量级java开发框架; 各层 web 层: struts , spring-MVC service 层: spring dao 层: hibernate , mybatis , jdbcTemplate --> spring-data Spring核心:控制反转IOC 切面编程AOP 方便解耦合 Spring核心容器:beans、core、context、expression 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3167967

MyBatis 中的九种设计模式

陌路散爱 提交于 2020-02-27 03:40:25
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。 Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; 单例模式,例如ErrorContext和LogFactory; 代理模式,Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果; 组合模式,例如SqlNode和各个子类ChooseSqlNode等; 模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler; 适配器模式,例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现; 装饰者模式

SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

巧了我就是萌 提交于 2020-02-27 01:19:09
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐新年好,点赞转发不要少 **文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址 Lu_JavaNodes ,**包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦。 前言 庚子鼠年,封村儿,在试过了睡觉,打麻将,做凉皮,做蛋糕之后, 我不由的陷入了对人生和社会的大思考 两年的开发经验和三年的大数据讲师经验告诉我 ,是时候写些什么了,我也早觉得有写些东西的必要了。我向来是不惮以最多的无聊揣测这个假期的,但我没想到……(不能再往下了,再往下真就算抄袭了) 于是决定将自己的的毕生功力汇聚整理成册, 写出《图文教程》系列Java技术学习秘籍 ,本功法力求 『图文并茂』 『简单易懂』,概念和代码实践相结合,每个知识点辅助以自测面试题,希望大家通过本系列教程能够快乐学Java,从练气到飞升。 本期选择的技术是SpringBoot ,SpringBoot 现如今已是Java程序员的必备修炼功法,具备SpringBoot大成的开发功力,才能行走江湖,纵横大厂小派而不惧需求。 在正式开始学习之前,先通过思维导图了解本教程的功法纲要 简单说明,教程分为基础篇

mybatis一级缓存二级缓存

江枫思渺然 提交于 2020-02-27 00:21:52
一级缓存   Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。                  为什么要使用一级缓存,不用多说也知道个大概。但是还有几个问题我们要注意一下。    1、一级缓存的生命周期有多长?    a、MyBatis在开启一个数据库会话时,会创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。   b、如果SqlSession调用了close()方法,会释放掉一级缓存PerpetualCache对象,一级缓存将不可用。   c、如果SqlSession调用了clearCache()

MyBatis就是这么简单

佐手、 提交于 2020-02-27 00:02:49
0、MyBatis简介 1 ) MyBatis 是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code ,随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis ,代码于 2013 年 11 月迁移到 Github 2 ) iBatis 一词来源于 “internet” 和 “abatis” 的组合,是一个基于 Java 的持久层框架。 iBatis 提供的持久层框架包括 SQL Maps 和 Data Access Objects ( DAO ) 下载网址 https://github.com/mybatis/mybatis-3/ 为什么要使用MyBatis – 现有持久化技术的对比 JDBC SQL 夹在 Java 代码块里,耦合度高导致硬编码内伤 维护不易且实际开发需求中 sql 有变化,频繁修改的情况多见 2.Hibernate 和 JPA 长难复杂 SQL ,对于 Hibernate 而言处理也不容易 内部自动生产的 SQL ,不容易做特殊优化 基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。导致数据库性能下降 3.MyBatis 对开发人员而言,核心 sql 还是需要自己优化 sql 和

springboot + mybatis 支持oracle和mysql切换含源码

半腔热情 提交于 2020-02-26 23:42:20
1、springboot 启动类加入bean 如下 // DatabaseIdProvider元素主要是为了支持不同的数据库@Beanpublic DatabaseIdProvider getDatabaseIdProvider() { DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider(); Properties properties = new Properties(); properties.setProperty("Oracle", "oracle"); properties.setProperty("MySQL", "mysql"); databaseIdProvider.setProperties(properties); return databaseIdProvider;} 2、application.yml 配置 spring: datasource:# 使用mysql # driver-class-name: com.mysql.jdbc.Driver # url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8

SSM框架整合流程

你说的曾经没有我的故事 提交于 2020-02-26 21:41:56
整合注意事项 要注意 MyBatis 版本整合 Spring 时使用的适配包; 下载整合适配包 https://github.com/mybatis/spring/releases 官方整合示例, jpetstore https://github.com/mybatis/jpetstore-6 整合思路与步骤 1.搭建环境 创建一个动态的WEB工程 2.导入jar 导入SSM需要的jar包 导入整合适配包 导入其它相关支持包、log4j,pageHelper,AspectJ,jackson,jstl 3.搭建SpringMVC web.xml DispatcherServlet HiddenHttpMethodFilter CharacterEncodingFilter <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp

随手转发正能量系列-Java学习的正确打开方式(劝退教程)

末鹿安然 提交于 2020-02-26 19:05:52
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。 文章目录 一、Java基础 1、Java基础教学视频 2、Java基础博客文章目录 3、Java基础书籍 二、关于JavaWeb基础 1、JavaWeb基础教程视频 2、关于JavaWeb博客文章 三、关于数据库 1、关系型数据库教学视频 2、非关系性数据库Redis视频 四、关于JDK新特性 五、关于并发编程 六、关于NIO 七、关于ssm框架 1、spring框架视频 2、Mybatis 框架视频 3、SpringMVC框架视频 4、SSM框架博客文章 4.1、spring框架 4.2、Mybatis框架 4.3、SpringMVC框架 4.5、SSM框架整合文章 八、关于数据结构与算法 1、数据结构与算法视频 2、数据结构与算法博客文章 3、数据结构与算法书籍 九、关于开发工具idea 十

mybatis面试热点

心已入冬 提交于 2020-02-26 17:56:15
什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 Mybaits的优点: 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 能够与Spring很好的集成; 提供映射标签

mybatis {arg0} 与 {0}

主宰稳场 提交于 2020-02-26 17:05:37
MyBatis的XML的配置文件中声明设置属性的useActualParamName参数值为false <setting name= "useActualParamName" value = "false" /> 代码展示: Dao层函数 User getUserBys ( int id,String name) ; 对应的mapping.xml <select id="getUserBys" resultType="model.User"> select * from user where id = #{0} and name=#{1} </select> 这种方法应该是对的,但是如果你使用的是mybatis3.4.2或者之后的版本,就会产生绑定异常: org.apache.ibatis.binding.BindingException: Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2] 从异常可以看出在没有使用@参数注解的情况下,传递参数需要使用 #{}为arg0 - #{} ARGN#或者{}参数1 - #{} paramn 更换下mapping.xml中的代码 <select id="getUserBys" resultType="model.User">