zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14198956.html
Copyright © 2011-2022 走看看