Mybatis入门指南之实现对数据库增删改查

yizhihongxing

SQL 是关系型数据库最重要的访问方式之一,MyBatis 是一个非常流行的 SQL 映射框架,本文将为大家介绍如何使用 MyBatis 实现对数据库的增删改查操作。

环境准备

在开始使用 MyBatis 进行数据库操作前,需要先准备好以下环境:

  • JDK 1.8 或以上版本
  • MyBatis 3.x 版本
  • 数据库驱动程序(不同的数据库可能需要使用不同的驱动程序)
  • 数据库实例(这里我们以 MySQL 数据库为例)

配置 MyBatis

MyBatis 的配置文件一般命名为 mybatis-config.xml,并且需要放置在 classpath 下的根目录或者任意包下的 classpath 中。下面是一个简单的 MyBatis 配置文件示例:

<?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>
    <typeAliases>
        <typeAlias type="com.example.User" alias="user"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

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

配置文件中包含了各种 MyBatis 配置信息,包括对实体类别名的配置,数据源的配置,事务管理器的配置,以及对 Mapper 文件的配置。在这个配置文件中,我们定义了一个实体类 User 的别名为 user,指定了数据库的访问连接信息,以及指定针对 com/example/UserMapper.xml 的 Mapper 文件进行配置。

创建实体类

MyBatis 可以将数据库中返回的结果集封装成 Java 类型,因此在使用 MyBatis 进行数据库操作前,需要先创建与表结构相应的 Java 实体类。

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

    // ... getter and setter methods
}

这个实体类中包含了三个基本属性:idnameage,与数据库中表结构一一对应。

创建 Mapper 文件

MyBatis 通过 XML 文件映射 SQL 和 Java 方法,从而实现对数据库的增删改查操作。下面是一个简单的 Mapper 文件示例:

<mapper namespace="com.example.UserMapper">
    <resultMap id="baseResultMap" type="com.example.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>

    <select id="selectById" resultMap="baseResultMap">
        select * from user where id = #{id}
    </select>

    <insert id="insertUser" parameterType="com.example.User">
        insert into user(name, age) values(#{name},#{age})
    </insert>

    <update id="updateUser" parameterType="com.example.User">
        update user set name=#{name},age=#{age} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
</mapper>

这个 Mapper 文件中定义了一个 UserMapper 的命名空间,包含了针对 user 表的各种操作。其中,使用 <resultMap> 标签定义了一个基本的结果映射,在 <select> 标签中使用了这个结果映射,定义了一个根据 id 查询用户信息的 SQL。

<insert> <update> <delete> 标签中,通过设置 parameterType 来指定传入的参数类型,执行相应的 SQL 语句。

执行数据库操作

有了 MyBatis 的配置文件和 Mapper 文件,我们就可以使用 MyBatis 实现对数据库的增删改查操作了。下面是一个简单的示例:

public class UserDaoImpl implements UserDao {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public User selectById(int id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            return userMapper.selectById(id);
        }
    }

    @Override
    public void insertUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession(true)) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            userMapper.insertUser(user);
        }
    }

    @Override
    public void updateUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession(true)) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            userMapper.updateUser(user);
        }
    }

    @Override
    public void deleteUser(int id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession(true)) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            userMapper.deleteUser(id);
        }
    }
}

这个类通过 SqlSessionFactory 获取 SqlSession,然后通过编写的 UserMapper 进行增删改查等操作。

示例:

查询用户信息

// 获取 UserDao 实例
UserDao userDao = new UserDaoImpl();

// 根据 id 查询用户信息
User user = userDao.selectById(1);

// 输出结果
System.out.println(user);

插入用户信息

// 获取 UserDao 实例
UserDao userDao = new UserDaoImpl();

// 创建一个新用户
User user = new User();
user.setName("ZhangSan");
user.setAge(28);

// 插入新用户信息
userDao.insertUser(user);

// 输出结果
System.out.println("插入用户信息成功!");

