3. Mybatis的XML配置文件(重点)

目录

1 Mybatis的XML配置文件

1.1 XML配置文件规范

1.2 XML配置文件实现

1.3 MybatisX的使用

2. Mybatis动态SQL

2.1 什么是动态SQL

2.2 动态SQL-if

2.2.1 条件查询

2.2.2更新

2.3 动态SQL-foreach

2.4 动态SQL-sql&include



1.mybatis入门

2.mybatis基本操作

1 Mybatis的XML配置文件

Mybatis的开发有两种方式:

  1. 注解

  2. XML

1.1 XML配置文件规范

使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。

在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)

  2. XML映射文件的namespace属性为Mapper接口全限定名一致

  3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

3. Mybatis的XML配置文件(重点)_第1张图片

select * from emp where name like concat('%',#{name},'%') and gender = #{gender} and entrydate between #{begin} and #{end} order by update_time desc

1.3 MybatisX的使用

MybatisX是一款基于IDEA的快速开发Mybatis的插件,为效率而生。

MybatisX的安装:

3. Mybatis的XML配置文件(重点)_第7张图片

可以通过MybatisX快速定位: 3. Mybatis的XML配置文件(重点)_第8张图片

结论:使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句

2. Mybatis动态SQL

2.1 什么是动态SQL

SQL语句会随着用户的输入或外部条件的变化而变化,称为:动态SQL

Mybatis中提供了很多实现动态SQL的标签,整Mybatis中的动态SQL就是掌握这些动态SQL标签。

但现在一般都ai生成就行

2.2 动态SQL-if

:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。


   要拼接的sql语句

2.2.1 条件查询

示例:把SQL语句改造为动态SQL方式

  • 原有的SQL语句
  • 动态SQL语句

测试方法:

@Test
public void testList(){
    //性别数据为null、开始时间和结束时间也为null
    List list = empMapper.list("张", null, null, null);
    for(Emp emp : list){
        System.out.println(emp);
    }
}

执行的SQL语句: 3. Mybatis的XML配置文件(重点)_第9张图片

修改测试方法中的代码,再次进行测试,观察执行情况

@Test
public void testList(){
    //姓名为null
    List list = empMapper.list(null, (short)1, null, null);
    for(Emp emp : list){
        System.out.println(emp);
    }
}

 结果:3. Mybatis的XML配置文件(重点)_第10张图片再次修改测试方法中的代码,再次进行测试:

@Test
public void testList(){
    //传递的数据全部为null
    List list = empMapper.list(null, null, null, null);
    for(Emp emp : list){
        System.out.println(emp);
    }
}

执行的SQL语句: 3. Mybatis的XML配置文件(重点)_第11张图片

使用标签代替SQL语句中的where关键字

  • 只会在子元素有内容的情况下才插入where子句,会自动去除子句的开头的AND或OR

    测试方法

    @Test
    public void testList(){
        //只有性别
        List list = empMapper.list(null, (short)1, null, null);
        for(Emp emp : list){
            System.out.println(emp);
        }
    }

    执行的SQL语句:

2.2.2更新

更新用到的sql语句 开头是update

同where     这里需要插入set关键字

  • :动态的在SQL语句中插入set关键字,并会删掉额外的逗号。(用于update语句中)

总结2.2.1 /2.2.2 

    • where元素只会在子元素有内容的情况下才插入where子句,而且会自动去除子句的开头的AND或OR

    • 动态地在行首插入 SET 关键字,并会删掉额外的逗号。(用在update语句中)

2.3 动态SQL-foreach

XML映射文件:

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


 看下代码:




    
    
        delete from emp where id in
        
            #{id}
        
    
 

3. Mybatis的XML配置文件(重点)_第12张图片

执行         3. Mybatis的XML配置文件(重点)_第13张图片

2.4 动态SQL-sql&include

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

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

  • :定义可重用的SQL片段

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

SQL片段: 重复的代码.

看图3. Mybatis的XML配置文件(重点)_第14张图片

看下代码


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

然后通过 标签在原来抽取的地方进行引用。

代码如下:  

你可能感兴趣的:(mybatis,数据库,java,mybatis,java,后端,xml)