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文件的元素节点具有一定顺序.

 

 

MyBatis标签基本说明
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.

 

settings元素支持的属性
设置项 描述 允许值 默认值
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

 

 

mybatis动态标签
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.

 

 

posted @ 2017-06-03 22:58  星小梦  阅读(664)  评论(0编辑  收藏  举报