Javaweb之Mybatis的动态SQLforeach和include的详细解析

3.3 动态SQL-foreach

案例:员工删除功能(既支持删除单条记录,又支持批量删除)

Javaweb之Mybatis的动态SQLforeach和include的详细解析_第1张图片

SQL语句:

delete from emp where id in (1,2,3);

Mapper接口:

@Mapper
public interface EmpMapper {
    //批量删除
    public void deleteByIds(List ids);
}

XML映射文件:

  • 使用遍历deleteByIds方法中传递的参数ids集合





    
    
        delete from emp where id in
        
            #{id}
        
    
 
Javaweb之Mybatis的动态SQLforeach和include的详细解析_第2张图片

3.4 动态SQL-sql&include

问题分析:

  • 在xml映射文件中配置的SQL,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码

  • Javaweb之Mybatis的动态SQLforeach和include的详细解析_第3张图片

我们可以对重复的代码片段进行抽取,将其通过标签封装到一个SQL片段,然后再通过标签进行引用。

  • :定义可重用的SQL片段

  • :通过属性refid,指定包含的SQL片段

  • Javaweb之Mybatis的动态SQLforeach和include的详细解析_第4张图片

SQL片段: 抽取重复的代码


    select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp

然后通过 标签在原来抽取的地方进行引用。操作如下:

你可能感兴趣的:(Web,服务器,mybatis,数据库开发,java,mysql,sql)