Mybatis-概况
是什么
官网定义 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-概况的更多相关文章
- 基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】
前言 本教程使用SpringMVC+Spring+MyBatis+MySQL实现一个秒杀系统.教程素材来自慕课网视频教程[https://www.imooc.com/learn/631].有感兴趣的可 ...
- 01 mybatis框架整体概况(2018.7.10)-
01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...
- Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建
本文主要分三部分,分别是:后台核心业务逻辑.桥梁辅助控制和前台显示页面. 本Web开发环境综合了多种工具,包括Maven包管理与编译工具.Dubbo分布式服务框架.MyBatis数据持久化工具.Lin ...
- Mybatis中的collection、association来处理结果映射
前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:) 标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...
- javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)
项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- Mybatis动态SQL简单了解 Mybatis简介(四)
动态SQL概况 MyBatis 的强大特性之一便是它的动态 SQL 在Java开发中经常遇到条件判断,比如: if(x>0){ //执行一些逻辑........ } Mybatis应用中,S ...
- Mybatis的分表实战
前言: 以前写代码, 关于mysql的分库分表已被中间件服务所支持, 业务代码涉及的sql已规避了这块. 它对扩展友好, 你也不知道到底他分为多少库, 多少表, 一切都是透明的. 不过对于小的团队/工 ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- MyBatis实战之映射器
映射器是MyBatis最强大的工具,也是我们使用MyBatis时用得最多的工具,因此熟练掌握它十分必要.MyBatis是针对映射器构造的SQL构建的轻量级框架,并且通过配置生成对应的JavaBean返 ...
随机推荐
- wxDateTime用法和转换成wxString
转载别人的.void datetest() { wxDateTime now=wxDateTime::Now(); wxString date1=now.Format(); wxString date ...
- Netflix:我们为什么要将GraphQL引入前端架构?
作者|Artem Shtatnov译者|无明 在这篇文章中,我们将分享 Netflix 在这些应用程序的前端架构中引入 GraphQL 所积累的经验. 在内部,我们把用于管理广告创建和组装的主要应用程 ...
- C语言——杂实例
#include <stdio.h> #include <stdlib.h> #include <string.h> void f (int **p); void ...
- 卸载Anaconda
conda install anaconda-clean anaconda-clean --yes Anaconda 安装的时候在 .bash_profile中添加了变量: export PATH=& ...
- Java中JDBC连接池&JDBCTemplate
数据库连接池 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归 ...
- 常见算法和数据结构存在的坑(updating)
数组: c++数组下标都+5会稳. 50005000的别开60006000. 二分: 实数二分可能因为神马精度问题出现了不满足二分序的情况,要小心. 注意二分完后,不能直接用当前数组里存的值,要pd( ...
- JavaScript 的 API设计原则
一.接口的流畅性 好的接口是流畅易懂的,他主要体现如下几个方面: 1.简单 操作某个元素的css属性,下面是原生的方法: document.querySelectorAll('#id').style. ...
- Cisco基础(四):配置标准ACL、配置扩展ACL、配置标准命名ACL、配置扩展命名ACL
一.配置标准ACL 目标: 络调通后,保证网络是通畅的.同时也很可能出现未经授权的非法访问.企业网络既要解决连连通的问题,还要解决网络安全的问题. 配置标准ACL实现拒绝PC1(IP地址为192.16 ...
- JVM 和JMM的区别
首先从定义上看 JVM (Java Virtual Machine)Java虚拟机模型 主要描述的是Java虚拟机内部的结构以及各个结构之间的关系. JMM(Java Memory Model) Ja ...
- winserver安装zabbixAgent
zabbix 布署实践[8 监控windows server] 参考http://www.cnblogs.com/likehua/p/3968689.html的思路,我安装的是zabbix 3.0 ...