mybatis之增删改查

下面是关于 MyBatis 的增删改查操作的完整攻略。

简介

MyBatis 是一种优秀的持久层框架,它封装了 JDBC 操作的细节,并提供了方便的 SQL 映射配置方法,使得开发者可以使用面向对象的方式进行 SQL 操作。

在 MyBatis 中,增删改查操作是非常常见的操作。本文将通过两个示例分别讲解如何使用 MyBatis 实现增删改查操作。

示例1:查询

1.1 数据库表的建立

首先,我们需要在数据库中建立一个用户表,用来存储用户信息。

CREATE TABLE user (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  age INT(11) NOT NULL,
  gender ENUM('男', '女') NOT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

1.2 实体类的定义

Java 代码中,我们需要先定义一个 User 实体类,用来存储与数据库表对应的数据。

public class User {
    private Long id;
    private String name;
    private Integer age;
    private Gender gender;

    // getter/setter 省略
}

public enum Gender {
    MALE("男"),
    FEMALE("女");

    private String text;

    Gender(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

1.3 Mapper 文件的编写

然后,我们需要为 User 实体类编写一个对应的 Mapper 文件,用来定义 SQL 语句。

<mapper namespace="com.example.mapper.UserMapper">

  <resultMap id="userResultMap" type="com.example.entity.User">
    <id property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <result property="gender" column="gender" />
  </resultMap>

  <select id="getUserById" resultMap="userResultMap">
    SELECT * FROM user WHERE id = #{id}
  </select>

  <select id="getAllUsers" resultMap="userResultMap">
    SELECT * FROM user
  </select>

  <insert id="addUser" parameterType="com.example.entity.User">
    INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})
  </insert>

  <update id="updateUser" parameterType="com.example.entity.User">
    UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}
  </update>

  <delete id="deleteUserById" parameterType="java.lang.Long">
    DELETE FROM user WHERE id = #{id}
  </delete>

</mapper>

1.4 配置文件的编写

最后,我们需要在 MyBatis 的配置文件中配置 Mapper 文件。

<configuration>
  <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="password" />
      </dataSource>
    </environment>
  </environments>

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

1.5 Java 代码的使用

现在,我们已经完成了整个 MyBatis 配置的编写。下面演示如何使用 MyBatis 查询数据库。

public class UserMapperTest {

    private static SqlSessionFactory sqlSessionFactory;

    @BeforeClass
    public static void setup() {
        sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
    }

    @Test
    public void testGetUserById() {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.getUserById(1L);
            System.out.println(user);
        }
    }

    @Test
    public void testGetAllUsers() {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            List<User> userList = userMapper.getAllUsers();
            System.out.println(userList);
        }
    }

}

以上代码实现了查询单个用户和查询全部用户操作。

示例2:插入

2.1 数据库表的建立

首先,我们需要在数据库中建立一个用户表,用来存储用户信息。

CREATE TABLE user (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  age INT(11) NOT NULL,
  gender ENUM('男', '女') NOT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2.2 实体类的定义

在 Java 代码中,我们需要先定义一个 User 实体类,用来存储与数据库表对应的数据。

public class User {
    private Long id;
    private String name;
    private Integer age;
    private Gender gender;

    // getter/setter 省略
}

public enum Gender {
    MALE("男"),
    FEMALE("女");

    private String text;

    Gender(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

2.3 Mapper 文件的编写

然后,我们需要为 User 实体类编写一个对应的 Mapper 文件,用来定义 SQL 语句。

<mapper namespace="com.example.mapper.UserMapper">

  <resultMap id="userResultMap" type="com.example.entity.User">
    <id property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <result property="gender" column="gender" />
  </resultMap>

  <select id="getUserById" resultMap="userResultMap">
    SELECT * FROM user WHERE id = #{id}
  </select>

  <select id="getAllUsers" resultMap="userResultMap">
    SELECT * FROM user
  </select>

  <insert id="addUser" parameterType="com.example.entity.User">
    INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})
  </insert>

  <update id="updateUser" parameterType="com.example.entity.User">
    UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}
  </update>

  <delete id="deleteUserById" parameterType="java.lang.Long">
    DELETE FROM user WHERE id = #{id}
  </delete>

</mapper>

2.4 配置文件的编写

最后,我们需要在 MyBatis 的配置文件中配置 Mapper 文件。

<configuration>
  <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="password" />
      </dataSource>
    </environment>
  </environments>

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

2.5 Java 代码的使用

