MyBatis 删除数据

本章将介绍 MyBatis 的数据删除操作。

 

1. 修改 UserMapper.xml 映射文件

UserMapper.xml 映射文件中将包含所有 User 相关 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 = "User">

    <resultMap id="result" type="User">
        <result property="id" column="id" />
        <result property="name" column="name" />
    </resultMap>

    <delete id="deleteById" parameterType="long">
        DELETE from User WHERE id = #{id};
    </delete>

</mapper>

参数类型可以是任何类型,如 int、float、double 或任何类,本例中参数类型 long,在调用 SqlSession 类的方法时,将传入 User 对象的 id。

 

2. 修改应用程序 main 类

package com.codebaoku.demo;

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 App { 

   public static void main(String args[]) throws IOException{

        Reader reader = Resources.getResourceAsReader("MybatisConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);       
        SqlSession session = sqlSessionFactory.openSession();

        System.out.println("------------ 删除用户 -----------");
        session.delete("User.deleteById", 2L);
        System.out.println("删除用户成功");

        session.commit();
        session.close();   
   }

}

 

3. 运行

运行程序,输出结果:

------------ 删除用户 -----------
删除用户成功

动态 SQL 是 MyBatis 的一个强大特性。在编写 SQL 语句时,尝尝需要根据不同条件拼接 SQL 语句,动态 SQL 帮助开发者非常轻松地实现各种条件下的 SQL 拼接。下面是 MyBatis 提供的基于 OGNL 的动态 SQL 表达式:if、choose (when, otherwise)、trim (where, set)、foreach