MyBatis 删除操作

  • 删除操作

    本章介绍如何使用MyBatis从表中删除记录。
    我们在MySQL中有以下student表-
    
    CREATE TABLE details.student(
       ID int(10) NOT NULL AUTO_INCREMENT,
       NAME varchar(100) NOT NULL,
       BRANCH varchar(255) NOT NULL,
       PERCENTAGE int(3) NOT NULL,
       PHONE int(11) NOT NULL,
       EMAIL varchar(255) NOT NULL,
       PRIMARY KEY (`ID`)
    );
    
    假设此表具有两个记录,如下所示-
    
    mysql> select * from STUDENT;
    +----+----------+--------+------------+-----------+----------------------+
    | ID |  NAME    | BRANCH | PERCENTAGE |  PHONE    |       EMAIL          |
    +----+----------+--------+------------+-----------+----------------------+
    | 1  | Mohammad |   It   |     80     | 900000000 | mohamad123@yahoo.com |
    | 2  | shyam    |   It   |     75     | 984800000 | shyam@gmail.com      |
    +----+----------+--------+------------+-----------+----------------------+
    2 rows in set (0.00 sec)
    
  • Student POJO类

    要执行删除操作,不需要修改Student.java文件。让我们保持上一章的样子。
    
    public class Student {
    
       private int id;
       private String name;
       private String branch;
       private int percentage;
       private int phone;
       private String email;
    
       public Student(int id, String name, String branch, int percentage, int phone, String email) {
          super();
          this.id = id;
          this.name = name;
          this.setBranch(branch);
          this.setPercentage(percentage);
          this.phone = phone;
          this.email = email;
       }
            
       public Student() {}
    
       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 getPhone() {
          return phone;
       }
            
       public void setPhone(int phone) {
          this.phone = phone;
       }
            
       public String getEmail() {
          return email;
       }
            
       public void setEmail(String email) {
          this.email = email;
       }
    
       public String getBranch() {
          return branch;
       }
    
       public void setBranch(String branch) {
          this.branch = branch;
       }
    
       public int getPercentage() {
          return percentage;
       }
    
       public void setPercentage(int percentage) {
          this.percentage = percentage;
       }
            
       public String toString(){
          StringBuilder sb = new StringBuilder();
                    
          sb.append("Id = ").append(id).append(" - ");
          sb.append("Name = ").append(name).append(" - ");
          sb.append("Branch = ").append(branch).append(" - ");
          sb.append("Percentage = ").append(percentage).append(" - ");
          sb.append("Phone = ").append(phone).append(" - ");
          sb.append("Email = ").append(email);
                    
          return sb.toString();
       }
            
    }
    
  • Student.xml文件

    要使用MyBatis定义SQL映射语句,我们将在Student.xml中使用<delete>标记,并且在此标记定义内,我们将定义一个“ id”,它将在mybatisDelete.java文件中用于在数据库上执行SQL DELETE查询。
    
    <?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 = "Student">    
       <resultMap id = "result" type = "Student">
          <result property = "id" column = "ID"/>         
       </resultMap>
            
       <delete id = "deleteById" parameterType = "int">
          DELETE from STUDENT WHERE ID = #{id};
       </delete>
            
    </mapper>
    
  • MyBatisDelete.java文件

    该文件具有应用程序级逻辑,可从Student表中删除记录-
    
    import java.io.IOException;
    import java.io.Reader;
    
    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 mybatisDelete { 
    
       public static void main(String args[]) throws IOException{
          
          Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
          SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);               
          SqlSession session = sqlSessionFactory.openSession(); 
              
          //Delete operation
          session.delete("Student.deleteById", 2);     
          session.commit();
          session.close();      
          System.out.println("Record deleted successfully");
                            
       }
       
    }
    
  • 编译并运行

    这是编译和运行mybatisDelete.java的步骤。在继续进行编译和执行之前,请确保已正确设置了PATH和CLASSPATH。
    • 如上所示创建Student.xml。
    • 如本教程的MYBATIS-配置XML章节中所示,创建SqlMapConfig.xml 。
    • 如上所示创建Student.java并进行编译。
    • 如上所示创建mybatisDelete.java并进行编译。
    • 执行mybatisDelete二进制文件以运行程序。
    您将得到以下结果,并且ID = 1的记录将从学生中删除。
    
    Records Read Successfully
    
    如果检查student表,它将显示以下结果-
    
    mysql> select * from student;
    +----+----------+--------+------------+----------+----------------------+
    | ID |   NAME   | BRANCH | PERCENTAGE |  PHONE   |        EMAIL         |
    +----+----------+--------+------------+----------+----------------------+
    | 1  | Mohammad |   It   |    80      | 90000000 | mohamad123@yahoo.com |
    +----+----------+--------+------------+----------+----------------------+
    1 row in set (0.00 sec)