您的位置:首页 > 其它

MyBatis 学习记录03--07/11--全局配置文件详解

2019-07-11 17:13 176 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44133519/article/details/95480194

MyBatis 学习记录03--07/11--全局配置文件详解

  • 二、标签
  • 2. settings
  • 2)设置名:
  • 3. typeAliases
  • 4. typeHandlers类型处理器
  • 3. plugins插件
  • 4. environments可以配置多种环境
  • 2)default:
  • 5. databaseIdProvider:支持多种数据库厂商
  • 6. mappers:!!!将sql映射配置文件注册到全局配置文件中
  • 2)注册接口
  • 3)总结
  • 4)批量注册package
  • 一、引入提示

    1. 引入dtd约束文件:

    1)连网时,可以直接点击下载文件

    2)没连网时

    1.1

    Referenced Libraries — mybatis-3.4.1.jar — org-apache.ibatis-builder.xml

    • mybatis-3-config.dtd—全局配置文件
    • mybatis-3-mapper.dtd—sql映射配置文件

    1.2 找到dtd文件

    在电脑中找到mybatis-3.4.1.jar包
    用压缩软件打开
    org–apache–ibatis–builder–xml–解压出来“mybatis-3-config.dtd”和“mybatis-3-mapper.dtd”两个文件

    1.3 引入

    1.3.1 打开全局配置文件,复制url

    1.3.2 window–Perference–XML–XML Catalog–Add

    1.3.3 属性
    key:url
    keyType:URI
    Location:File System—解压后放的地址

    二、标签

    1. properties

    1)作用

    2) 属性

    3) 实现

    1)在conf包下 new – file –
    File Name: dbconfig.properties
    文件中将全局配置文件中的datasource内容粘贴过来

    2)全局配置文件
    因为在类路径下,使用resource来绑定properties文件
    value值均用${}来动态绑定properties中的名字

    2. settings

    1)成分:

    1.1 settings:包含多个设置项

    1.2setting:每一个设置项

    2)设置名:

    2.1 mapUnderscoreToCamelCase 驼峰设置

    <settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    设置后,下划线后的第一个字母大写

    db字段名:A_COLLUMN   -----成功映射>      java属性名:aColumn
    db字段名:last_name   -----成功映射>      java属性名:lastName
    不用再在sql语句中起别名

    3. typeAliases

    注意:别名不区分大小写

    1)作用:

    别名处理器,为java type起一个别名,不需要每次都写全类名
    之前在sql映射文件中总是要写全类名

    2) typeAlias:为每一个java type起别名

    <typeAliases>
    <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="employee">
    </typeAliases>

    **alias如果不写的话,只写type,默认值就是全类名的小写employee
    **type:制定药企别名的java type的全类名

    此时sql映射配置文件中的resultType可以使用别名

    3) package:为某个包下的所有java type起别名

    当前包,以及下面所有后代包的每一个java type都起
    拥有一个默认别名:类名的小写

    下面两种写法“employee”和“Employee”均可

    注意:别名不区分大小写

    问题:包与子包均有一个类叫Employee时,会报错

    4. typeHandlers类型处理器

    可以进行多种处理,例如:
    java的string如何与db的varchar进行识别转换

    <typeHandlers>
    <typeHandler>
    </typeHandlers>

    3. plugins插件

    1)作用:

    intercept calls:拦截–实为动态代理

    2)4大插件:

    Executor:执行器
    Parameterhandler:参数处理器
    ResultSetHandler:结果集处理器
    Statementhandler:sql语句处理器

    4. environments可以配置多种环境

    1)environment:

    每一个envir可以配置一个具体的环境信息,但必须与transactionManager和dataSource两个标签同时使用

    1.1 id:

    当前环境的唯一标识,default可与其绑定

    1.2 transactionManager标签:

    type=“JDBC”
    type=“MANAGED”—JEE服务器来管理实务
    type=“实现类全类名”—自定义事务管理器—implememts TransactionFactory

    1.3 dataSource标签:

    type=“POOLED”—shiyong mybatis自带的连接池
    type=“UNPOOLED”—每一次增删改查均会从数据库中拿一次新的连接,不用连接池
    type=“JNDI”
    type=“实现类全类名”—自定义dataSource----implements DataSourceFactory

    2)default:

    动态指定使用某种环境,可以达到快速切换环境
    开发环境:使用本地数据库,进行开发调试
    测试环境:使用专门调试数据库

    <environments default="test">
    //或切换成"development"
    <environment id="test">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED"/>
    </environment>
    <environment id="development">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED"/>
    </environment>
    </environment>

    例子1:

    例子2:


    value里的内容与properties里面的内容保持一致
    以后均由spring来完成

    5. databaseIdProvider:支持多种数据库厂商

    1. property:

    为不同的数据库厂商起别名

    2. type:

    全名:VendorDatabaseIdProvider
    得到数据库厂商的标识(驱动自带),mybatis可根据不同的数据库厂商来执行不同的sql

    3. 实例:

    3.1 全局配置文件写代码:

    <databaseIdProvider type="DB_VENDOR">
    <property name="MySQL" value="mysql"/>
    <property name="ORACLE" value="oracle"/>
    <property name="SQL SERVER" value="sqlserver"/>
    </databaseIdProvider>

    3.2 导入oracle驱动到lib包下:

    在电脑中找Oracle下载的包
    Oracle–product—11.2.0—dbhome_1—jdbc—lib—ojdbc6.jar—复制到lib包下—build path

    3.3 sql映射配置文件写代码:

    3.4 修改properties文件: mysql和oracle

    3.5 bug修改—mysql映射配置文件

    3.6 mysql映射配置文件中sql语句的几种写法

    1)不带标记的(1)
    2)带标记的(2,3)
    例如,mysql中会默认加载1和2,但会自动执行有标记的2,舍弃没有标记的1

    6. mappers:!!!将sql映射配置文件注册到全局配置文件中

    每一个mapper负责注册一个sql映射配置文件

    1)注册配置文件

    1.1 resource:引用路径下的sql映射配置文件

    1.2 url:引用网络路径或磁盘路径下的sql映射配置文件

    url = “file:///var/mappers/AuthorMapper.xml”

    2)注册接口

    2.1使用sql映射文件

    2.1.1将接口Interface EmployeeMapper.java文件的全类名放在class中
    2.1.2接口文件 EmployeeMapper.java与sql映射配置文件EmployeeMapper.xml一定要
    同名

    放在同一个目录中

    2.2没有sql映射文件,使用注解

    不用再为接口写sql映射配置文件并注册进去,而是在接口中直接加入注解

    2.2.1 新建Interface

    new–Interface–“EmployeeMapperAnnotation.java”

    2.2.2 全局配置文件中使用class属性

    2.2.3 测试类MyBatisTest.java


    getMapper中写接口的类名

    3)总结

    建议写sql映射配置文件,方便抽象化和修改

    比较重要的活着比较复杂的dao接口,写sql映射配置文件(1)

    不重要活着简单的dao接口,可以使用注解方式(2)


    修改:企业版写法

    使用sql映射配置文件时——传统写法:接口与sql配置文件放在同一个目录下

    可以在conf包下新建一个包(与接口所在的包同名)
    src与conf等包都属于类路径,两个包中的文件都是lib包下的同一级中
    因此src包下的dao包与conf包下的dao包其实是同一个东西,效果同上图,只是一种好看的写法

    4)批量注册package

    <mappers>
    <package name="接口所在的包名">
    </mappers>

    此时sql映射配置文件与接口同包名,同包下,同名。
    可以使用上面的企业版写法,效果相同。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: