Mybatis学习笔记:class-02

4 配置解析

4.1 核心配置文件

  • mybatis-config.xml
  • MyBatis 的配置文件包含了会深深影响 Mybatis 行为的设置和属性信息
    属性信息在核心配置文件中有如下的先后顺序,添加配置时必须按照顺序

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)

4.2 环境配置 environment

Mybatis 可以同时配置成适应多种环境。
尽管可以配置多个环境,但是每个 SqlSessionFactory实例只能选择一种环境
需要学会使用配置多套运行环境
MyBatis 默认的事务管理器就是 JDBC,连接池 POOLED
下面环境default=“testEnviroment” id="testEnviroment"时,数据库密码是设置错误的,在测试时,会报错。
将default=“testEnviroment” 改为default=“testEnviroment” ,测试正常。

   <environment id="development">
       <transactionManager type="JDBC"/>
       <dataSource type="POOLED">
           <property name="driver" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/mybatis1?useSSL=true&amp;userUnicode=true&amp;characterEncoding=UTF-8"/>
           <property name="username" value="root"/>
           <property name="password" value="123456"/>
       </dataSource>
   </environment>

   <!--配置多套环境-->
   <environment id="testEnviroment">
       <transactionManager type="JDBC"/>
       <dataSource type="POOLED">
           <property name="driver" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=true&amp;userUnicode=true&amp;characterEncoding=UTF-8"/>
           <property name="username" value="roots"/>
           <property name="password" value="123456"/>
       </dataSource>
   </environment>
</environments> 

4.3 属性properties

可以通过properties属性来实现引用配置文件

属性在外部进行配置,便于动态替换数据库连接信息【db.properties】

1.编写一个配置文件 db.properties

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

2.在核心配置文件中引入上面的配置文件 注意先后顺序

<!-- 引入配置文件db.properties-->
<properties resource="db.properties">
    <property name="password" value="123456"/>
</properties>

3.测试使用上述配置文件来配置数据库信息并测试4.2中的多环境配置

<!-- 测试db.properties-->
<environment id="testDbProperties">
    <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>

将default=“testEnviroment” 改为default=“testDbProperties” ,测试正常。
注意:上面三个位置都可以配置属性(此处为数据库连接的密码),在测试时,数据可以连接使用的密码,先后顺序优先使用外部配置文件的。

4.4 类型别名 typeAliases

类型别名可为Java类型设置一个缩写名字。它仅用于XML配置
意在降低冗余的全限定类名书写。
1.给实体类取别名
​ xml中定义类型别名后:

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

​ 查询语句可以做相应的修改:

<!--  查询全部-->
<select id="getUserList" resultType="User">    
    select * from mybatis1.user
</select>

2.也可以指定一个包,在每一个包com.serene.pojo中的Java Bean,在没有注解的情况下,会使用Bean的首字母小写的非限定类名来作为它的别名。 比如 com.serene.pojo.User 的别名为 user,;若有注解,则别名为其注解值

<!-- 类型别名-->
<typeAliases>
   <!--可以给实体类起别名-->
   <typeAlias type="com.serene.pojo.User" alias="User"/>
   <!-- 指定一个包-->
   <package name="com.serene.pojo"/>
</typeAliases>
<!--  查询全部-->
<select id="getUserList" resultType="user">
    select * from mybatis1.user
</select>

在实体类比较少的时候,使用第一种方式。

如果实体类比较多的时候,建议用第二种扫描包的方式。

第一种可以DIY别名,第二种不行,如果非要修改,需要在实体类上增加注解。

3.使用注解取别名,实体类中User.java

@Alias("zhujie")
public class User {
    ......
}
<!--  查询全部-->
<select id="getUserList" resultType="zhujie">
    select * from mybatis1.user
</select>

5 设置 Settings

这是MyBatis中极为重要的调整设置,他们会改变MyBatis的运行时行为。
在这里插入图片描述

6 其他配置 了解即可

  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins 插件
    • mybatis-generator-core
    • mybatis-plus
    • 通用mapper

7 映射器 Map

MapperRegistry:注册绑定我们的Mapper文件

方式一:【推荐使用】

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

方式二:使用class文件绑定注册

<!-- 每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
    <!--
        <mapper resource="com/serene/dao/UserMapper.xml"/>
        -->
    <!-- 使用class文件绑定注册-->
    <mapper class="com.serene.dao.UserMapper" />
</mappers>

注意点:

	* 接口和他的Mapper配置文件必须同名
	* 接口和他的Mapper配置文件必须在同一个包下

方式三:使用包扫描进行注入

<mappers>
    <!--
        <mapper resource="com/serene/dao/UserMapper.xml"/>
        -->
    <!-- 使用class文件绑定注册
        <mapper class="com.serene.dao.UserMapper" />
        -->
    <!-- 使用包扫描进行注册 -->
    <package name="com.serene.dao" />
</mappers>

8 作用域和生命周期

生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题

在这里插å¥å›¾ç‰‡æè¿°

SQLSessionFactoryBuilder:

  • 一旦创建了SqlSessionFactory,就不在需要它了
  • 局部变量

SQLSessionFactory:

  • 可视为 数据库连接池
  • SqlSessionFactory一旦被穿件就应该在应用的运行期间一直存在,没有任何理由丢弃或重新创建一个实例
  • SqlSessionFactory的最佳作用域就是应用作用域(ApplicationContext)。
  • 最简单的就是使用单例模式或者静态单例模式。

SqlSession:

  • 连接到连接池的一个请求
  • SqlSession的实例不是线程安全的,因此不能被共享,所以他的最佳的作用域是请求或者方法作用域。
  • 用完之后赶紧关闭,否则资源被专用!

在这里插å¥å›¾ç‰‡æè¿°

该部分代码对应 Mybatis-02:class-02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值