前言

mybatis的核心配置文件(mybatis-config.xml),比如配置jdbc连接信息,注册mapper等等,我们需要对这个配置文件有详细的了解。

区分config.xml和XxMapper.xml的区别:

  • config.xml是用来配置mybatis,他是总配置,配置Mapper只是他的功能之一。在配置Mapper方面,目前我用到的<mapper>是用来设置mapper.xml的路径的,<typeAliases>是用来简写XXType的
  • XxMapper是用来实现XxMapper接口的,用来写sql语句的。

本文仅列出一些常用的属性。
参考文档:xml配置文档

一、属性<properties>

1、myBatis.xml配置文件

  • 这儿的配置属性,指的是在resource文件夹下面的myBatis.xml中的<properties>
               <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=""/>
               <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  • property 的value,可以从外部文件读取。演示从外部读取
    新建外部文件,src/main/resources/jdbc.properties
#属性名是自定义的

#老版本驱动是com.mysql.jdbc.Driver,我的项目使用旧的会报错
jdbc.driver=com.mysql.cj.jdbc.Driver

#等号前后不要加空格
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8

jdbc.username=root
jdbc.password=root
  • 使用value="${username}"这样的形式,读取properties中的username的值
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>

2、properties文件

  • 配置在resource文件夹下面
  • 文件后缀为.properties,不能是property
  • username=hsp的形式连接。等号前后不加“引号”;也不要加空格,避免引用带了空格,导致出错;也不要用“;”分号结尾
  • 为了能使用properties,需要在mybatis.xml文件中添加properties的位置。保存在默认resources路径下。
<configuration>
   <!--设置外部引入文件的路径-->
   <properties resource="jdbc.properties"/>
</configuration>
  • 更改为从外部引用后,出现的第一个错误就是,添加的中文信息出现乱码了。
    • 猜测是“&amp;”换了位置后不能正常解析,统一改为&后,能正常录入中文了。(有效)
    • 可能是ISO-8859-1编码的原因,因为把&amp;拆开了,把分号";"当作截断符了。所以也可以调整编码方式(无效)
      在这里插入图片描述

3、pom.xml文件

  • 配置在工程目录下面
  • 代码运行后,文件都是从target目录下读取的,为了build项目时,生成target目录下的properties,需要在pom.xml中配置:
<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
</build>

二、全局参数定义<settings>

  • logImpl,配置MyBatis自带的日志输出-查看原生的sql
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

三、类型别名/别名处理器<typeAliases>

  • 类型别名可设置为 Java 类型设置一个短名字SimpleName。
    <!--配置别名。放在配置的靠前的位置-->
    <typeAliases>
        <typeAlias type="com.stein.entity.Monster" alias="Monster" />
    </typeAliases>

然后在Mapper.xml文件里面,就可以使用别名了

    //<update id="updateMonster" parameterType="com.stein.entity.Monster">
    <update id="updateMonster" parameterType="Monster">
  • 也可以指定一个包名, 这样在同一个包下,如果有多个别名需要配置,就会简化很多
    比如:
    com.stein.entity.Monster
    com.stein.entity.User
    com.stein.entity.Monk
    <typeAliases>
        <!--
            如果一个包下有很多的类,我们可以直接引入包,这样
            该包下面的所有类名,可以直接使用
        -->
        <package name="com.stein.entity"/>
    </typeAliases>

四、类型处理器<typeHandlers>

  • MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。
  • 时间格式(年-月-日 时:分:秒),在java端可以设置Date格式,在DB端可以设置成TimeStamp(推荐)或者datetime。

五、环境配置<environments>

  • 1.resource注册Mapper文件:XXXMapper.xml文件(常用,使用过)
  • 2.class:接口注解实现
  • 3.url:外部路径,使用很少,不推荐,
  • 4.package方式注册:
    并测试

注意事项

Mybatis对config.xml的配置顺序有要求,参照文档的顺序排列,否则会报红,而且运行会出错。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