您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Mybatis技术简介
Mybatis技术简介主讲人:张兴国Mybatis资料文档地址:包下载地址:一片优秀的帖子:的前世今生MyBatis的前身就是iBatis,iBatis本是由ClintonBegin开发,后来捐给Apache基金会,成立了iBatis开源项目。2010年5月该项目由Apahce基金会迁移到了GoogleCode,并且改名为MyBatis。MyBatis介绍MyBatis是一个数据持久层(ORM)框架。把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。MyBatis的优点:1.基于SQL语法,简单易学。2.能了解底层组装过程。3.SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。4.程序调试方便。与传统JDBC的比较减少了61%的代码量最简单的持久化框架架构级性能增强SQL代码从程序代码中彻底分离,可重用增强了项目中的分工增强了移植性JDBC与MyBatis直观对比MyBatis就是将上面这几行代码分解包装:前两行是对数据库的数据源的管理包括事务管理,3、4两行MyBatis通过配置文件来管理SQL以及输入参数的映射,6、7、8行MyBatis获取返回结果到Java对象的映射,也是通过配置文件管理。与Hibernate的对比MyBatis1、是一个SQL语句映射的框架(工具)2、注重POJO与SQL之间的映射关系。不会为程序员在运行期自动生成SQL3、自动化程度低、手工映射SQL,灵活程度高.4、需要开发人员熟炼掌据SQL语句Hibernate1、主流的ORM框架、提供了从POJO到数据库表的全套映射机制2、会自动生成全套SQL语句。3、因为自动化程度高、映射配置复杂,api也相对复杂,灵活性低.4、开发人同不必关注SQL底层语句开发MyBatis工作流程MyBatis基本要素一、configuration.xml全局配置文件二、mapper.xml核心映射文件三、SqlSession接口核心接口和类的结构SqlSessionFactoryBuilder+build(read:Read):SqlSessionFactory+build(config:Configuration):SqlSessionFactoryConfiguration#cacheEnabled:boolean#useGeneratedKeys:boolean#caches:MapString,Cache#loadedResources:SetString#mappedStatements:MapString,MappedStatementSqlSessionFactoryinterface+openSession():SqlSessionXMLSqlSessioninterface+insert(statement:String):int+insert(statement:String):int+update(statemnet:String):int+selectOne(statement:String):ObjectBuildsCreatesDefaultSqlSession-executor:Executor-configuration:Configuration+insert(statement:String):int+insert(statement:String):int+update(statemnet:String):int+selectOne(statement:String):ObjectDefaultSqlSessionFactory+openSession():SqlSessionExecutorinterface+update(ms:MappedStatement,parameter:Object):int+query(ms:MappedStatement,p:Object,rb:RowBounds,rh:ResultHandler):listCachingExecutorBaseExecutorBatchExecutorReuseExecutorSimpleExecutor核心类的生命周期SqlSessionFactoryBuilder的生命周期:这个类可以被初始、使用和丢弃,如果你已经创建好了一个SqlSessionFactory后就不用再保留它。因此,SqlSessionFactoryBuilder的最好作用域是方法体内,比如说定义一个方法变量。你可以重复使用SqlSessionFactoryBuilder生成多个SqlSessionFactory实例,但是最好不要强行保留,因为XML的解析资源要用来做其它更重要的事。SqlSessionFactory的生命周期SqlSessionFactory:一旦创建,SqlSessionFactory就会在整个应用过程中始终存在。所以没有理由去销毁和再创建它,一个应用运行中也不建议多次创建SqlSessionFactory。如果真的那样做,会显得很拙劣。因此SqlSessionFactory最好的作用域是Application。可以有多种方法实现。最简单的方法是单例模式或者是静态单例模式。然而这既不是广泛赞成和好用的。反而,使用GoogleGuice或Spring来进行依赖反射会更好。这些框架允许你生成管理器来管理SqlSessionFactory的单例生命周期。SqlSession的生命周期SqlSession:每个线程都有自己的SqlSession实例,SqlSession实例是不能被共享,也是不是线程安全的。因此最好使用Request作用域或者方法体作用域。不要使用类的静态变量来引用一个SqlSession实例,甚至不要使用类的一个实例变更来引用。如果你正在使用WEB框架,应该让SqlSession跟随HTTP请求的相似作用域。也就是说,在收到一个HTTP请求过后,打开SqlSession,等返回一个回应以后,立马关掉这个SqlSession。关闭SqlSession是非常重要的。你必须要确保SqlSession在finally方法体中正常关闭。可以使用下面的标准方式来关闭:SqlSessionsession=sqlSessionFactory.openSession();try{//dowork}finally{session.close();}基础配置文件configuration.xmlconfiguration.xml是系统的核心配置文件,包含数据源和事务管理器等设置和属性信息,XML文档结构如下:configuration配置properties可以配置在Java属性配置文件中settings修改MyBatis在运行时的行为方式typeAliases为Java类型命名一个短的名字typeHandlers类型处理器objectFactory对象工厂plugins插件environments环境environment环境变量transactionManager事务管理器dataSource数据源mappers映射器基础配置文件—环境配置配置环境configurationenvironmentsdefault=developmentenvironmentid=developmenttransactionManagertype=JDBC/dataSourcetype=POOLEDpropertyname=drivervalue=${driver}/propertyname=urlvalue=${url}/propertyname=usernamevalue=${username}/propertyname=passwordvalue=${password}//dataSource/environmentenvironmentid=development2……/environment/environments/configuration基础配置文件—事务管理MyBatis有两种事务管理类型:JDBC-这个类型直接全部使用JDBC的提交和回滚功能。它依靠使用连接的数据源来管理事务的作用域。MANAGED-这个类型什么不做,它从不提交、回滚和关闭连接。而是让窗口来管理事务的全部生命周期。(比如说Spring或者JAVAEE服务器)基础配置文件—数据源数据源类型有三种:UNPOOLED,POOLED,JNDI。UNPOOLED-这个数据源实现只是在每次请求的时候简单的打开和关闭一个连接。虽然这有点慢,但作为一些不需要性能和立即响应的简单应用来说,不失为一种好选择。POOLED-这个数据源缓存JDBC连接对象用于避免每次都要连接和生成连接实例而需要的验证时间。对于并发WEB应用,这种方式非常流行因为它有最快的响应时间。JNDI-这个数据源实现是为了准备和Spring或应用服务一起使用,可以在外部也可以在内部配置这个数据源,然后在JNDI上下文中引用它。这个数据源配置只需要两上属性:基础配置文件—SQL映射文件SQL映射文件://1.使用相对路径mappersmapperresource=org/mybatis/builder/UserMapper.xml/mapperresource=org/mybatis/builder/AuthorMapper.xml/mapperresource=org/mybatis/builder/BlogMapper.xml/mapperresource=org/mybatis/builder/PostMapper.xml//mappers//2.使用全路径mappersmapperurl=file:///var/sqlmaps/AuthorMapper.xml/mapperurl=file:///var/sqlmaps/BlogMapper.xml/mapperurl=file:///var/sqlmaps/PostMapper.xml//mappersSQL映射文件SQL映射文件结构:cache-配置给定命名空间的缓存。cache-ref–从其他命名空间引用缓存配置。resultMap–最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载对象。sql–可以重用的SQL块,也可以被其他语句引用。insert–映射插入语句update–映射更新语句delete–映射删除语句select–映射查询语句SQL映射文件Selectmappernamespace=org.mybatis.example.BlogMapperselectid=selectBlogparameterType=intresultType=Blogselect*fromBlogwhereid=#{id}/select/mapper使用完全限定名调用映射语句1.Blogblog=(Blog)session.selectOne(org.mybatis.example.BlogMapper.selectBlog,101);StringblogName=blog.getBlogName();SQL映射文件Selectmappernamespace=org.mybatis.example.BlogMapperselectid=selectBlog2pa
本文标题:Mybatis技术简介
链接地址:https://www.777doc.com/doc-4925513 .html