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)

第一种:

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

第二种:通过class

需要注意的是包名以及文件名字要一样:

第三种:通过绝对路径file

第四种:按照包名

标签属性:自动获取生成的主键值

  比如在数据库操作中有一个这么需求,在插入用户的时候,同时插入所在部门表中的用户ID

前提是:MYSQL数据库设置了主键自增,这样才能够获取到生成的主键值

useGeneratedKeys="true":使用自动生成的主键值
keyProperty="id":指定生成的主键值赋值给对象的哪个属性。这个就表示将主键值赋值给Act对象的id属性。

 

这样就可以获取到了自动生成的主键值:

 

posted @ 2020-12-27 21:49  Java小白的搬砖路  阅读(225)  评论(0编辑  收藏  举报