Mybaits配置相关

1.核心配置文件,官网截图圈住的是要掌握的。

  

 

2.环境配置-----environments

 

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

  以下两套环境,根据environment的id进行区分。environments的默认值是test1,立即选中的是环境test1。

  

  在学习mybaits+Spring的过程中,默认事务管理器是JDBC,默认数据源是POOLED

3.属性-----properties

  使用properties来使用配置文件中的配置,这些配置可以动态替换。【db.properties】

  编写一个配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybaits?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456

  使用properties标签将这个配置文件引入。这个标签的【优先级最高】即:这个标签不能乱写,得写在配置文件中的最上方

  引入后在对应位置使用${键属性}即可

   

 

 

   当然在properties标签中也可以自定义键值对~【属性名相同时候,优先使用配置文件中的属性】

  <properties resource="db.properties">
         <property name="hello" value="world"/>
     <property name="password" value="errpassword"/>
  </properties>

4.类型别名------typeAliases

  类型别名是什么,为什么使用别名。

  类型别名可为 Java 类型设置一个缩写名字。在接口配置文件中,参数类型,返回值类型要包含java代码的全部包名,太冗余了,可以在【核心配置】文件中取别名。

  

  

  类型别名也可以扫描一个具体的包名。包里面不能重复类。所以别名就可以是这个类的小写名称。

  包里存在多个类时,直接用包名的方式进行类型别名,配置文件中直接写类名的小写就行;

  存在常见的Java 类型内建的类型别名。【官网文档】

  

  区别:

    第一种可以自定义别名;

    第二种不能自定义别名,就是包里面的类名(没有注解的情况下)

      第二种代码中使用注解的情况下,这个别名是注解中的【yonghu】注解值,原先的【user】就找不到了

        @Alisa("yonghu")

        public class User(){

          ...

        }

 5.setting------设置

   及其重要的设置。目前先记住3个  开启缓存,懒加载,日志

   

 

 

 6.mapper-----映射器

  用于配置文件用于关联接口配置文件的。注册绑定。

  1.resource

    <mappers>
        <mapper resource="com/chen/dao/UserMapper.xml"/>
    </mappers>

  2.Class

    不能随便使用。

    1.接口UserMapper的和它配置文件UserMapper.xml必须同名

    2.接口和配置文件必须在同一个包下

    满足以上条件才可以使用Class这种方法

 

    <mappers>
        <mapper Class="com.chen.dao.UserMapper"/>
    </mappers>

 

  3.package  将整个包都注册

    这个也不能随便使用。

    1.接口UserMapper的和它配置文件UserMapper.xml必须同名

    2.接口和配置文件必须在同一个包下

    满足以上条件才可以使用Class这种方法

 

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

7.作用域和生命周期

  作用域和生命周期非常重要,错误的话会导致很严重的【并发问题】

   begin->mybaits-config.xml->SqlSessionFactoryBuilder->SqlSessionFactory->SqlSession->Mapper.xml【实现增删改查】->end

   SqlSessionFactory一旦创建SqlSessionFactoryBuilder就没用了。

           SqlSessionFactory

    一旦创建,在运行期间一直存在,没用任何理由丢弃它或者创建另外一个实例。可以看做一个连接资源池~

     全局

     最简单的就是单例模式

      SqlSession

     每个线程都应有SqlSession,可以理解为线程到连接池的一个请求

     不是安全的,用完之后最好关闭,否则资源被占用。

   Mapper:

     每一个Mapper都可以看作是一个业务。

   

     

  

 

posted @ 2021-11-03 23:30  qwedfrgh  阅读(36)  评论(0)    收藏  举报