MyBatis基本应用
框架的概念: 框架(Framework)是一个提供了可重用的公共结构的半成品.
数据持久化: 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.
ORM(Object/Relational/Mapping): 对象/关系映射,是一种数据持久化技术.即对象和数据库通过映射建立关系.
为指定jar文件指定源代码文件: 右击jar文件-->Properties-->Java Source Attachment{Workspace:工作空间|External File:外部文件|External Folder:外部文件夹}
创建MyBatis-Configuration核心配置文件:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <!--配置-->
properties <!--可以配置在Java属性配置文件中-->
settings <!--修改MyBatis在运行时的行为方式-->
typeAliases <!--为Java类型命名一个别名(简称)-->
typeHandlers <!--类型处理器-->
objectFactory <!--对象工厂-->
plugins <!--插件-->
enviroments <!--环境-->
transactionManager <!--事务管理器-->
dataSource <!--数据源-->
mappers <!--映射器-->
</configuration>
注意:xml文件的元素节点具有一定顺序.
mapper |
映射文件的根元素节点,只有一个属性namespace(命名空间). 作用如下:1)、用以区分不同的mapper,全局唯一. 2)、绑定DAO接口,即面向接口编程.当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句. 因此namespace的命名空间必须要跟接口同名. |
cache | p配置给定命名空间的缓存. |
cache-ref | 从其他命名空间引用缓存配置. |
resultMap | 用来描述数据库结果集和对象的对应关系. |
sql | 可以重用的SQL块,也可以被其他语句引用. |
insert | 映射插入语句. |
update | 映射更新语句. |
delete | 映射删除语句. |
select | 映射查询语句. |
创建mybatis-Mapping映射文件:
<? version="3.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybas.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="{动态代理:包名+类名 | 唯一标识}" >
cache <!--配置给定命名空间的缓存-->
cache-ref <!--从其他命名空间引用缓存配置-->
resultMap <!--用来描述数据库结果集和对象的对应关系-->
sql <!--可以重用的SQL块,也可以被其他语句引用-->
insert <!--映射插入语句-->
update <!--映射更新语句-->
delete <!--映射删除语句-->
select <!--映射查询语句-->
</mapper>
association: 映射对象,仅处理一对一关系.使用javaType指定类型.
collection: 映射对象,处理一对多关系,使用ofType指定集合类型.
resultType:resultType直接表示返回类型,包括基础数据类型和复杂数据类型.
resultMap:result'Map则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上.应用场景:数据库字段信息与对象属性不一致或者需要更复杂的联合查询以便自由控制映射结果.
resultType和resultMap二者存一.
缓存配置的三种方式:
<!--在MyBatis-Configuration文件进行全局cache配置:-->
<settings>
<setting name="cacheEnabled" value="true" />
</settings> <!--在mapper文件设置该mapper标签的缓存配置-->
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true" /> <!--在mapper文件中的具体标签中设置缓存
#需设置 useCache="true"
#在标签体设置缓存配置-->
MyBatis传参方式:
1)、使用Map进行传参, 通过#{参数名}进行获取
2)、使用实参进行传参,通过#{形参的顺序,0起始}进行获取
3)、使用注解<@Paran("注解名称")>进行传参, 通过#{注解名称}进行获取
4)、通过封装对象进行传参,通过#{属性名}进行获取
执行mybatis配置:
SqlSessionFactory SSF=SqlSessionFactoryBilder().build();
SqlSession SS=SSF.openSession();
//openSession()方法的参数为boolean值,true表示关闭事务控制,自动提交;false表示开启事务,默认为true.
设置项 | 描述 | 允许值 | 默认值 |
cacheEnabled | 对在此配置文件的所有cache进行全局性开/关设置. | true|false | true |
lazyLoadingEnabled | 全局性设置懒加载.如果设为false,则所有相关联的都会被初始化加载 | true|false | true |
autoMappingBehavior | MyBatis对于resultMap自动映射的级别 | NONE|PARTIAL|FULL | PARTIAL |
mybatis缓存:
<!--在mybatis-config进行全局二级缓存的配置-->
<settings>
<setting name="cacheEnabled" value="true" />
</settings> <!--在mapper进行局部二级缓存配置-->
<cache eviction="FIFO" flushInternal="60000" size="512" readOnly="true" /> <!--可以对指定的查询应用缓存配置:useCache="true"-->
DTD文件引入:
MyEclipse开发软件-(自动联想)-》Window-->Preferences-->MyEclipse-->Files and Editors-->XML-->XML Catalog
if | 利用if实现简单的条件选择 |
choose(when,otherwise) | 相当于Java中的switch语句,通常与when和otherswise搭配 |
where | 简化SQL语句中where的条件判断 |
set | 解决动态更新语句 |
trim | 可以灵活地去除多余的关键字 |
foreach | 迭代一个集合,通常用于in条件. |
foreach注意:
1)MyBatis接受的参数类型:基本类型,对象,List,数组,Map.
2)collection的入参几种情况:
1)若入参为基本类型:变量名为key,变量值为value.
2)若入参为对象:对象的属性名为key,属性值为value.
3)若入参为List或Array: 该集合的类型小写即为key,集合值为value.
最新文章
- C++ 之namespace常见用法
- C#获取本机可用端口
- PDO的一些操作
- sqlserver insert 存储过程
- gradle手工搭建java项目搭建
- javascript - 二叉树
- 关于开源授权协议 GPL 和 LGPL
- ubuntu关闭THP
- poj 2367 Genealogical tree (拓扑排序)
- WebView Cache 缓存清除
- struts2 0day漏洞
- nginx 1.4.2 安装笔记
- jQuery动态生成不规则表格前后端
- 使用Three.js的材质
- Libevent 反应堆的初始化
- SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系
- SOUI开发应用展示2
- 大牛推荐的30本经典编程书籍,从Python到前端全系列。
- Linux平台安装Oracle11gR2数据库
- Android Studio怎样查看资源或者函数在哪些类中被引用
热门文章
- 我们参与投资36Kr股权众筹项目“易途8”的决策过程
- Java线程和多线程(一)——线程的基本概念
- 【06】对AJAX的总结(转)
- 2018/2/27 Activiti教程之创建流程篇(与Springboot整合版)一
- 【IntelliJ 】IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示
- hdu - 2066 一个人的旅行(基础最短路)
- Binary Tree Postorder Traversal(各种非递归实现,完美利用栈结构模拟)
- 洛谷 U41572 Portal2
- Ubuntu 16.04无损分区大小调整工具Gparted
- atom的react自动补全插件