国内网站,让百度收录网站,微信营销案例100例,设计感超强的公司名字配置文件 MyBatis 的配置文件是 XML 格式的#xff0c;它定义了 MyBatis 运行时的核心行为和设置。默认的配置文件名称为 mybatis-config.xml#xff0c;该文件用于配置数据库连接、事务管理器、数据源、类型别名、映射器#xff08;mapper 文件#xff09;以及其他全局属性…配置文件 MyBatis 的配置文件是 XML 格式的它定义了 MyBatis 运行时的核心行为和设置。默认的配置文件名称为 mybatis-config.xml该文件用于配置数据库连接、事务管理器、数据源、类型别名、映射器mapper 文件以及其他全局属性。 以下是一些主要配置元素的概览 configuration作为整个配置文件的根元素所有其他配置项都包含在其中。properties用于加载外部属性文件这些属性可以在配置文件中其他地方通过 ${property} 引用。settings设置 MyBatis 的全局配置参数如自动映射模式、延迟加载策略、日志工厂等。typeAliases 或 typeHandlers定义类型别名或类型处理器简化类型在 SQL 映射文件中的表示以及自定义类型的处理方式。plugins注册 MyBatis 插件例如拦截器以实现自定义的行为扩展。environments配置环境通常包括多个环境每个环境有一个唯一的 ID并且可以指定一个默认的环境。 每个环境内包含 transactionManager 和 dataSource 元素分别定义事务管理器和数据源配置。transactionManager可配置 JDBC、MANAGED 等事务管理器类型控制事务边界。dataSource数据源配置可配置 UNPOOLED、POOLED、JNDI 等不同类型的数据源用于连接数据库。mappers注册映射器接口或者 XML 映射文件可以通过类路径或者绝对路径引用 mapper 接口或者 XML 文件。 示例配置结构如下
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationproperties resourcedb.properties/settings!-- ... --/settingstypeAliases!-- ... --/typeAliasestypeHandlers!-- ... --/typeHandlersenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment!-- 可能还有其他环境配置 --/environmentsmappersmapper resourcecom/example/mapper/UserMapper.xml/mapper classcom.example.mapper.UserMapper/!-- ... --/mappers
/configuration
properties 可以通过此标记中的属性引用外部的属性配置文件键值对的属性资源文件 引用之前先要新建 db.properties 文件并编辑好内容
新建 db.properties 文件
usernameroot
passwordzhangroot
urljdbc:mysql://127.0.0.1:3306/homework
drivercom.mysql.cj.jdbc.Driver
在配置文件中使用
!--导入资源文件--
properties resourcedb.properties!--用作默认值如果属性文件中获取不到对应属性时这里才会起作用优先级低于属性文件夹的--property namepassword valuezhangroot/
/properties 注意 在配置文件中的属性设置 优先级低于属性资源配置文件所以我们一般把在配置文件中的属性设置用作默认值。 使用属性文件中的配置信息方式${}
environment iddevAtransactionManager typeJDBC/transactionManagerdataSource typePOOLEDproperty nameusername value${username}/property namepassword value${password}/property nameurl value${url}/property namedriver value${driver}//dataSource
/environment
transactionManager
在配置文件
事务管理器transactionManager
在MyBatis中事务管理器Transaction Manager的类型有两种 type[JDBC|MANAGED] JDBC 当事务管理器类型设置为JDBC时MyBatis会使用Java JDBC API直接管理事务。这意味着它会从数据源获取数据库连接并利用该连接对象来执行事务的开启、提交或回滚操作。在处理完SQL操作后MyBatis会根据需要自行关闭连接或返回给连接池。 MANAGED 当配置为MANAGED时MyBatis则不会自己管理事务而是将事务控制权交给外部容器如Spring框架或者Java EE应用服务器如JBoss、WebLogic等。这种情况下容器负责启动、提交或回滚事务。通常在企业级应用程序中容器提供了全局事务管理的能力可以跨多个资源进行事务协调。
数据源dataSource
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
大多数 MyBatis 应用程序会按示例中的例子来配置数据源。虽然数据源配置是可选的但如果要启用延迟加载特性就必须配置数据源。
有三种内建的数据源类型也就是 type[UNPOOLED|POOLED|JNDI]
UNPOOLED非池化数据源 UNPOOLED 类型的数据源每次请求数据库连接时都会创建一个新的连接实例。这种方式简单、轻量级但不适合高并发场景因为频繁创建和关闭数据库连接会消耗大量资源并可能导致性能问题。POOLED池化数据源 POOLED 数据源是基于连接池实现的它会预先创建一定数量的数据库连接并保持空闲状态当应用程序需要使用数据库时从池中取出一个连接用完后归还给池而不是直接关闭。连接池技术可以有效提高系统的性能和稳定性因为它能够重用已存在的数据库连接减少创建和销毁连接带来的开销。JNDIJava Naming and Directory InterfaceJava命名和目录接口 JNDI 数据源并不是 MyBatis 内部实现的连接池而是通过JNDI查找机制来获取外部容器如Tomcat、JBoss等应用服务器管理的数据源。在企业级应用中通常由应用服务器或容器统一管理数据库连接池开发人员通过JNDI名称来引用这个已经配置好的数据源。使用 JNDI 数据源的优势在于它可以与容器整合便于管理和配置并且有助于应用服务器层面的资源隔离和优化。
properties 在MyBatis的配置文件中dataSource元素是用来配置数据源的用于定义如何连接数据库。 在 dataSource 内部可以使用多个 property 子元素来设置具体的属性值以便正确初始化和配置数据源。 例如对于一个基于 MyBatis 的POOLED 数据源配置可能会包含以下 property 标签
dataSource typePOOLEDproperty namedriver valuecom.mysql.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mydatabase/property nameusername valuemyuser/property namepassword valuemypassword/!-- 其他可能的属性 --property namepoolSize value10/property namemaxIdle value8/property nameminIdle value2/
/dataSource
上述配置中每个 property 标签都指定了数据源的一个具体属性如数据库驱动类名、数据库URL、用户名和密码等。不同的数据源类型UNPOOLED、POOLED 或 JNDI可能需要不同的属性配置。如果遇到错误“元素类型为 dataSource 的内容必须匹配 (property)*”则意味着 dataSource 中的内容结构不正确应当只包含零个或多个 property 子元素。
8. Mapper 接口方式 在多层架构开发中我们常常按功能划分为控制层、业务层、DAO层 在 DAO 层设计中一般都会设计接口来访问数据库 在MyBatis框架中Mapper接口方式是一种基于接口编程的映射方式它允许开发者通过定义一个Java接口来声明SQL操作而无需编写XML配置文件。MyBatis会自动为这些接口生成代理对象并处理方法调用到SQL执行的映射关系。 第一步定义接口
IEmpDao接口
package com.wdzl.dao;import com.wdzl.pojo.Emp;import java.util.List;/*** 接口----特殊抽象类--高度抽象类--接口* 抽象---复杂问题简单化---忽略具体的实现细节* 接口---定义规范***/
public interface IEmpDao {void save(Emp emp);void delete(Emp emp);void update(Emp emp);Emp get(Integer empno);ListEmp queryAll();
}
第二步编写映射文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
!----
!--1.要求 命名空间必须和dao接口保持一致。取值 只能是接口完整类名因为可以把这里的映射文件理解成 DAO接口的实现类
--
mapper namespacecom.wdzl.dao.IEmpDao!--就是IEmpDao 接口中的get方法的实现--select idget resultTypeempselect empno,ename,sal,hiredate from emp where empno#{empno}/selectselect idqueryAll resultTypeempselect empno,ename,sal,hiredate from emp/select/mapper 注意 namespace 命名空间取值必须是接口的完整限定名全类名编写SQL的标记元素id取值必须和接口中要实现的方法名保持一致标记元素 id 的实现不需要和接口全部一致 比如可以实现部分抽象方法可以额外增加其他名字的sql 标记 第三步编写代码 通过 sqlSession.getMapper() 方式获取对应接口的代理对象 /*** Mapper 代理接口方式实现*/
public class EmpService {public static void main(String[] args) {
// IEmpDao dao new EmpDaoImpl();//SqlSessionSqlSession sqlSession MyBatisUtil.getSqlSession();// 动态代理 动态根据接口实现生成对应的实现类的代理对象IEmpDao dao sqlSession.getMapper(IEmpDao.class);Emp emp dao.get(1);dao.queryAll().forEach(System.out::println);System.out.println(emp);}
}