mybatis动态SQL

什么是动态SQL:动态SQL就是根据不同的条件生成不同的SQL语句

所谓的动态SQL,本质上还是SQL语句,只是我们可以在SQL层面,去执行一个逻辑代码

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解
根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去
掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。

搭建环境

vCREATE TABLE `mybatis`.`blog`  (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '博客id',
  `title` varchar(30) NOT NULL COMMENT '博客标题',
  `author` varchar(30) NOT NULL COMMENT '博客作者',
  `create_time` datetime(0) NOT NULL COMMENT '创建时间',
  `views` int(30) NOT NULL COMMENT '浏览量',
  PRIMARY KEY (`id`)
)

创建一个基础工程

1.导包

2.编写配置文件

3.编写实体类

@Data
public class Blog {
    private int id;
    private String title;
    private String author;

    private Date createTime;// 属性名和字段名不一致
    private int views;
}

4.编写实体类对应Mapper接口和Mapper.xml文件

IF


choose (when, otherwise)

 

trim、where、set

    

 
        update blog 
        
            
                title=#{title},
            
            
                author=#{author}
            
        
        where id=#{id}
    

SQL片段

有的时候,我们可能会将一些功能的部分抽取出来,方便服用!

1.使用SQL标签抽取公共部分可


    
        title = #{title}
    
    
        and author = #{author}
    

2.在需要使用的地方使用Include标签引用即可


注意事项:

  • 最好基于单标来定义SQL片段

  • SQL里不要存在where标签

Foreach

  

    //两种方法进行比较


    //foreach实现了循环查询
 

动态SQL就是在拼接SQL语句,我们只要保证SQL的正确性,按照SQL的格式,去排列组合就可以了

建议:

  • 先在Mysql中写出完整的SQL,再对应的去修改成我们的动态SQL实现通用即可

你可能感兴趣的:(mybatis学习笔记,sql,java,mysql)