MyBatis Mapper XML
-
Mapper XML
在上一章中,我们了解了如何使用XML文件配置MyBatis。本章讨论了Mapper XML文件及其提供的各种映射的SQL语句。在继续映射语句之前,假定MYSQL数据库中存在以下名为Student的表记录-+----+-------+--------+------------+-----------+---------------+ | ID | NAME | BRANCH | PERCENTAGE | PHONE | EMAIL | +----+-------+--------+------------+-----------+---------------+ | 1 | Shyam | it | 80 | 954788457 | mail@mail.com | +----+-------+--------+------------+-----------+---------------+
还假设相对于上表,POJO类也存在名为Student类,如下所示-public class Student { private int id; private String name; private String branch; private int percentage; private int phone; private String email; //Setters and getters }
-
mapper 标签
Mapper XML是MyBatis中的重要部分,其中包含一组用于配置各种SQL语句(例如SELECT,INSERT,UPDATE和DELETE)的语句。这些语句称为映射语句或映射SQL语句。- 所有语句都有唯一的ID。要执行这些语句中的任何一条,您只需要将适当的id传递给Java Application中的方法即可(这将在后面的章节中详细讨论)。
- Mapper XML文件避免了在应用程序中重复编写SQL语句的负担。与JDBC相比,使用MyBatis中的Mapper XML文件减少了几乎95%的代码。
- 所有这些映射的SQL语句都驻留在名为<mapper>的元素内。该元素包含一个名为'namespace'的属性。
<mapper namespace = "Student"> //mapped statements and result maps <mapper>
下面通过示例讨论所有映射的SQL语句。 -
INSERT
在MyBatis中,要将值插入表中,我们必须配置插入映射查询。MyBatis为插入映射器提供了各种属性,但是在很大程度上我们使用id和参数类型。id是用于标识插入语句的唯一标识符。另一方面,parametertype是将被传递到语句中的类名或参数的别名。下面给出的是插入映射查询的示例-<insert id = "insert" parameterType = "Student"> INSERT INTO STUDENT1 (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email}); </insert>
在给定的示例中,我们使用Student(class)类型的参数。班级学生是POJO班级,它以name,branch,percentage,phone和email为参数表示学生记录。您可以使用Java API调用“insert”映射查询,如下所示-//Assume session is an SqlSession object. session.insert("Student.insert", student);
-
UPDATE
要使用MyBatis更新现有记录的值,需要配置映射查询更新。更新映射查询的属性与插入映射查询的属性相同。以下是更新映射查询的示例-<update id = "update" parameterType = "Student"> UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}; </update>
要调用UPDATE查询,请实例化Student类,设置代表需要更新的列的变量的值,然后将此对象作为参数传递给update()方法。您可以使用Java API调用更新映射的查询,如下所示-//Assume session is an SqlSession object. session.update("Student.update",student);
-
UPDATE
要使用MyBatis更新现有记录的值,需要配置映射查询更新。更新映射查询的属性与插入映射查询的属性相同。以下是更新映射查询的示例-<update id = "update" parameterType = "Student"> UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}; </update>
要调用UPDATE查询,请实例化Student类,设置代表需要更新的列的变量的值,然后将此对象作为参数传递给update()方法。您可以使用Java API调用更新映射的查询,如下所示-//Assume session is an SqlSession object. session.update("Student.update",student);
-
DELETE
要使用MyBatis删除现有记录的值,需要配置映射查询“delete”。“delete”映射查询的属性与插入和更新映射查询相同。以下是删除映射查询的示例-<delete id = "deleteById" parameterType = "int"> DELETE from STUDENT WHERE ID = #{id}; </delete>
您可以使用MyBatis Java API提供的SqlSession接口的delete方法来调用delete映射查询,如下所示-//Assume session is an SqlSession object. session.delete("Student.deleteById", 18);
-
SELECT
要检索数据,使用“SELECT”映射器语句。以下是选择映射查询以检索表中所有记录的示例-<select id = "getAll" resultMap = "result"> SELECT * FROM STUDENT; </select>
您可以使用selectList()方法检索选择查询返回的数据。此方法以List的形式返回所选记录的数据,如下所示-List<Student> list = session.selectList("Student.getAll");
-
resultMaps
这是MyBatis中最重要和最强大的元素。SQL SELECT语句的结果映射到Java对象(beans/POJO)。定义resultMaps后,我们可以从几个SELECT语句中引用它们。以下是结果映射查询的示例;它将选择查询的结果映射到Student类-<resultMap id = "result" type = "Student"> <result property = "id" column = "ID"/> <result property = "name" column = "NAME"/> <result property = "branch" column = "BRANCH"/> <result property = "percentage" column = "PERCENTAGE"/> <result property = "phone" column = "PHONE"/> <result property = "email" column = "EMAIL"/> </resultMap> <select id = "getAll" resultMap = "result"> SELECT * FROM STUDENT; </select> <select id = "getById" parameterType = "int" resultMap = "result"> SELECT * FROM STUDENT WHERE ID = #{id}; </select>
提示: – 如果表的属性和列名都相同,则不必强制写入 resultMap 的column属性。