是什么

官网定义 http://www.mybatis.org/mybatis-3/

百科定义(维基百科) https://en.wikipedia.org/wiki/MyBatis

Github: https://github.com/mybatis/

同类技术有哪些:Hibernate,JDBC,JPA

对比同类的优缺点是什么:Hibernte是对象关系映射框架(ORM),将java类映射到数据库表。MyBatis是持久化框架-而不是ORM,将SQL语句映射到java方法。hibernate自动生成sql,mybatis支持复制sql;hibernate提供更高级别的缓存,mybatis支持的缓存低;hibernate使用存储过程困难,mybatis使用存储过程容易;

Mybatis使用场景:将java方法映射到sql语句;复杂查询,动态SQL,存储过程;需要维护SQL,在关系数据模型驱动。Hibernate:将java对象的实例映射到数据库中的实际行;由对象模型驱动。

学习前提(需要哪些基础知识):java,sql,xml....

总结:是一个java持久化框架,使用XML或注解,将对象与存储过程或SQL耦合在一起。mybatis不将java对象映射到数据库表,而将java方法映射到SQL语句。mybatis允许使用所以的数据库功能。mybatis简化了JDBC过程。支持动态SQL:使用Apache Velocity动态构建SQL语句。

MyBatis与Spring Framework和Google Guice集成。此功能允许用户构建没有依赖关系的业务代码。

MyBatis Generator IDEA插件的使用

为什么出现(为什么需要这个技术)

解决什么问题:简化持久化操作,对JDBC封装,简化数据库的连接,以及对sql的传参,将结果映射为java对象返回

没有这个技术前怎么做?使用JDBC进行数据的持久化 https://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html

XML SQL

井号:是预编译处理,解析传递进来的参数数据,以有效的防止SQL注入,提高系统安全性。一定是占位符

${}是字符串替换,对传递进来的参数原样拼接在SQL中。一定是值

xml映射配置文件properties语法:

<!-- 定义 -->
<properties> <property name="username" value="root"/> <property name="password" value="root"/></properties>

~~~

~~~

typeAliases:类型别名是为java类型命名一个短的名字。只用来减少类完全限定名的多余部分语法

~~~

~~~

动态SQL:

~~~
trim|where|set|foreach|if|choose|when|otherwise|bind。
~~~

if choose ,when,otherwise
和java中的switch类似语法:

~~~

.......

~~~

where语法:

~~~

.....
.....
.....

~~~

如果where元素没有做出想要的,可以使用trim元素来自定义

~~~
...

~~~

set语法:只用于update,set元素可以被用于动态包含更新的列,而不包含不需要更新的。

~~~

~~~

bind可以在bind语句中定义一个键值对,比如可以定义一个模糊查询的字符串:

~~~
"'%' + _parameter.getTitle() + '%'"
~~~

在select语句中使用键。

比如:

~~~

SELECT * FROM BLOG WHERE title LIKE #{pattern}

~~~

接口绑定xml的方式:
一种是通过注解绑定,就是在接口的方法上面加上@Select@Update等注解,里面包含Sql语句来绑定。
另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名

提升mybayis技能,javaAPI就是你所做的努力的地方。

mybatis缓存
一:cache机制缓存:是介于应用程序和屋里数据源之间的临时或永久存储空间。作用:是为了降低引用程序对屋里数据源访问的频次,从而提高应用的运行性能。结构:缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据mytabis缓存

一级缓存mybatis默认级缓存。
一级缓存是在sqlsession层面进行缓存的。
二级缓存二级缓存又称之为SessionFactory的缓存,由于SessionFactory的缓存。

二级缓存中应用场合:
1.很少被修改的数据
2.不是很重要的数据,允许出现偶尔并发的数据
3.常量数据。
二级缓存配置

~~~

mapper.xml:
~~~

要使用二级缓存的方法 只有不要修改的商品,
可以放在二级缓存中。把查询语句单独建一个mapper.xml,设置为一个二级缓存。

插件的使用:mybatis-generator

Mybatis-概况的更多相关文章

  1. 基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】

    前言 本教程使用SpringMVC+Spring+MyBatis+MySQL实现一个秒杀系统.教程素材来自慕课网视频教程[https://www.imooc.com/learn/631].有感兴趣的可 ...

  2. 01 mybatis框架整体概况(2018.7.10)-

    01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...

  3. Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    本文主要分三部分,分别是:后台核心业务逻辑.桥梁辅助控制和前台显示页面. 本Web开发环境综合了多种工具,包括Maven包管理与编译工具.Dubbo分布式服务框架.MyBatis数据持久化工具.Lin ...

  4. Mybatis中的collection、association来处理结果映射

    前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:)   标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...

  5. javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)

    项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...

  6. Mybatis sql映射文件浅析 Mybatis简介(三)

    简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...

  7. Mybatis动态SQL简单了解 Mybatis简介(四)

    动态SQL概况 MyBatis 的强大特性之一便是它的动态 SQL 在Java开发中经常遇到条件判断,比如: if(x>0){ //执行一些逻辑........ }   Mybatis应用中,S ...

  8. Mybatis的分表实战

    前言: 以前写代码, 关于mysql的分库分表已被中间件服务所支持, 业务代码涉及的sql已规避了这块. 它对扩展友好, 你也不知道到底他分为多少库, 多少表, 一切都是透明的. 不过对于小的团队/工 ...

  9. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  10. MyBatis实战之映射器

    映射器是MyBatis最强大的工具,也是我们使用MyBatis时用得最多的工具,因此熟练掌握它十分必要.MyBatis是针对映射器构造的SQL构建的轻量级框架,并且通过配置生成对应的JavaBean返 ...

随机推荐

  1. IDEA compile successfully many errors still occur

    Compile and install successfully with maven in IDEA, but error prompt still popup. Your local enviro ...

  2. 如何判断一个List集合中是否有空值

    list.Any(v => string.IsNullOrWhiteSpace(v))

  3. android jni控制gpio (rk3288)

    1.添加驱动程序 2.编写jni c程序编译为库给java调用 3.app调用jni静态链接库操作底层驱动 1.添加驱动程序 修改/work/rk3288/firefly-rk3288_android ...

  4. Codeforces 360D Levko and Sets (数论好题)

    题意:有一个长度为n的数组a和一个长度为m的数组b,一个素数p.有n个集合,初始都只有一个1.现在,对(i从1到n)第i个集合执行以下操作: 对所有集合中的元素c,把c * (a[i] ^ b[j]) ...

  5. kvm的img文件的本机挂载

    非lvm分区挂载方法: mount -o loop xxx.img /mnt/xxx 系统提示: “mount: you must specify the filesystem type” 执行:fd ...

  6. python 读取文件时,精确的保留数据

    import numpy as npimport pandas as pd point = pd.read_csv('waypoint21.csv') with pd.option_context(' ...

  7. Java 的内置对象

    1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息.    当Request对象获取客户提交的汉字字符时,会出现乱码问题 ...

  8. POJ 1321 棋盘问题(dfs入门)

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  9. 第六周-Scrum Meeting

    第一部分ScrumMeeting 每个人的工作: 成员 任务 ISSUE链接 本周已完成的工作 本周计划完成的工作 工作中遇到的困难 李卓峻 负责商品信息页面的界面设计与功能实现 https://gi ...

  10. delphi 读写记录类型文件Record

    type personInfo=Record //定义Record Name:String[10]; Age:integer; end; //写记录包括新键与添加记录 procedure WriteR ...