MyBatis知多少(19)MyBatis操作
若要使用iBATIS执行的任何CRUD(创建,写入,更新和删除)操作,需要创建一个的POJO(普通Java对象)类对应的表。本课程介绍的对象,将“模式”的数据库表中的行。
POJO类必须实现所有执行所需的操作所需的方法。
我们已经在MySQL下有EMPLOYEE表:
1 CREATE TABLE EMPLOYEE ( 2 id INT NOT NULL auto_increment, 3 first_name VARCHAR(20) default NULL, 4 last_name VARCHAR(20) default NULL, 5 salary INT default NULL, 6 PRIMARY KEY (id) 7 );
Employee POJO 类:
我们会在Employee.java文件中创建Employee类,如下所示:
1 public class Employee { 2 private int id; 3 private String first_name; 4 private String last_name; 5 private int salary; 6 7 /* Define constructors for the Employee class. */ 8 public Employee() {} 9 10 public Employee(String fname, String lname, int salary) { 11 this.first_name = fname; 12 this.last_name = lname; 13 this.salary = salary; 14 } 15 } /* End of Employee */
可以定义方法来设置表中的各个字段。下一章节将告诉你如何获得各个字段的值。
Employee.xml 文件:
要定义使用iBATIS SQL映射语句中,我们将使用<insert>标签,这个标签定义中,我们会定义将用于在IbatisInsert.java文件的数据库执行SQL INSERT查询“id”。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE sqlMap 3 PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 4 "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 5 6 <sqlMap namespace="Employee"> 7 <insert id="insert" parameterClass="Employee"> 8 9 insert into EMPLOYEE(first_name, last_name, salary) 10 values (#first_name#, #last_name#, #salary#) 11 12 <selectKey resultClass="int" keyProperty="id"> 13 select last_insert_id() as id 14 </selectKey> 15 16 </insert> 17 18 </sqlMap>
这里parameterClass:可以采取一个值作为字符串,整型,浮点型,double或根据要求任何类的对象。在这个例子中,我们将通过Employee对象作为参数而调用SqlMap类的insert方法。
如果您的数据库表使用IDENTITY,AUTO_INCREMENT或串行列或已定义的SEQUENCE/GENERATOR,可以使用<selectKey>元素在的<insert>语句中使用或返回数据库生成的值。
IbatisInsert.java 文件:
文件将应用程序级别的逻辑在Employee表中插入记录:
1 import com.ibatis.common.resources.Resources; 2 import com.ibatis.sqlmap.client.SqlMapClient; 3 import com.ibatis.sqlmap.client.SqlMapClientBuilder; 4 import java.io.*; 5 import java.sql.SQLException; 6 import java.util.*; 7 8 public class IbatisInsert{ 9 public static void main(String[] args) 10 throws IOException,SQLException{ 11 Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml"); 12 SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd); 13 14 /* This would insert one record in Employee table. */ 15 System.out.println("Going to insert record....."); 16 Employee em = new Employee("Zara", "Ali", 5000); 17 18 smc.insert("Employee.insert", em); 19 20 System.out.println("Record Inserted Successfully "); 21 22 } 23 }
编译和运行:
下面是步骤来编译并运行上述软件。请确保已在进行的编译和执行之前,适当地设置PATH和CLASSPATH。
-
创建Employee.xml如上所示。
-
创建Employee.java如上图所示,并编译它。
-
创建IbatisInsert.java如上图所示,并编译它。
-
执行IbatisInsert二进制文件来运行程序。
会得到下面的结果,并创纪录的将在EMPLOYEE表中创建。
1 $java IbatisInsert 2 Going to insert record..... 3 Record Inserted Successfully
去查看EMPLOYEE表,它应该有如下结果:
mysql> select * from EMPLOYEE; +----+------------+-----------+--------+ | id | first_name | last_name | salary | +----+------------+-----------+--------+ | 1 | Zara | Ali | 5000 | +----+------------+-----------+--------+ 1 row in set (0.00 sec)
系列文章: