初学Mybatis之配置解析

MyBatis 中文网配置教程

mybatis-config.xml

环境配置(environments)

尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境

可以有多个 enviroment,但是 enviroments default(默认)只能指定一个

<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 type="JDBC">

 这个配置直接使用了 JDBC 的提交和回滚,它依赖从数据源获得的连接来管理事务作用域

 MyBatis 中有两种类型的事务管理器:JDBC、MANAGED

数据源配置:<dataSource type="POOLED">

数据源的作用就是连接数据库(比如 dbcp、c3p0、druid、hikari)

 MyBatis 中有三种内建的数据源类型:

UNPOOLED(没有连接池)、POOLED(连接池)、JNDI(正常连接)

池:用完可以回收

POOLED 能使并发 Web 应用快速响应请求

MyBatis 默认事务管理器是 JDBC,默认连接池是 POOLED

属性(properties)

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

这些属性可以在外部进行配置,并可以进行动态替换

既可以在典型的 Java 属性文件中(db.properties)配置这些属性,也可以在 properties 元素的子元素中设置

在 resources 目录下创建 db.properties 文件

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

mybatis-config.xml:

引入外部配置文件  <properties resource="db.properties"/>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- configuration核心配置文件 -->
<configuration><!-- 引入外部配置文件 --><properties resource="db.properties"/><environments default="development"><environment id="development"><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></environments><!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册 --><mappers><mapper resource="com/demo/dao/UserMapper.xml"/></mappers></configuration>

可以直接引入外部文件,也可以在其中增加一些属性配置

如果两个文件有同一个字段,优先使用外部配置文件

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字

它仅用于 XML 配置,降低冗余的全限定类名书写

给实体类起别名,resultType 就可以使用别名

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

 还可以通过扫描包的形式使用别名

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

    <!-- 扫描实体类的包 --><typeAliases><package name="com.demo.pojo"/></typeAliases>

扫描包的情况下,可以在实体类上增加注解指定别名,@Alias()

设置(settings)

MyBatis 中极为重要的调整设置,会改变 MyBatis 的运行时行为

<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

映射器(mappers) 

告诉 MyBatis 到哪去找映射文件

方法一:使用 resource 绑定注册

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

方法二:使用 class 绑定注册

    <mappers><mapper class="com.demo.dao.UserMapper"/></mappers>

注意:接口和 Mapper 配置文件必须同名且在同一个包下

方法三: 使用扫描包绑定注册

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

注意:接口和 Mapper 配置文件必须同名且在同一个包下 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转springboot之springboot启动原理

启动原理 注意&#xff1a;使用版本为spring-boot-2.2.2.RELEASE springboot启动的入口肯定是main方法啦&#xff0c;那就从main方法入口走起来看看是如何进行启动的 SpringBootApplication public class ConsulApp {public static void main(String[] args) {// 调用SpringAp…

动态规划题目:单词拆分/三角形最小路径和 - leetcode

动态规划思想 / 步骤 &#xff1a; 先将 当前要求 总结成一个 精炼的 小问题 &#xff0c; 然后 将 求解题目 转换为 求解N个 小问题 &#xff0c; 每个小问题的 求解过程相同 &#xff0c;但是 过程涉及 的 数据 是不同的 &#xff0c; 例如第三个 小问…

c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令

配置FTP服务 一.前言 博主的环境是阿里云服务器&#xff0c;操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作&#xff0c;同时为了简化操作我将开放同一个云服务器的不同端口&#xff0c;让它同时充当服务端和客户端&#xff0c;大家如果想测试效果更好且…

[web]-反序列化-base64

看到源码 <?php error_reporting(0); class A {public $contents "hello ctfer";function __toString(){if ((preg_match(/^[a-z]/i,$this->contents))) {system("echo $this->contents");return 111;}else{return "...";}} }functi…

Zookeeper集群中节点之间数据是如何同步的

1.首先集群启动时&#xff0c;会先进行领导者选举&#xff0c;确定哪个节点是Leader&#xff0c;哪些节点是Follower和Observer 2.然后Leader会和其他节点进行数据同步&#xff0c;采用发送快照和发送Diff日志的方式 3.集群在工作过程中&#xff0c;所有的写请求都会交给Lead…

ImageView实现原理分析

ImageView 是 Android 中用于显示图片的一个基本视图组件。它继承自 View 类&#xff0c;并且可以用来展示静态的图像资源&#xff0c;如位图、动画 GIF、矢量图形等。下面我们将结合源码分析 ImageView 的实现原理。 1. 构造方法与初始化 ImageView 的构造方法和其他 View 子…

