Mmybatis xml 连接数据库的方法

1. 添加依赖(Maven项目)

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

java 复制代码
<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,配置数据库连接和全局设置:

java 复制代码
<?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

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

4. 创建 Mapper 接口

java 复制代码
public interface UserMapper {
    User selectUserById(int id);
}

5. 编写 Mapper XML 映射文件

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

java 复制代码
<?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 并操作数据库:

java 复制代码
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);
            
            // 创建 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            // 获取 SqlSession
            try (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.xmlUserMapper.xml 放在项目的类路径下(如 src/main/resources)。

3.事务管理

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

4.日志配置

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

常见问题排查

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

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

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

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

相关推荐
TDengine (老段)3 分钟前
TDengine 转化函数 TO_TIMESTAMP 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
java叶新东老师24 分钟前
CMakelists.txt 实现多级目录编译
java·服务器·数据库
Sean_summer26 分钟前
暑期第二周
前端·数据库·python
whn19771 小时前
达梦有多少个模式
数据库
王柏龙1 小时前
Entity Framework Core (EF Core) 中Database
数据库·microsoft
时序数据说1 小时前
时序数据库IoTDB的优势场景分析
大数据·数据库·物联网·时序数据库·iotdb
是阿建吖!1 小时前
【Redis】初识Redis(定义、特征、使用场景)
数据库·redis·缓存
Leo.yuan1 小时前
数据处理工具是做什么的?常见数据处理方法介绍
大数据·数据库·人工智能·python·信息可视化
旧时光巷1 小时前
SQL基础⑫ | 视图篇
数据库·sql·学习·mysql·oracle·视图
阿里云大数据AI技术2 小时前
[VLDB 2025]面向云计算平台的多模态慢查询根因排序
大数据·数据库·人工智能