• 4、[重点]Mybatis配置解析


    1、核心配置文件:mybatis-config.xml

    configuration(配置)

     2、环境environments

    Mybatis可以配置多套环境、

    要注意的是:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一 种环境。

    Mybatis默认的事务管理是:JDBC   默认的连接池是POOLED

        <!--环境:可以配置多套-->
        <environments default="development">
            <environment id="development">
                <!--事务管理-->
                <transactionManager type="JDBC"/>
                <!--数据源-->
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url"
                              value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>

    3、属性(properties)

    这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置

               <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url"
                              value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="zhixi158"/>
                </dataSource>

    也可以编写properties配置文件进行读取:

    db.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&;useUnicode=true&;characterEncoding=UTF-8
    username=root
    password=zhixi158

    上面代码即可写成-->这样要修改只需要修改properties中的代码了:

    <!--引入配置文件-->
        <properties resource="db.properties" />
        <!--环境:可以配置多套-->
        <environments default="development">
            <environment id="development">
                <!--事务管理-->
                <transactionManager type="JDBC"/>
                <!--数据源-->
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}" />
                    <property name="url"
                              value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>

    如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

    • 首先读取在 properties 元素体内指定的属性。
    • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
    • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。

    得出:

      方法参数传递的属性 > resource/url 属性中指定的配置文件 > properties 元素中指定的属性

    4、类型别名(typeAliases)

    • 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写

    第一种使用方式:

      原来在接口的实现类上:使用全限定名称 :resultType="com.zhixi.pojo.User"

    <!--给实体类起别名-->
        <typeAliases>
            <typeAlias type="com.zhixi.pojo.User" alias="User"></typeAlias>
        </typeAliases>

      现在再写:

      <select id="getUserList" resultType="User">
            /*查询所有用户*/
            select * from mybatis.user;
        </select>

    第二种使用方式:

    指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,也就是实体类

    在没有注解的情况下,会使用 实体类的首字母小写的非限定类名来作为它的别名。 比如 com.zhixi.pojo的别名为 user

        <!--给实体类起别名-->
        <typeAliases>
            <package name="com.zhixi.pojo"/>
        </typeAliases>

    使用:

        <!--不需要再写接口的实现类,在配置文件里写sql即可-->
        <select id="getUserList" resultType="user">
            /*查询所有用户*/
            select * from mybatis.user;
        </select>

    第三种:在实体类上使用注解:

     

    注意的是优先级:(typeAlias = @Alias)> package 

    就是说:

      typeAlias 和 @Alias() 可以同时存在.并且都可以使用

      typeAlias 和 package 可以同时存在,并且都可以使用

      package和@Alias() 同时存在,package不会生效

    5、映射器(mappers)

    第一种:【推荐】

      找不到mybatis配置文件的情况,需要在pom.xml中添加build

    <!-- 使用相对于类路径的资源引用 -->
    <mappers>
      <mapper resource="com/zhixi/dao/UserMapper.xml" />
    </mappers>

    第二种:【推荐】

      放在resources目录下(新建一个mapper文件夹):

    <!-- 使用相对于类路径的资源引用 -->
    <mappers>
      <mapper resource="mapper/UserMapper.xml" />
    </mappers>

    第三种:通过类

    需要注意的是名字要一样

        <mappers>
            <mapper class="com.zhixi.dao.IUserDao" />
        </mappers>
  • 相关阅读:
    c中NULL,'\0'和0之间的区别. (the difference between NULL,'\0' and 0 in c)
    python 解析xml文件python parse xml.
    mysql升级 ,MySQL Error: #1558 Column count of mysql.proc is wrong. Expected 20, found 16.
    文献随笔15
    文献笔记11
    文献笔记16
    文献笔记13
    文献笔记17
    文献笔记20
    文献笔记19
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14198956.html
Copyright © 2020-2023  润新知