1、MyBatis中的一些要点:

  1.1 SqlMapConfig.xml:mybatis的全局配置文件,配置mybatis的运行环境等信息,包括mapper.xml文件

  1.2 mapper.xml:sql映射文件

  1.3 SqlSessionFactory:根据SqlMapConfig.xml构造

  1.4 SqlSession:由SqlSessionFactory生成,操作数据库需要通过SqlSession进行

  1.5 Executor:MyBatis底层定义的操作数据库的执行器接口

  1.6 Mapped Statement:MyBatis底层封闭对象,包装了MyBatis配置信息及sql映射信息等,mapper.xml文件中的一个sql语句对应一个Mapped Statement对象,sql的id是其id。MappedStatememt对sql执行的输入输出参数进行定义,包括HashMap、基本类型、pojo、输入输出映射由Ececutor完成

2、MyBatis默认使用Log4j记录日志,使用时应在classpath中配置log4j.properties文件

3、MyBatis使用原始Dao和Mapper接口两种方法实现Dao,实现Dao时应该要注意SqlSession是线程不安全的,每个线程都应该有自己的实例,每个Session都应控制在一个请求或一个方法内,并在每次使用后要关闭Session(finally)

  3.1 使用原始Dao开发方式,需要编写Dao接口和对应的实现类及映射文件,Dao实现类通过SqlSession及sql.xml文件中的sql id完成数据库读写

  3.2 Mapper接口需要编写mapper接口和mapper文件,开发规范:

    1)mapper.xml文件中的namespace和mapper接口类路径相同

    2)mapper接口方法名和mapper.xml中定义的statement的id相同

    3)mapper接口输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同

    4)mapper接口输出参数类型和mapper.xml中定义的每个sql的resutType的类型相同

4、SqlMapConfig.xml配置文件常用配置内容:

  1) properties:属性

  利用properties标签可以引入外部文件如java属性文件,并在properties标签内定义其他内容

  在properties元素属性加载顺序:

    1)在properties体内定义的属性先被读取

    2)propperties元素中的resource或url加载的属性

    3)parameterType传递属性

  加载时,后者会覆盖前者属性

  2)settings:全局配置参数

  MyBatis行为相关

  3)typeAliases:类型别名

  主要是自定义别名

  4)environements:环境集合属性对象

    environement:环境子属性对象

      transactionManager:事务管理

      dataSource:数据源

  5) mappers:映射器

  mappers配置几种方法

    <mapper resource=""/>

    <mapper url=""/>

    <mapper class=""/>:要求mapper接口名称和mapper映射文件一样,在同一个目录下

    <package name=""/>:注册指定包下所有mapper接口,要求mapper接口名称和mapper映射文件一样,在同一个目录下

5、mapper.xml文件

  1)parameterType:输入类型,简单类型,pojo对象,hashmap

  2)resultType:输出类型,简单类型,pojo对象,hashmap

  3)resultMap:将查询结果映射为复杂类型的pojo

6、动态SQL

  1)if:用于动态添加sql条件

  2)where:和 if 配合使用自动处理第一个 if 中的 and

  3)foreach:解析数组和List

  4)sql:定义 sql 片段

7、一对一,一对多,多对多查询

  resultMap 使用 association 和 collection 完成一对一和一对多高级映射

  1)association 将关联查询信息映射到一个pojo对象中

  2)collection 将关联查询信息映射到一个list集合中

8、延迟加载,在 association collection 中添加 select 内容指定查询Sql

9、查询缓存

  MyBatis一级缓存的作用域是同一个SqlSession

  MyBatis二级缓存的作用域是同一个namespace

10、和Spring整合时,sqlSessionFactory,dao要在spring中配置

  

MyBatis 笔记总结的更多相关文章

  1. Mybatis笔记二:接口式编程

    目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...

  2. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  3. MyBatis笔记一:GettingStart

    MyBatis笔记一:GettingStart 1.MyBatis优点 我们的工具和各种框架的作用就是为了我们操作数据库简洁,对于一些数据库的工具能帮我们少写一些处理异常等等的代码,但是他们并不是自动 ...

  4. 【MyBatis笔记】mapper文件的配置以及说明

    <!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...

  5. mybatis笔记2 基础理论准备

    之前发了一篇mybatis的crud入门笔记,算是入门了,为了让功力加深一级,来研究下mybatis的理论知识,哈哈,以后好拿来跟技术经理吹吹牛- 按照问题来吧!个人觉得有自主意识,带着自己的问题来研 ...

  6. mybatis笔记<二> 整合spring

    mybatis与spring整合需要添加几个jar包,mybatis-spring, spring-context, spring-jdbc 1. spring ioc只要一个jar包就ok 2. 我 ...

  7. mybatis笔记<一> Demo

    mybatis作为一个orm互联网公司基本都在用,今天写个笔记.记录一下mybatis使用 参考官网:http://www.mybatis.org/mybatis-3/getting-started. ...

  8. 【狂神说】JAVA Mybatis 笔记+源码

    简介 自学的[狂神JAVA]MyBatis GitHub源码: https://github.com/Donkequan/Mybatis-Study 分享自写源码和笔记 配置用的 jdk13.0.2 ...

  9. mybatis笔记3 一些原理的理解

    1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...

  10. mybatis笔记1 基本的配置和操作

    mybatis比较轻量,适合开发比较小型的或者业务比较复杂的系统: 相对于hibernate来说可以灵活的写sql,更灵活的处理遇到的业务逻辑: 可以说hibernate是pojo实体对db的orm映 ...

随机推荐

  1. 201521123018 《Java程序设计》第14周学习总结

    1. 本章学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) 添 ...

  2. JS中的DOM对象及JS对document对像的操作

    DOM对象 windows:属性:opener(打开者) 方法:open().close(),setTimeout().setInterval()... location:属性:href 方法:rel ...

  3. Eclipse rap 富客户端开发总结(6) : 如何发布rap到tomcat

    1.先下载以来的打包插件 war products  输入下面的地址,选择相应的插件 新建一个 war product Configutation向导 下面的war  product Configut ...

  4. Oracle数据泵的导入导出

    说明:数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍.速度的提高源于使用了并行技术来读写导出转储文件. expdp导出 1.以s ...

  5. ROS学习记录(四)————怎样建立一个package包?

    功能包是什么? 英文表述package,我可没有在炫英文啊,我的英文很烂的,只是在提醒大家,在ROS系统中,这个词使用的频率非常之高,你必须记住它,要不就没法正确的看懂信息.言归正传,package是 ...

  6. 单例模式(Singleton)看了就懂

    单例,故名思议,一个只能创建一个实例的类. 单例被广泛应用于Spring的bean(默认).线程池.数据库连接池.缓存,还有其他一些无状态的类如servlet. 一个没必要多例的类实现了单例可以节约空 ...

  7. python基础之元组,集合

    一.元组 为何要有元组,存放多个值,元组不可变,更多的是用来做查询 t=(,[,],,)) #t=tuple((,[,],,))) print(type(t)) 元组可以作为字典的key d={(,, ...

  8. AngularJS概念概述和第一个使用例子

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 概念概述 本节使用一个简单的例子简要介绍了AngularJS的重要组成部分. 概念 描述 ...

  9. Linux学习——Shell基础

    1 shell概述 Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至编写一些程序. Shell 还是一 ...

  10. 【重点突破】——Cookie的使用

    cookie:小甜饼 cookie:保存客户端浏览器中一个纯文本文件 版本高的浏览器可查看   F12->Resource  左下方cookie    查看 cookie作用: 保存:[安全性要 ...