Mybatis动态sql标签说明

一、简述

1️⃣config文件常用标签
properties标签:引入外部properties文件资源。
settings标签:设置mybatis全局行为。
typeAlias标签:减少mapper文件配置,给模型类起别名。
transactionManager标签:配置mybatis的事务行为(JDBC|MANAGED)
dataSource标签:配置mybatis数据源(POOLED|UNPOOLED|JNDI)
mappers标签:引入Mapper文件或接口(url|resources|class|package)
2️⃣Mapper文件常用标签
a. resultMap标签:对查询的结果进行封装处理
简单pojo类型处理,只需处理表中字段和对像中属性映射处理。
包装pojo类型处理,使用Collection处理包装集合类型的对像,association处理包含单个pojo对像。
Collection处理的两种方式:
1.连接查询join
2.通过多条select查询的方式。
association处理两种方式:
1.连接查询join
2.通过多条select查询的方式。

discriminor鉴别器:根据查询结果中某个字段作为标识符,根据其查询的值,进行分类封装处理。

b.主键映射策略:如果主键由数据库生成,而不是手动指定,怎么获取该主键的问题。
一般使用selectKey标签处理。
3️⃣自定义封装结果集(了解):
按照自已定义方式把数据库返回结果封装成自己想要的类型。
一般自己建立结果的处理类,实现ResultHandler接口,重写里面的方法。
一般在select("statementId",params,ResultHandler实现类对像)
4️⃣解决什么样问题
用来解决sql语句where后条件的拼接问题,
使用流程控制标签来完成条件的拼接:if标签,where标签,foreach标签。。。。
5️⃣常用动态sql标签
1.if标签
2.choose when otherwise标签
3.trim标签
4.foreache标签
5.where标签
6.set标签

二、if标签:类似于Java中的if语句


三、where标签

根据查询条件是否存在,来决定是否生成where字符串。可以去除where后面紧跟的sql关键字, 如or或and。



四、 choose when otherwise

和Java中switch case作用类似。不管有多少条件满足,只拼接其中一个条件。



五、Set标签

set用法和上面where用法一致。可以生成update语句中的set关键字,也可去除sql关键字,如逗号(set标签中sql字符串最后的逗号)


    update USER
    
        
            username = #{username},
        
        
            password=#{password},
        
        
            address=#{address},
        
    
    where id = #{id}

六、foreach标签

类似于Java中的foreach迭代。把传入sql语句中的数组类型或集合类型数据进行遍历操作。



七、trim标签:可以删除sql语句指定的字符串。


    update USER
    
        
            ,username = #{username}
        
        
            ,password=#{password}
        
        
            ,address=#{address}
        
    
    where id = #{id}


    update USER
    
        
            username = #{username},
        
        
            password=#{password},
        
        
            address=#{address},
        
    
    where id = #{id}

你可能感兴趣的:(Mybatis动态sql标签说明)