MyBatis 笔记总结
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 笔记总结的更多相关文章
- Mybatis笔记二:接口式编程
目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...
- MyBatis笔记二:配置
MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...
- MyBatis笔记一:GettingStart
MyBatis笔记一:GettingStart 1.MyBatis优点 我们的工具和各种框架的作用就是为了我们操作数据库简洁,对于一些数据库的工具能帮我们少写一些处理异常等等的代码,但是他们并不是自动 ...
- 【MyBatis笔记】mapper文件的配置以及说明
<!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...
- mybatis笔记2 基础理论准备
之前发了一篇mybatis的crud入门笔记,算是入门了,为了让功力加深一级,来研究下mybatis的理论知识,哈哈,以后好拿来跟技术经理吹吹牛- 按照问题来吧!个人觉得有自主意识,带着自己的问题来研 ...
- mybatis笔记<二> 整合spring
mybatis与spring整合需要添加几个jar包,mybatis-spring, spring-context, spring-jdbc 1. spring ioc只要一个jar包就ok 2. 我 ...
- mybatis笔记<一> Demo
mybatis作为一个orm互联网公司基本都在用,今天写个笔记.记录一下mybatis使用 参考官网:http://www.mybatis.org/mybatis-3/getting-started. ...
- 【狂神说】JAVA Mybatis 笔记+源码
简介 自学的[狂神JAVA]MyBatis GitHub源码: https://github.com/Donkequan/Mybatis-Study 分享自写源码和笔记 配置用的 jdk13.0.2 ...
- mybatis笔记3 一些原理的理解
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...
- mybatis笔记1 基本的配置和操作
mybatis比较轻量,适合开发比较小型的或者业务比较复杂的系统: 相对于hibernate来说可以灵活的写sql,更灵活的处理遇到的业务逻辑: 可以说hibernate是pojo实体对db的orm映 ...
随机推荐
- evak购物车--课程设计(201521123037邱晓娴)
1. 团队课程设计博客链接 团队博客 2. 个人负责模块或任务说明 1.Java (1)编写用户类Users (2)编写DBConnection类,连接数据库 (3)编写GoodsDAO类,从数据库中 ...
- 201521123018 《Java程序设计》第13周学习总结
1. 本章学习总结 2. 书面作业 一.1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? 返回时间 ...
- 在Ubuntu中部署并测试Fabric 1.0 Beta
[更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html 安装Fabric 1.0.0 ...
- could not get next sequence value
1.触发事件 在电脑A上敲项目代码,数据库原始资料是直接使用别人写好的sql导入(建表和导入表数据等): 将电脑A上数据库的资料,使用PL/SQL Developer导出项目中所用表(此时未导出Ora ...
- String,StringBuffer,StringBuilder的区别及其源码分析
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...
- ActiveMQ 入门helloworld
1.下载安装ActiveMQ 官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本 ...
- AngularJS系列-翻译官网
公司之前一直用的Web前台框架是Knockout,我们通常直接叫ko,有看过汤姆大叔的KO系列,也有在用,发现有时候用得不太顺手.本人是会WPF的,所以MVVM也是比较熟悉的,学ko也是很快就把汤姆大 ...
- LNMP环境源码搭建
以前LNMP环境是由运维搭建,自己搭建的时候查找了很多资料,这是我见过的最棒的资料,将过程记录下来分享给大家 为啥使用LNMP而不是LAMP下面来谈谈Nginx的技能 Nginx是一个小巧而高效的Li ...
- [USACO 3.3.1]骑马修栅栏t
[USACO 3.3.1]骑马修栅栏 时间限制: 1 Sec 内存限制: 64 MB提交: 39 解决: 17[提交][状态][讨论版] 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿 ...
- web应用程序 前段部分调优
1. 使用瀑布图初步诊断网站性能瓶颈 一般来说,打开一个网页的速度会受到以下几项的影响: 1) 服务器花了太长的时间将.aspx页面的内容转化为html. 2) .aspx页面花了太长的时间从服务器端 ...