MyBatis CREATE 操作



  • CREATE 操作

    要使用MyBATIS执行任何创建,读取,更新和删除(CRUD)操作,您需要创建与该表相对应的普通Java对象(PO​​JO)类。此类描述了将“建模”数据库表行的对象。POJO类将具有执行所需操作所需的所有方法的实现。
    在MySQL数据库中创建STUDENT表,如下所示-
    
    mysql> 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`)
       -> 
    );
    Query OK, 0 rows affected (0.37 sec)
    
    
  • STUDENT POJO 类

    在Student.java文件中创建一个STUDENT类,如下所示:
    
    public class Student {
       private int id;
       private String name;
       private String branch;
       private int percentage;
       private int phone;
       private String email;
    
       public Student(String name, String branch, int percentage, int phone, String email) {
          super();
          this.name = name;
          this.branch = branch;
          this.percentage = percentage;
          this.phone = phone;
          this.email = email;
       }
       
    }
    
    
    您可以定义方法来设置表中的各个字段。下一章将说明如何获取各个字段的值。
  • Student.xml文件

    要使用MyBatis定义SQL映射语句,我们将使用<insert>标记。在此标记定义中,我们将定义一个“id”。此外,“id”将在mybatisInsert.java文件中用于对数据库执行SQL INSERT查询。创建student.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 = "Student">
    
       <insert id = "insert" parameterType = "Student">
          INSERT INTO STUDENT (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email});
                            
          <selectKey keyProperty = "id" resultType = "int" order = "AFTER">
             select last_insert_id() as id
          </selectKey>   
                            
       </insert>
            
    </mapper>
    
    
    在这里,parameteType-可以根据需要采用string,int,float,double或任何类对象的值。在此示例中,我们将在调用SqlSession类的insert方法时将Student对象作为参数传递。如果数据库表使用IDENTITY,AUTO_INCREMENT或SERIAL列,或者已定义SEQUENCE/GENERATOR,则可以在<inster>语句中使用<selectKey>元素来使用或返回该数据库生成的值。
  • mybatisInsert.java文件

    该文件将具有应用程序级逻辑,以将记录插入到Student表中。创建并保存mybatisInsert.java文件,如下所示-
    
    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 mybatisInsert { 
    
       public static void main(String args[]) throws IOException{
          
          Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
          SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);               
          SqlSession session = sqlSessionFactory.openSession();
          
          //Create a new student object
          Student student = new Student("Mohammad","It", 80, 984803322, "Mohammad@gmail.com" ); 
                
          //Insert student data      
          session.insert("Student.insert", student);
          System.out.println("record inserted successfully");
          session.commit();
          session.close();
                            
       }
       
    }
    
    
  • 编译与执行

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