以上代码示例仅仅是介绍了 MyBatis 如何实现对数据库的增删改查操作的基本流程。在实际应用中,可能还需要考虑其他因素,例如查询结果的分页显示,多表关联查询等等。但总体上来说,MyBatis 是一款强大而灵活的 SQL 映射框架,可以为开发者提供非常方便的数据库操作方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis入门指南之实现对数据库增删改查 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • linux系统命令笔记整理

    让我来详细讲解一下“Linux系统命令笔记整理”的完整攻略。 总体思路 想要整理好Linux系统命令笔记,我们需要按照以下步骤来进行: 了解各个常用的Linux命令,包括用途、语法和参数,可以在官方文档或其他非官方的文档中查找。 把这些命令根据用途归为几个类别,比如操作文件、网络管理等等。 将分类好的命令整理成一个命令表格或者使用mindmap等工具绘制成图…

    database 2023年5月22日
    00
  • MySQL5.7主从复制教程

    ​ 简述:主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的 业务数据库、事务处理库,从库做查询库。 ​ 复制过程简单的说就是 master 将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志行数据操作 1、什么是主从复制 ​ 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为…

    MySQL 2023年4月11日
    00
  • mysql安装图解总结

    关于 “mysql安装图解总结” 的完整攻略,我为您提供如下的详细讲解。 1. 下载MySQL安装包 首先,您需要到MySQL官网(https://dev.mysql.com/downloads/mysql/)上下载您所需要的MySQL安装包。比如,我们可以选择MySQL Community Server 8.0版本进行下载,即点击 “Download” 按…

    database 2023年5月22日
    00
  • MongoDB GridFS(二进制数据存储)使用方法详解

    什么是GridFS? MongoDB是一款文档型数据库,存储的数据是以BSON格式保存的。由于文档型数据库的特点,它适合存储小型的数据块,但对于大型的二进制数据,如音频、视频等文件,存储时可能需要分成多个文档进行存储。这种情况下,MongoDB提供了GridFS这个存储引擎。 GridFS是一个存储二进制数据(如图片、音频、视频等)的规范,它将大文件拆分成多…

    MongoDB 2023年3月14日
    00
  • Redis批量删除Key的三种方式小结

    下面是关于 Redis 批量删除 Key 的三种方式的详细讲解。 方式一:使用命令行删除 第一种方式是通过 Redis 命令行执行删除操作。我们可以使用 keys 命令来查找所有符合特定模式的 Key,然后使用 del 命令批量删除这些 Key。例如: redis> keys user:* 1) "user:1" 2) "…

    database 2023年5月22日
    00
  • Java几种分布式全局唯一ID生成方案

    Java几种分布式全局唯一ID生成方案包括: 基于UUID的方案 UUID是通用唯一识别码,可以根据时间、硬件等因素生成唯一ID。Java内置了UUID工具类java.util.UUID,使用非常方便。UUID有36个字符,可以通过去除其中的“-”符号,将其减少至32位,降低传输成本。但是,UUID并不是顺序递增的序列,如果需要使用有序递增的ID,则需要结合…

    database 2023年5月22日
    00
  • 详解MySQL实现主从复制过程

    下面是“详解MySQL实现主从复制过程”的完整攻略: 什么是 MySQL 主从复制 MySQL 主从复制是指将一台 MySQL 主服务器的数据同步到另外的一台或多台 MySQL 从服务器的过程。主服务器负责写数据,从服务器负责读数据。在实际应用中,主从复制可以提高系统的性能和可用性。 实现 MySQL 主从复制的步骤 实现 MySQL 主从复制需要以下步骤:…

    database 2023年5月22日
    00
  • oracle中关于case when then的使用

    关于Oracle中关于CASE WHEN THEN的使用,我为你准备了以下完整攻略: 什么是CASE WHEN THEN CASE WHEN THEN是Oracle SQL语句中的一种条件表达式。它可以根据条件表达式的结果执行不同的语句块。简单来说,它可以相当于编程语言中的if-else语句。 CASE WHEN THEN的语法 CASE expressio…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部