现在,我们已经完成了整个 MyBatis 配置的编写。下面演示如何使用 MyBatis 插入数据。

public class UserMapperTest {

    private static SqlSessionFactory sqlSessionFactory;

    @BeforeClass
    public static void setup() {
        sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
    }

    @Test
    public void testAddUser() {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = new User();
            user.setName("张三");
            user.setAge(20);
            user.setGender(Gender.MALE);
            userMapper.addUser(user);
            session.commit();
        }
    }

}

以上代码实现了向数据库插入一条用户信息的操作。

总结

本文介绍了如何使用 MyBatis 进行增删改查操作,并且以查询和插入两种操作为例进行了演示。使用 MyBatis 进行数据库操作可以大大简化开发工作,提高开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis之增删改查 - Python技术站

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

相关文章

  • Spring Boot超详细讲解请求处理流程机制

    Spring Boot超详细讲解请求处理流程机制 Spring Boot请求处理流程概述 在Spring Boot中,请求处理流程一般可以分为以下几个步骤: 浏览器发送HTTP请求。 请求到达本地服务器,并被Spring Boot框架接收。 Spring Boot对请求进行预处理,包括对请求头、请求参数、cookie进行解析,以及对请求URL进行映射。 根据…

    Java 2023年5月19日
    00
  • Java自定义简单标签实例

    Java自定义简单标签实例可以通过JSP自定义标签实现,本攻略将介绍如何自定义一个简单的标签,并且分别提供两个示例。 1. 前置要求 在进行Java自定义简单标签实例之前,需要具备以下条件: JDK 1.6或以上版本 Tomcat服务器或其他支持Servlet和JSP的Web服务器 2. 创建一个简单的标签 首先,需要创建一个Java类,以实现自定义标签。假…

    Java 2023年6月2日
    00
  • Java 如何使用JDBC连接数据库

    下面是Java如何使用JDBC连接数据库的完整攻略: 1. 下载需要的jar包 连接数据库需要使用JDBC驱动。不同的数据库需要使用不同版本的JDBC驱动,因此需要根据所使用的数据库下载相应的JDBC驱动。一般情况下,可以在数据库官方网站下载。 2. 加载JDBC驱动 在使用JDBC之前,需要先加载JDBC驱动。可以使用Class.forName()方法来加…

    Java 2023年5月19日
    00
  • 使用Sharding-JDBC对数据进行分片处理详解

    那么让我们来详细讲解如何使用Sharding-JDBC对数据进行分片处理。 什么是Sharding-JDBC Sharding-JDBC是一种基于JDBC的轻量级Java框架,用于将数据库水平分片。Sharding-JDBC通过拦截JDBC API调用来实现透明的数据分片,所以你可以使用任何基于JDBC的ORM框架(如Hibernate、MyBatis、JP…

    Java 2023年6月16日
    00
  • Java如何把数组转换为ArrayList

    将Java中的数组转换为ArrayList的过程可以分为两个步骤: 创建一个ArrayList对象 将数组中的元素添加到ArrayList中 以下是完整的转换过程及示例说明: 创建ArrayList对象 要将数组转换为ArrayList,首先需要创建一个新的ArrayList对象。可以使用泛型来定义ArrayList存储的数据类型,根据需要创建一个整型Arr…

    Java 2023年5月26日
    00
  • JS结合bootstrap实现基本的增删改查功能

    让我来给你讲一下如何使用JS结合Bootstrap实现基本的增删改查功能的完整攻略。我们将通过两个示例来讲解。 示例一-学生管理系统 一、准备工作 1.首先需要在我们的HTML文件中引用Bootstrap和jQuery库。这可以通过以下代码进行实现: <link rel="stylesheet" href="https:/…

    Java 2023年6月15日
    00
  • Java中计算时间差的方法

    当我们使用Java进行开发时,有时需要计算两个时间之间的时间差。在Java中计算时间差可以使用以下常用方式。 1.使用Date类 import java.text.SimpleDateFormat; import java.util.Date; public class TimeDifference { public static void main(Str…

    Java 2023年5月20日
    00
  • SpringBoot使用validation-api实现对枚举类参数校验的方法

    在Spring Boot应用程序中,我们可以使用validation-api来实现对枚举类参数的校验。在本文中,我们将详细讲解如何使用validation-api来实现对枚举类参数的校验。 增加依赖 首先,我们需要在pom.xml文件中增加validation-api的依赖。下面是一个示例: <dependency> <groupId&gt…

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