2、核心配置文件mybatis-config.xml【笔记】

配置解析

(真正要掌握的东西,就是配置文件里面的配置信息)

核心配置文件 mybatis-config.xml
配置文件会影响mybatis的行为设置和属性信息

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

在配置文件里面添加这些配置,要按顺序来添加,因为约定大于配置,不然会报错

环境配置

  • 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

img

  • POOLED是数据库连接的类型,不止一种方式,这个是连接池
  • POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。

属性

可以用这个来优化配置文件,在外部配置数据库信息

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

在核心配置文件中映入

//引入外部配置文件
<properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties>
  • 可以直接引入外部文件
  • 可以在其中增加一些属性配置
  • 如果两个文件有同一个字段,优先使用外部配置文件

类型别名

注:这个标签可以给实体类起别名,在调用实体类的时候就不需要再用全限定类名

有两种方式,一种是扫描包,一种是自定义

类型别名可为

<!--给实体类起别名-->
<typeAliases>
    <typeAlias type="com.q.pojo.User" alias="User"/>
    <!-- 使用时候用类的名字代替全限定名,大小写都行-->
</typeAliases>

也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean(这个比较好用)
<!--给实体类起别名-->
<typeAliases>
<!--使用包的形式-->
    <package name="com.q.pojo"/>
</typeAliases>

每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。

实体类少就用第一种,可以div类别名

实体类多用指定包名,如果使用注解的方法,那么就要在实体类上面添加注解,然后 根据注解的来使用别名(写注解很难维护)

设置(settings)

【日志就是在这里写的】

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

img

img


映射器(mappers)

【写在最后,用于注册】 也就是工厂去找一些mapper业务放进mybatis容器里面给工人sqlsession去执行

  • 注册mapper,映射sql语句,告诉mybatis到哪里去找映射文件
  • 有两种方式配置映射文件 一:使用类路径;二:使用包扫描

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等

方式一:使用类路径

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

方式二:使用包扫描注入绑定

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

注意:重要!!!

  • 使用包扫描的时候,要注意接口和它的Mapper配置文件同名 【名字要一样,放在同一个包里面】

  • 接口和Mapper配置文件必须在同一个包下【这个很重要,否则扫描不到】

这些配置会告诉 MyBatis 去哪里找映射文件,剩下的细节就应该是每个 SQL 映射文件了。


优化!!!

注意:

  • 将数据库配置文件外部引入

    db.properties

    jdbc.Driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSl=false&;useUnicode=true&;characterEncoding=UTF-8
    jdbc.username=root
    jdbc.password=abcde
    
  • 实体类别名

      <!--优化1,引入外部配置文件-->
        <properties resource="db.properties"/>
    
        <!--优化2,给实体类起类型别名-->
        <typeAliases>
            <!--        <typeAlias type="com.q.pojo.User" alias="User"/>-->
            <!-- 使用时候用类的名字代替全限定名,大小写都行-->
            <!--使用包的形式 这个好用,现在使用这个,调用实体类的时候,写大小字母都可以调用-->
            <package name="com.q.pojo"/>
        </typeAliases>
    
  • 保证UserMapper接口和UseMapper.xml文件改为一致,并且放到一个包下面

    image-20210621011930514


生命周期和作用域

img

自己理解:

  • SqlSessionFactoryBuilder就是工厂的创造者,创造完了就消失了,用局部变量进行储存。

  • SqlSessionFactory就是工厂,里面很多接口等着会话过来连接,是一直存在的。最佳作用域是应用作用域。

  • sqlSession就相当于是一个会话,一个顾客,去连接请求。这个实例不是线程安全的,不能被共享,所以最佳的作用域是请求或者方法作用域。用完之后关闭,否则资源占用,就好像接口一共10个,占着不释放就会没接口

img

img

**这里面

这里面的每一个Mapper就代表具体的业务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值