MyBatis学习文档.docx
《MyBatis学习文档.docx》由会员分享,可在线阅读,更多相关《MyBatis学习文档.docx(11页珍藏版)》请在冰豆网上搜索。
MyBatis学习文档
MyBatis学习文档
创建时间:
2014-09-12
一、什么是mabatis
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlanOldJavaObjects,普通的Java对象)映射成数据库中的记录。
二、mybatis入门
1、所需jar包:
2、创建项目目录层次:
3、创建数据源(configuration.xml)
4、创建实体类:
5、创建dao接口、可以说是Mapper接口:
UserMapper
6、创建dao的实现
不同于hibernarte的此处的实现为一个xml文件,也就是userMapper.xml
7、编写测试类
二、mybatis介绍
1、mybatis执行过程
每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心,执行过程为:
(1)获得SqlSessionFactory实例:
通过SqlSessionFactoryBuilder对象来获得,从XML配置文件构建SqlSessionFactory。
(2)获得SqlSession:
通过SqlSessionFactory实例的openSession方法
(3)调用映射语句:
在命名空间”,定义了名为findUserById的映射语句,可以通过两中方式调用映射语句:
在命名空间”,定义了名为findUserById的映射语句,可以通过两中方式调用映射语句:
第一种方式:
第二种方式:
这里推荐第二种,第二种方式有很多优点,首先它不是基于文字的,那就更安全了。
第二,如果你的IDE有代码补全功能,那么你可以利用它来操纵已映射的SQL语句。
第三,不需要强制类型转换,同时BlogMapper接口可以保持简洁,返回值类型很安全(参数类型也很安全)。
2、XML映射配置文件(Configuration.xml)
(1)properties:
声明全局属性,其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置
(2)settings:
这些是极其重要的调整,它们会修改MyBatis在运行时的行为方式
·(3)typeAliases:
类型别名是为Java类型命名一个短的名字
特别注意:
对于普通的Java类型,有许多内建的类型别名。
它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。
(4)environments:
环境配置(包括事务管理transactionManager、数据源dataSource)
(5)mappers:
配置SQL映射语句
3、SQL映射的XML文件
MyBatis真正的力量是在映射语句中。
SQL映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
(1)select
需要关注的几个点:
1)如何编写select语句(select中一些重要的标签);
2)resultMap的使用;
3)如何返回集合list;
4)关联查询的两个情况(1:
n&n:
1/1:
1)
5)动态SQL的使用
使用JavaBeans来作为领域的原理:
模型MyBatis会在幕后自动创建一个ResultMap,基于属性名来映射列到JavaBean的属性上。
如果列名没有精确匹配,你可以在列名上使用select字句的别名(一个基本的SQL特性)来匹配标签
(2)insert,update,delete
1)如何编写增、删、改的语句
2)insert语句主键的处理方式:
怎么样生产自增主键;如何从结果中获取生成的主键
3)动态upsate
三、与spring的结合
1、mybatis-config.xml
1)命名空间
2)map映射
2、在spring的配置文件中需要配置的内容:
1)数据源
2)添加SqlSession的制作工厂类的bean:
SqlSessionFactoryBean
3)mapperbean(spring与mybatis整合配置,扫描所有dao)
4)事务管理
四、缓存问题
MyBatis缓存分为一级缓存和二级缓存
/archive/2013/08/05/3239014.html
1、一级缓存
一级缓存(localcache),即本地缓存,作用域默认为session。
当Sessionflush或close之后,该Session中的所有Cache就将清空。
本地缓存不能被关闭,可以调用clearCache()来清空本地缓存,或者改变缓存的作用域。
flushCache:
如果是true:
表示不论语句什么时候被调用,都会导致缓存被清空(默认为false)
1)单独使用MyBatis而不继承Spring
2)跟Spring集成的时候
2、二级缓存
二级缓存就是globalcaching,它超出session范围之外,可以被所有sqlSession共享,它的实现机制和mysql的缓存一样,开启它只需要在mybatis的配置文件开启settings里的
二级缓存的作用域为Mapper。
二级缓存可以被配置为打开或者关闭,默认为关闭,在mybatis.xml中配置。
当全局的二级缓存(setting中配置)设置为关闭时可以在MapperXML中配置单个mapper的二级缓存为打开,配置如下:
当全局的二级缓存(setting中配置)设置为打开时,mapper中这个配置无效,即mapper中配置为关闭该mapper的二级缓存也是打开。