WPF串口通讯程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using HardwareCommunications; using System.IO.Ports; using System.Windows;namespace PortTest {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainW…

怀庄之醉是勾兑酒吗?

关于“怀庄之醉是否是勾兑酒”的问题&#xff0c;需要从多个角度进行分析。 勾兑酒在白酒生产中是一个广泛存在的工艺过程&#xff0c;它并非贬义词&#xff0c;而是指将不同口味、不同生产时间、不同度数的纯粮食酒&#xff0c;或固态法白酒与液态法白酒、食用酒精等&#xff…

软件缺陷(Bug)、禅道

目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题&#xff08;如&#xff1a;错误、异常等&#xff09;&#xff0c;都叫软件的缺陷&#xff0c;简称bug。 软件缺…

如何选择海洋船舶用总线NMEA 2000连接器

NMEA 2000连接器概述 NMEA 2000连接器是现代船舶通信系统中不可或缺的部分&#xff0c;主要用于连接船上各种电子设备&#xff0c;实现数据传输和设备控制。这些连接器遵循NMEA 2000协议标准&#xff0c;支持高速数据传输&#xff0c;并具有良好的防水、耐腐蚀性能&#xff0c…

神经网络之循环神经网络

目录 一、循环神经网络概述&#xff1a;1.传统神经网络与循环神经网络的区别&#xff1a;2.循环神经网络定义&#xff1a; 图片来自&#xff1a;深度学习———循环神经网络 一、循环神经网络概述&#xff1a; 1.传统神经网络与循环神经网络的区别&#xff1a; MLP、卷积神经…

【PostgreSQL教程】PostgreSQL 选择数据库

博主介绍:✌全网粉丝20W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

关于unicloud 云函数开发 加密的问题

解决的问题&#xff1a; 1.在云函数请求过程中入参参数暴露 2.云函数请求结束之后 出参结果暴露 解决方法&#xff1a; 1.在请求过程中对云函数的入参进行加密&#xff0c;在后端接收的时候将加密信息进行解密&#xff0c;根据自己的逻辑成功之后加密返回给前端 前端解密之…

多目标遗传算法(NSGAⅢ)的原理和matlab实现

参考文献&#xff1a; [1] Deb K , Jain H .An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints[J].IEEE Transactions on Evolutionary Computation, 2014,…

【Simple PIR】单服务器开源最快匿踪查询算法解析

7月17日&#xff0c;我们在《隐私计算匿踪查询技术深入浅出》中介绍了关于隐私计算中匿踪查询的定义和常见算法&#xff0c;并引出了前沿算法Simple PIR的介绍&#xff0c;本次将对Simple PIR进行正式的算法原理介绍。 1. Simple PIR快览 1.1 性能介绍 Simple PIR是Alexandra…

docker 打包orbbec

docker pull humble容器 sudo docker run -it osrf/ros:humble-desktop docker 启动容器 sudo docker run -u root --device/dev/bus/usb:/dev/bus/usb -it -v /home/wl:/share --name wl4 osrf/ros:humble-desktop /bin/bash新开一个终端 查看本地存在的容器&#xff1a;…

每类数据保留前n条(sql)

1、前言 因为遇到过好几次该需求&#xff0c;所以想着总结下&#xff0c;以后可以直接复用 2、背景及需求 背景&#xff1a;数据库中有多类数据&#xff0c;每类数据都有很多条 需求&#xff1a;每类数据按id排序&#xff0c;保留id较大的前1000条数据&#xff08;注意是每…

高速ADC模拟输入接口设计

目录 基本输入接口考虑 输入阻抗 输入驱动 带宽和通带平坦度 噪声 失真 变压器耦合前端 有源耦合前端网络 基本输入接口考虑 采用高输入频率、高速模数转换器(ADC)的系统设计是一 项具挑战性的任务。ADC输入接口设计有6个主要条件&#xff1a; 输入阻抗、输入驱动、带宽…

MYSQL设计和开发规范(简易版)

MYSQL设计和开发规范 1. 整体描述2. 数据库设计规范2.1 表名命名规则2.2 是否字段2.3 字母与数字2.4 禁止使用保留字2.5 可变字符串规范2.6 字段设计 3. 数据库索引规范3.1 命名规则3.2 唯一索引规范3.3 join规范3.4 varchar规范3.5 模糊搜索规范 4. 数据库SQL语句规范4.1 语句…

开源模型应用落地-FastAPI-助力模型交互-进阶篇-中间件(四)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理&#xff0c;使应用程序能够处理各种不同的请求场景&#xff0c;提高应用程序的灵活性和可扩展性。 在数据验证和转换方面&#xff0c;高级用法提供了更精细和准确的控制&#…