为了账号安全,请及时绑定邮箱和手机立即绑定

Mybatis持久层框架项目实战:从零开始构建高效数据访问层

标签:
杂七杂八

1. Mybatis框架简介

Mybatis是一个基于Java的持久层框架,它提供了一种在Java与数据库之间高效通信的途径。Mybatis的核心概念包括:SQL映射、动态SQL、结果映射、缓存机制等。

安装Mybatis并配置环境

首先,确保你的开发环境中安装了Java开发工具。接下来,访问Mybatis的官方网站下载Mybatis所需依赖。

# 添加Maven依赖
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

配置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>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

2. 基本配置与使用

2.1 配置Mybatis的映射文件:

创建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="selectAllUsers" resultType="com.example.model.User">
        SELECT * FROM user
    </select>
</mapper>

2.2** 使用Mybatis进行数据查询:

创建Java接口UserMapper.java

package com.example.mapper;

import com.example.model.User;
import java.util.List;

public interface UserMapper {
    List<User> selectAllUsers();
}

创建配置类SqlSessionFactoryConfig.java

package com.example.config;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryConfig {
    private static SqlSessionFactory sqlSessionFactory;

    public static SqlSessionFactory getSqlSessionFactory() {
        if (sqlSessionFactory == null) {
            try {
                InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                throw new RuntimeException("Failed to create SqlSessionFactory", e);
            }
        }
        return sqlSessionFactory;
    }
}

3. 动态SQL与XML映射

UserMapper.xml中使用动态SQL:

<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectUsersByCondition" parameterType="com.example.model.UserCondition" resultMap="userResultMap">
        SELECT * FROM user
        <if test="name != null">
            WHERE name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </select>
</mapper>

4. 结果映射与对象绑定

创建User.java类:

package com.example.model;

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

    // 省略getter和setter方法,仅展示属性定义

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

创建UserResultMap.xml文件进行结果映射:

<?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">
    <resultMap id="userResultMap" type="com.example.model.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
    </resultMap>
</mapper>

5. 缓存机制

mybatis-config.xml中配置缓存:

<settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="localCacheScope" value="SESSION"/>
</settings>

6. 案例实战

构建一个简单的项目实例,整合Mybatis与数据库操作。这个例子包括创建数据库表、填充数据、查询数据并更新数据。

创建数据库表

在MySQL中执行以下SQL:

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT NOT NULL
);

填充数据

INSERT INTO user (name, age) VALUES ('Alice', 25);
INSERT INTO user (name, age) VALUES ('Bob', 30);

查询数据并更新数据

import com.example.mapper.UserMapper;
import com.example.model.User;

public class UserController {
    private final UserMapper userMapper;

    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public void listUsers() {
        List<User> users = userMapper.selectAllUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }

    public void updateUser() {
        User user = new User();
        user.setId(1);
        user.setName("Charlie");
        userMapper.updateUser(user);
    }
}

通过以上步骤,从零开始构建了一个简单的Mybatis项目,实践了配置、数据访问、动态SQL、结果映射、缓存机制,并通过案例展示了如何在实际环境中使用Mybatis解决数据访问问题。Mybatis的灵活性和强大功能使得数据访问层的实现变得高效和可维护。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消