java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis Web数据库操作

Mybatis Web中的数据库操作方法举例详解

作者:科马

Mybatis是一款优秀的持久化框架,用于简化JDBC的开发,下面这篇文章主要给大家介绍了关于Mybatis Web中数据库操作方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

MyBatis 是一个流行的持久层框架,主要用于简化 Java 应用程序中对数据库的访问。与传统的 JDBC(Java Database Connectivity)相比,MyBatis 提供了更高层次的抽象,帮助开发者更方便地进行数据库操作。

工作机制

MyBatis 的执行流程是指在一个完整的数据库操作中,MyBatis 如何从接收到用户请求到最终执行 SQL 并返回结果的整个过程。以下是 MyBatis 的典型执行流程:

1. 加载配置文件:

2. 创建 SqlSessionFactory:

3. 获取 SqlSession:

4. 获取 Mapper 接口:

5. 执行 SQL 语句:

6. SQL 语句解析和执行:

7. 结果映射:

8. 事务管理:

9. 关闭 SqlSession:

10. 返回结果:

总结来说,MyBatis 的执行流程是从加载配置文件到生成 SQL、执行 SQL,再到结果映射的一个完整过程。每一步都有相应的组件和机制来保证 SQL 的正确执行和结果的准确返回。

与JDBC对比

相比于传统的 JDBC,MyBatis 增加了丰富的功能,使得数据库操作更加简洁、灵活且易于维护。它将大量繁琐的手动编码工作自动化,并且提供了强大的配置、扩展和管理能力,极大地提高了开发效率和代码质量。

三个显著特点

我们将用一个简单的代码演示,来理解这三个特点
以下是一个简单的示例,展示了MyBatis的基本用法和特点,包括SQL映射、动态SQL以及对象关系映射。

代码示例

1. 配置MyBatis

首先,你需要一个MyBatis的配置文件(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/mybatis_demo"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

2. 创建数据库表

创建一个简单的用户表作为示例。

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(50)
);

3. 创建POJO类

定义一个与数据库表对应的Java类User

public class User {
    private int id;
    private String name;
    private String email;

    // Getters and Setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

4. 编写Mapper接口

MyBatis中Mapper接口用于定义与数据库操作相关的方法。

public interface UserMapper {
    User getUserById(int id);
    List<User> getAllUsers();
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}

5. 编写SQL映射文件

UserMapper.xml用于定义SQL语句并将它们映射到Mapper接口的方法上。

<?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="UserMapper">

    <select id="getUserById" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <select id="getAllUsers" resultType="User">
        SELECT * FROM users
    </select>

    <insert id="insertUser" parameterType="User">
        INSERT INTO users (name, email) VALUES (#{name}, #{email})
    </insert>

    <update id="updateUser" parameterType="User">
        UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM users WHERE id = #{id}
    </delete>

</mapper>

6. 使用MyBatis进行数据库操作

编写主程序来演示如何使用MyBatis执行数据库操作。

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisExample {
    public static void main(String[] args) throws IOException {
        // 1. 读取MyBatis配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 2. 获取SqlSession
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);

            // 3. 插入新用户
            User newUser = new User();
            newUser.setName("John Doe");
            newUser.setEmail("john.doe@example.com");
            mapper.insertUser(newUser);
            session.commit(); // 提交事务

            // 4. 查询所有用户
            List<User> users = mapper.getAllUsers();
            users.forEach(user -> System.out.println(user.getName() + ": " + user.getEmail()));

            // 5. 更新用户
            User existingUser = users.get(0);
            existingUser.setName("Jane Doe");
            mapper.updateUser(existingUser);
            session.commit();

            // 6. 删除用户
            mapper.deleteUser(existingUser.getId());
            session.commit();
        }
    }
}

解释:

到此这篇关于Mybatis Web中数据库操作方法的文章就介绍到这了,更多相关Mybatis Web数据库操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文