Mmybatis xml 连接数据库的方法

news/2025/3/15 12:12:34/

1. 添加依赖(Maven项目)

在 pom.xml 中添加 MyBatis 和数据库驱动的依赖(以 MySQL 为例):

<dependencies><!-- MyBatis 核心库 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version> <!-- 使用最新版本 --></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>
</dependencies>

2. 配置 MyBatis 核心文件

在 resources 目录下创建 mybatis-config.xml,配置数据库连接和全局设置:

<?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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- 修改为你的数据库信息 --><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/your_database?useSSL=false&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!-- 指定 Mapper 文件的位置 --><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

3. 创建实体类

定义与数据库表对应的实体类,例如 User

public class User {private Integer id;private String name;private String email;// 省略构造方法、getter/setter 和 toString()
}

4. 创建 Mapper 接口 

public interface UserMapper {User selectUserById(int id);
}

5. 编写 Mapper XML 映射文件

在 resources/mapper 目录下创建 UserMapper.xml,编写 SQL 映射:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper"><select id="selectUserById" resultType="com.example.entity.User">SELECT * FROM user WHERE id = #{id}</select>
</mapper>

6. 使用 MyBatis 执行操作

通过 SqlSessionFactory 获取 SqlSession 并操作数据库

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisDemo {public static void main(String[] args) {try {// 加载 MyBatis 配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 创建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 获取 SqlSessiontry (SqlSession sqlSession = sqlSessionFactory.openSession()) {// 获取 Mapper 接口实例UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 执行查询User user = userMapper.selectUserById(1);System.out.println(user);}} catch (Exception e) {e.printStackTrace();}}
}

关键注意事项

1.驱动和 URL 格式

  • MySQL 8+ 驱动类名为 com.mysql.cj.jdbc.Driver,URL 需指定时区(如 serverTimezone=UTC.

2. XML 文件位置

  • 确保 mybatis-config.xml 和 UserMapper.xml 放在项目的类路径下(如 src/main/resources)。

3.事务管理: 

  • 默认使用 JDBC 事务管理器,执行写操作后需调用 sqlSession.commit() 提交事务。

4.日志配置: 

  • 如需查看 SQL 日志,可在 mybatis-config.xml 中添加日志实现(如 SLF4J)。

常见问题排查 

  • 配置文件未找到:检查文件是否在 resources 目录下,且路径正确。

  • 驱动类异常:确认驱动依赖已正确添加,版本兼容。

  • Mapper 未绑定:检查 mybatis-config.xml 中 <mappers> 的配置是否指向正确的 XML 文件

  • 通过以上步骤,即可完成 MyBatis 与数据库的基本连接和操作。

 


http://www.ppmy.cn/news/1579309.html

相关文章

【C++标准库类型】深入理解string类型:从基础到实践

目录 一、string类型的基本概念 1.1. 定义与头文件 1.2. 本质与特点 1.3. 与 C 风格字符串的区别 二、string类型的构造函数 2.1. 默认构造函数 2.2. 使用C风格字符串初始化 2.3. 拷贝构造函数 2.4. 使用字符和重复次数初始化 2.5. 使用子串初始化 三、string类型的…

基于图神经网络(GNN)的节点分类实战:从GCN到GraphSAGE

图神经网络(GNN)是一种专门用于处理图结构数据的深度学习模型,广泛应用于社交网络分析、推荐系统和生物信息学等领域。图卷积网络(GCN)是GNN的经典方法,而GraphSAGE则通过引入采样机制进一步提升了其性能。本文将通过一个完整的实战案例,展示如何使用GCN和GraphSAGE对图…

计算机网络基础:网络安全基础

计算机网络基础&#xff1a;网络安全基础 一、前言二、网络安全的重要性2.1 保护个人隐私2.2 保障企业运营2.3 维护国家主权与安全 三、常见的网络安全威胁3.1 恶意软件3.2 网络钓鱼3.3 拒绝服务攻击&#xff08;DoS/DDoS&#xff09;3.4 漏洞攻击 四、常见的安全防护措施4.1 安…

wx131基于ssm+vue+uniapp的智能停车场管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

一文解读python的高阶功能:从闭包到装饰器的理解

文章目录 一、闭包1.1 举个栗子输出结果&#xff1a; 1.2 可以用来干啥&#xff1f;1.3 用闭包来创建函数工厂示例&#xff1a;创建函数工厂解释闭包的关键点另一个示例&#xff1a;创建计数器解释总结 1.4 用闭包来实现回调函数示例&#xff1a;使用闭包实现回调函数输出结果&…

uni-app打包h5并部署到nginx,路由模式history

uni-app打包有些坑&#xff0c;当时运行的基础路径填写了./&#xff0c;导致在二级页面刷新之后&#xff0c;页面直接空白。就只能换一个路径了&#xff0c;nginx也要跟着改&#xff0c;下面是具体步骤。 manifest.json配置web 运行路径写/h5/&#xff0c;或者写你们网站的目…

系统可观测性(5)OpenTelemetry基础使用

系统可观测性(5)OpenTelemetry基础概念 Author: Once Day Date: 2025年3月12日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 本文档翻译整理自《OpenTelemetry Docs》&a…

K8S学习之基础二十八:k8s中的configMap

k8s中的configMap ​ configMap是k8s的资源对象&#xff0c;简称cm&#xff0c;用于保存非机密性的配置&#xff0c;数据可以用key/value键值对形式保存&#xff0c;也可以通过文件形式保存 ​ 在部署服务的时候&#xff0c;每个服务都有自己的配置文件&#xff0c;如果一台服…