MyBatis设置配置

本文详细介绍了MyBatis的配置,包括核心配置文件、环境配置、属性设置、类型别名、日志配置等方面。重点讲解了数据源的选择,如POOLED数据源的效率优势,以及日志工厂的设置,如使用Log4j进行日志记录。同时,提到了映射器的注册方式和日志实现的多种选择。

MyBatis 配置

1、核心配置文件

  • mybatis-config.xml

  • MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。

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

2、环境配置(environments)

MyBatis 可以配置成适应多种环境

但每个 SqlSessionFactory 实例只能选择一种环境。

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <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>

事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

数据源(dataSource)

数据源 dbcp c3p0 druid

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 大多数 MyBatis 应用程序会按示例中的例子来配置数据源。虽然数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。

有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):

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

3、属性(properties)

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

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

编写一个配置文件

db.properties

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&charcterEncoding=UTF-8&serverTimezone=UTC
username = root
password = 123456

在核心配置文件中引入

配置文件需要放在environment上面

如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

  • 首先读取在 properties 元素体内指定的属性。
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。

4、 类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

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

也可以指定一个包名,MyBatis会在包名下面搜索需要的Java Bean

扫描实体类的包,他默认别名是为这个类的类名,首字母小写

    <typeAliases>
        <typeAlias type="com.newProject.pojo"/>
    </typeAliases>

实体类较少时用前者 可以DIY

实体类多时用后者 第二种不行

可用注解起别名

@Alias("author")
public class Author {
    ...
}

5、其他配置

6、 映射器

MapperRegistry:注册我们的Mapper文件

方式一:

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

方式二:使用class的绑定

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

注意:

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

方法三:使用扫描包进行注入绑定

<mappers>
    <package name="com.newProject.dao"/>
</mappers>

7、日志

7.1、日志工厂

如果数据库操作出现了异常,我们需要排错。日志就是最好的助手。

曾经:sout,debug

现在:日志工厂

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doe8WiTl-1602546462202)(image-20201011125128838.png)]

  • SLF4J
  • LOG4J
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING
  • NO_LOGGING

在Mybatis中具体使用哪个日志实现,在设置中设定。

STDOUT_LOGGING 标准日志输出

在mybatis核心配置中,配置自己的日志。

<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

在这里插入图片描述

7.2、Log4j

什么是Log4j?

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。
  • 我们也可以控制每一条日志的输出格式。
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
  1. 先导入Log4j的包

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    
    
  2. 配置log4j.properties

    # 将等级为DEBUG的日志信息输出到console和file的两个日志目的地,console和file定义在下面的代码中
    log4j.rootLogger=DEBUG,console,file
    
    #控制台输出的相关设置
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.Threshold = DEBUG
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern = [%c]-%m%n
    
    #文件输出的相关设置
    log4j.appender.file = org.apache.log4j.RollingFileAppender
    log4j.appender.file.File = ./log/example.log
    log4j.appender.file.MaxFileSize = 10MB
    log4j.appender.file.Threshold = DEBUG
    log4j.appender.file.layout = org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern = [%p][%d{yy-MM-dd}][%c]%m%n
    
    #日志输出级别
    log4j.logger.org.mybatis = DEBUG
    log4j.logger.java.sql =DEBUG
    log4j.logger.java.sql.Statement = DEBUG
    log4j.logger.java.sql.ResultSet = DEBUG
    log4j.logger.java.sql.PreparedStatement = DEBUG
    
  3. 配置log4j为日志的实现

    <settings>
        <!--Log4j-->
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    
  4. Log4j的使用:直接测试运行原来的查询

在这里插入图片描述

简单使用

  1. 在使用Log4j类中,导入包

    import org.apache.log4j.Logger;
    
  2. 生成日志对象,加载参数为当前类的Class

    static Logger logger = Logger.getLogger(UserTest.class);
    
  3. 日志级别

    logger.info("info:进入了testLog4j方法");
    logger.debug("debug:进入了testLog4j方法");
    logger.error("error:进入了testLog4j方法");
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值