MyBatis之优化MyBatis配置文件中的配置

title: MyBatis之优化MyBatis配置文件中的配置
tags: MyBatis
categories: MyBatis


若图片无法显示,请前往我的博客查看,相应文章链接:http://codingxiaxw.cn/2016/11/08/34-mybatis%E4%BC%98%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%85%8D%E7%BD%AE/

MyBatis配置文件很重要,首先我们来看看MyBatis配置文件中的内容和顺序:

    <properties>(属性)
    
    <setting>(全局配置参数)
    
    <typeAliases>(类型别名)
    
    <typeHandlers>(类型处理器)
    
    <objectFactory>(对象工厂)
    
    <plugins>(插件)
    
    <environments>(环境集合属性对象)
        <environment>(环境子属性对象)
            <transactionManager>(事务管理)
            dataSource>(数据源)
            
    <mappers>(映射器)

文件目录结构如下:
image

1.<properties>属性定义

可以把一些通用的属性值配置在属性文件中,加载到mybatis运行环境内。例如创建db.properties文件,然后在SqlMapperConfig.xml中进行配置。db.properties文件内容如下:

image

然后在SqlMapperConfig.xml中进行配置:

[图片上传失败...(image-e00850-1526286046195)]

然后在<environments>标签中用${}符号做如下修改:

image

注意:Mybatis将按照下面的顺序来加载属性

  • 1.在properties标签之间定义的属性首先被读取。
  • 2.然后会读取properties标签内部resource或url的属性,它会覆盖已读取的同名属性。
  • 3.最后读取parameterType(即insert标签或是update标签或是...)传递的属性,它会覆盖已读取的同名属性。

所以我们建议使用properties标签时,不要在properties标签之间定义属性,只引用在.properties文件中定义的属性,并且.properties文件中定义的key值要有一些特殊的规则。例如我上述定义key值时前面都加了jdbc.的前缀。

2.<settings>全局参数配置

mybatis运行时可以调整一些全局参数(相当于软件的运行参数)。根据使用需求进行参数配置。但是要注意:小心配置,配置参数会影响mybatis的执行。

ibatis的全局配置参数中包括很多的性能参数(最大线程数、最大等待时间…),通过调整这些性能参数使ibatis达到高性能的运行,而mybatis没有这些性能参数,由mybatis自动调节。

3.<typeAliases>属性

可以将parameterType、resultType中指定的类型通过别名引用。MyBatis提供了很多的别名如下:[图片上传失败...(image-d951ee-1526286046195)]

这里我们采用自定义的别名,在SqlMapperConfig.xml中进行如下配置:

image

里面包括定义单个别名和批量别名定义(即一次性定义一个包下所有.java文件的别名)。

定义别名后这样我们在parameterType和resultType中使用时就不用再繁琐的指定类的全限定类名了,像下面这样使用即可
image

4.<typeHandlers>属性

类型处理器将java类型和jdbc类型进行映射,mybatis提供了很多类型处理器,一般情况下够用了。

5.<mapper>映射器属性

之前我们在配置文件中使用的<mapper>标签内容为:<mapper resource=“mapper/UserMapper.xml”/>,接下来我要讲的是另一种在配置文件中映射mapper动态代理的方法。在配置文件中这样配置<mapper class=“mapper.UserMapper”/>,这样的要求需要保证UserMapper.xml文件和UserMapper.java在同一个包下且.xml文件和.java文件名要同名。

同上方别名的配置,当包下出现多个Mapper.java和Mapper.xml时我们采用批量配置:<package name=“mapper”/>,代码如下:[图片上传失败...(image-43a838-1526286046195)]

2018.3.19更

欢迎加入我的Java交流1群:659957958。群里目前已有1800人,每天都非常活跃,但为了筛选掉那些不怀好意的朋友进来搞破坏,所以目前入群方式已改成了付费方式,你只需要支付9块钱,即可获取到群文件中的所有干货以及群里面各位前辈们的疑惑解答;为了鼓励良好风气的发展,让每个新人提出的问题都得到解决,所以我将得到的入群收费收入都以红包的形式发放到那些主动给新手们解决疑惑的朋友手中。在这里,我们除了谈技术,还谈生活、谈理想;在这里,我们为你的学习方向指明方向,为你以后的求职道路提供指路明灯;在这里,我们把所有好用的干货都与你分享。还在等什么,快加入我们吧!

2018.4.21更:如果群1已满或者无法加入,请加Java学习交流2群:305335626 。群2作为群1的附属群,除了日常的技术交流、资料分享、学习方向指明外,还会在每年互联网的秋春招时节在群内发布大量的互联网内推方式,话不多说,快上车吧!

6.联系

If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links.

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 4,430评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 131,797评论 18 138
  • 本周已是第十三周,上周对班级阅读进行了 统计,如下表格: 孩子,是要穷养出吃苦奋斗的精神,还是富养出疏阔温厚的性格...
    远贞阅读 265评论 0 1
  • 东京荞麦屋里卖狐荞麦、狸荞麦、狐乌冬、狸乌冬,什么狐啊狸的,都是1970年左右的东京小孩最奢侈的食品;而1970年...
    小妇阿达阅读 1,403评论 0 1
  • 虽说考完期末考试了,但关于考试的点点滴滴,仍在我们的生活里泛起了涟漪。有悲有喜,又无奈,也兴奋。 抽测那点事 先说...
    简翼阅读 491评论 1 2
  • 在MySQL的引擎Innodb中,默认的transaction isolation即为REPEATABLE-RE...
    明月不照君阅读 14,368评论 0 2