Mybatis学习笔记(三)——Mybatis的配置(Mybatis-config.xml)

news/2024/7/23 10:50:00 标签: mybatis, 学习, 笔记

Mybatis学习笔记(三)——Mybatis的配置(Mybatis-config.xml)

传送门:Mybatis中文网——配置

Mybatis配置文档的顶层结构:

  • configuration(配置)
    • properties(属性)
    • settings(设置)
    • typeAliases(类型别名)
    • objectFactory(类型处理器)
    • plugins(插件)
    • environments(环境配置)
      • environment(环境变量)
      • transactionManager(事务管理器)
      • dataSource(数据源)
    • databaseIdProvider(数据库厂商标识)
    • mappers(映射器)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"/>
    <!--将_下划线自动映射为驼峰em_pname==emPname-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    <typeAliases>
        <package name="com.zxm.mybatis.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/zxm/mybatis/ParameterMapper.xml" />
        <mapper resource="com/zxm/mybatis/SelectMapper.xml" />
        <mapper resource="com/zxm/mybatis/SQLMapper.xml" />
    </mappers>
</configuration>


一、属性(Properties)

第一种使用方法(不创建配置文件jdbc.properties)

在这里插入图片描述

<properties>
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
</properties>

< dataSource>连接数据库:

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

第二种方法(新建jdbc.properties文件)

在这里插入图片描述

jdbc.properties配置文件内容:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

mybatis-config.xml中添加代码

<properties resource="jdbc.properties" />
<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
</environments>

三、设置(setting)

使用setting的格式:name< ---- >value

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

常用setting设置:(这里只列举几个常用配置,更多详细配置可以访问Mybatis中文网)

  1. 自动映射mapUnderscoreToCamelCase

是否开启自动驼峰命名方式,默认值false不开启。
图一,数据库字段名有下划线emp_name
在这里插入图片描述

如果表中有字段名为emp_name(有下划线),如果打开自动驼峰命名,设置为true,那该属性在项目中名为empName,相当于把下划线和后一个字母转化为该字母的大写,这个设置可以解决数据库字段名emp_name与项目实体类属性名empName不一致的情况。

具体代码设置:

<setting name="mapUnderscoreToCamelCase" value="true">
  1. 自动映射autoMappingBehavior
    具体代码设置:
<setting name="autoMappingBehavior" value="FULL" />

指定Mybatis应该如何自动映射列(数据表中)到字段或属性(项目实体类中)
NONE:取消自动映射
PARTIAL:只会自动映射。没有定义嵌套结果和映射结果集
FULL:会自动映射任意复杂的结果集

  1. 缓存cacheEnabled

该配置影响所有映射器中配置缓存的全局开关,默认值为true

具体代码设置:

<setting name="cacheEnabled" value="true" />
  1. 级联lazyLoadingEnabled

延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态,默认值为false

具体代码设置:

<setting name="lazyLoadingEnabled" value="true" />
  1. 级联aggressiveLazyLoading

当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载,版本3.4.1(不包含)之前true,之后false

具体代码设置:

<setting name="aggressiveLazyLoading" value="true">
  1. defaultFetchSize
    设置数据库驱动程序默认返回的条数限制,此参数可以重新设置

具体代码设置:

<setting name="defaultFetchSize" value="100" />

神魔是OOM内存溢出问题?
程序申请内存过大,虚拟机无法满足我们,然后自杀了。


http://www.niftyadmin.cn/n/4981516.html

相关文章

js定位到元素底部

文字的一行一行添加的&#xff0c;每次添加要滚动条自动定位到元素底部 <div class"An">//要父元素包裹&#xff0c;父元素设置max-height&#xff0c;overflow啥的<div class"friendly_pW"></div></div>//添加文字时找子元素的高…

一步到位,详解 Milvus 2.3

期待已久的 Milvus 2.3 大版本终于在上周发布&#xff01; 此次版本更新内容丰富、亮点多多&#xff0c;希望为各位开发者解决现存问题&#xff0c;并在丰富使用场景的基础上&#xff0c;最大限度提升使用体验。 Milvus 2.3 版本的更新包括&#xff1a;支持 GPU、支持 Arm64、Q…

C++学习笔记总结练习:C内存分配与初始化

1 alloc alloc是向栈申请内存&#xff0c;因此无需释放。 功能&#xff1a;返回一个指向n个连续字符存储单元的指针。利用afree释放已经分配的存储空间&#xff0c;以便以后使用。 函数原型: char *alloc(int n); 2 malloc(memeory allocation,动态内存分配) malloc分配的…

工地扬尘监测系统 yolo

工地扬尘监测系统算法能够通过yolo网络框架模型&#xff0c;工地扬尘监测系统算法自动对区域的扬尘、粉尘颗粒进行实时监测识别&#xff0c;并及时进行预警&#xff0c;有效防止扬尘污染。Yolo意思是You Only Look Once&#xff0c;它并没有真正的去掉候选区域&#xff0c;而是…

关于#include<bits/stdc++.h>的说明

关于#include<bits/stdc.h>的说明 在看C/C竞赛题时&#xff0c;经常看到#include<bits/stdc.h>。什么意思呢&#xff1f; 有人称<bits/stdc.h>为万能头文件。其 优点&#xff1a;   1、在竞赛中节约时间。   2、减少了编写所有必要头文件的工作量。  …

C语言 实现atoi函数

实现类似atoi函数&#xff0c;把字符串“123456”转换成数值123456 函数int atoi(char *str); 使用ubuntu进行多文件编译&#xff08;main.c head.h test.c&#xff09; head.h&#xff08;预处理&#xff09; #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.…

shouldComponentUpdate有什么作用?

触发时机 当props或state发生变化时&#xff0c;shouldComponentUpdate() 会在渲染执行之前被调用。 作用 根据shouldComponentUpdate()的返回值&#xff0c;判断react组件的输出是否受当前state或props更改影响。默认行为是state每次发生变化组件都会重新渲染。 shouldCompo…

C++day6(多态实现动物园的讲解员和动物表演的相关介绍、用函数模板实现不同数据类型的交换功能)

1.比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&#xff0c;他会为每种动物表演做简单的介绍。 在这个场景中&#xff0c;我们可以将动…