• 11_关于SqlMapperConfig.xml


    【简述】

    SqlMapConfig.xml是Mybatis的全局配置文件,配置内容如下:

    1.properties---------属性

    2.settings-----------全局配置参数

    3.typeAliases--------类型别名

    4.typeHandlers------类型处理器

    5.objectFactory-----对象工厂

    6.plugins------------插件

    7.environments-----环境集合属性对象

        environments ---------环境子属性对象

        transactionManager----------事务管理

           dataSource-------------------数据源

    8.mappers ---------映射器

    (1)properties属性

    需求:

    将数据库中的连接参数单独配置在db.properties中,只需要在sqlMapConfig.xml中加载该db.properties配置文件。

    在sqlMapConfig.xml中就不需要对数据库连接参数硬编码。

     配置在db.properties中的优点:方便对参数进行统一的管理,其他的xml文件可以引用该db.properties

    原先的【sqlMapConfig.xml】数据库相关的配置如下:

    修改之后的【sqlMapConfig.xml】如下,注意不要忘了<properties resource="db.properties"></properties>

     

    修改之后 在【db.properties】配置文件内容如下

    【MyBatis加载属性的顺序】

    1.在properties元素体内定的属性首先被加载。

    2.然后会读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性(所以命名要注意)

    3.最后会读取parameterType传递的属性,它会覆盖已读取的同名属性。

    【注意】

    不要在<properties>元素体内添加任何属性值,只将属性值定义在db.properties文件中。

    在db.properties文件中定义属性文件名要有一定的特殊性,例如jdbc.xxx.xxx

     (2)settings全局参数配置

    MyBatis框架在运行时可以调整一些运行参数

    比如:开启二级缓存、开启延迟加载。。。。

    (3)typeAliases(别名)(学习重点!)

    需求:

    在mapper.xml中,定义了很多的statement

    【默认的一些别名的源码】

    registerAlias("string", String.class);
    registerAlias("byte", Byte.class);
    registerAlias("long", Long.class);
    registerAlias("short", Short.class);
    registerAlias("int", Integer.class);
    registerAlias("integer", Integer.class);  //可以发现,parameter="int"或者parameterType="integer"最后都会指向Integer
    registerAlias("double", Double.class);
    registerAlias("float", Float.class);
    registerAlias("boolean", Boolean.class);
    registerAlias("byte[]", Byte[].class);
    registerAlias("long[]", Long[].class);
    registerAlias("short[]", Short[].class);
    registerAlias("int[]", Integer[].class);
    registerAlias("integer[]", Integer[].class);
    registerAlias("double[]", Double[].class);
    registerAlias("float[]", Float[].class);
    registerAlias("boolean[]", Boolean[].class);
    registerAlias("_byte", byte.class);
    registerAlias("_long", long.class);
    registerAlias("_short", short.class);
    registerAlias("_int", int.class);
    registerAlias("_integer", int.class);
    registerAlias("_double", double.class);
    registerAlias("_float", float.class);
    registerAlias("_boolean", boolean.class);
    registerAlias("_byte[]", byte[].class);
    registerAlias("_long[]", long[].class);
    registerAlias("_short[]", short[].class);
    registerAlias("_int[]", int[].class);
    registerAlias("_integer[]", int[].class);
    registerAlias("_double[]", double[].class);
    registerAlias("_float[]", float[].class);
    registerAlias("_boolean[]", boolean[].class);
    registerAlias("date", Date.class);
    registerAlias("decimal", BigDecimal.class);
    registerAlias("bigdecimal", BigDecimal.class);
    registerAlias("biginteger", BigInteger.class);
    registerAlias("object", Object.class);
    registerAlias("date[]", Date[].class);
    registerAlias("decimal[]", BigDecimal[].class);
    registerAlias("bigdecimal[]", BigDecimal[].class);
    registerAlias("biginteger[]", BigInteger[].class);
    registerAlias("object[]", Object[].class);
    registerAlias("map", Map.class);
    registerAlias("hashmap", HashMap.class);
    registerAlias("list", List.class);
    registerAlias("arraylist", ArrayList.class);
    registerAlias("collection", Collection.class);
    registerAlias("iterator", Iterator.class);
    registerAlias("ResultSet", ResultSet.class);

    【针对自己定义的pojo类型的别名】

    在【sqlMapper.xml中】,针对单个别名的定义

    在【sqlMapper.xml中】,针对批量别名的定义(批量的方式较为常用

    指定包名,MyBatis自动扫描包中的pojo类,自动定义别名,别名就是类名(首字母大小写均可)

    (4)typeHandlers(类型处理器)

     MyBatis中通过typeHandlers完成jdbc类型和java类型的转换。

    通常情况下,mybatis提供的类型处理器满足日常需求,无需自定义。

    (5)mappers(映射配置)

    1.例子【sqlMapConfig.xml】中通过resource加载单个映射文件的方式:

    2.通过mapper接口加载单个映射文件

    需要遵循一些规范:需要将XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一个目录中

    上边的规范前提:使用mapper代理方法

     3.批量加载

    批量加载mapper接口的包名。myBatis自动扫描包下边的所有的mapper接口进行加载

    遵循的规范:需要将XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一个目录中

    上边的规范前提:使用mapper代理方法

  • 相关阅读:
    解决import tensorflow时发生DLL错误
    解决Docker Container in WSL2 发生DNS错误无法访问网络
    使用过vmware 再开启wsl2闪退处理
    70. Climbing Stairs. Leetcode
    miredo on mac
    解决Runtime Error on LeetCode
    HttpClient Get与Post请求数据
    Ubuntu16.04.1 安装MyCat
    CenterOS中安装Redis及开机启动设置
    ASP.ENT Core Linux 下 为 donet创建守护进程(转载)
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5700664.html
Copyright © 2020-2023  润新知