广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis动态SQL的示例代码
  • 674
分享到

Mybatis动态SQL的示例代码

2024-04-02 19:04:59 674人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录基本流程IF,WhereSetChoose(when,otherwise)sql片段总结什么是动态SQL:动态SQL就是根据不同的条件生成不同的SQL语句 基本流程

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

基本流程

1,数据库准备一张表
2,导包
3,编写核心配置文件
4,编写实体类
5,编写实体类对应的Mapper和Mapper.xml文件
6,在核心配置文件中注册Mapper.xml
7,测试

开启自动驼峰命名规则映射


    <!--开启驼峰命名映射-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>

即在数据库中为create_time对应Java实体类属性createTime

IF,Where


    <select id="queryListIf" parameterType="map" resultType="Blog">
        select * from blog 
        <where>
            <if test="title != null">
             title = #{title}
         </if>
         <if test="author != null">
             and author = #{author}
         </if>
        </where>
      </select>

Where的作用:当至少有一个满足条件时添加Where,且会判断后面加的第一条语句,若是and开头,则会自动将这个and删除
本质上还是在拼接SQL,上述当没有满足条件时查询blog表中的所有,当满足条件时,则拼接SQL

Set


 <update id="updateBlog" parameterType="map">
        update blog
        <set>
            <if test="title != null">
                title = #{title},
            </if>
            <if test="author != null">
                author = #{author}
            </if>
        </set>
        where id = #{id}
    </update>

Set的作用:至少有一个满足条件时添加Set,且会判断后面加的最后的语句,若是",“结尾,则会自动将这个”,"删除

Choose(when,otherwise)


    <select id="queryNoLimit" parameterType="map" resultType="Blog">
        select * from blog
        <where>
            <choose>
                <when test="title != null">
                    title = #{title}
                </when>
                <when test="author != null">
                    and author = #{author}
                </when>
                <otherwise>
                    and `view` = #{view}
                </otherwise>
            </choose>
        </where>
    </select>

choose(when,otherwise)类似与Java中的switch(case,default),choose进入选择,when当什么什么时,进行条件判断,若满足条件,则执行条件中的内容,后面的when,otherwise将不再执行,otherwise当所有when都不满足条件时执行

ForEach


    <select id="queryBlogById" parameterType="map" resultType="blog">
        select * from blog
        <where>
            <foreach collection="ids" item="id" open="(" close=")" separator="or">
                id = #{id}
            </foreach>
        </where>
    </select>

上述为,一个集合ids存储id的内容,根据这个集合查询所包含的id,open为开始,close为结束,separator为分隔符
才用map.put(“ids”,list)的方式导入集合

建议:现在Mysql中写出完整的sql,再对应的去修改即可

SQL片段

将一些功能的部分抽取出来方便复用

使用SQL标签抽取公共的部分


    <sql id="titleAuthor">
        <if test="title != null">
            title = #{title}
        </if>
        <if test="author != null">
            and author = #{author}
        </if>
    </sql>

在需要的地方使用include标签引用即可


    <select id="queryListIf" parameterType="map" resultType="Blog">
        select * from blog
        <where>
            <include refid="titleAuthor"></include>
        </where>
    </select>

注意事项:
1.最好基于单表来定义SQL片段
2.不要存在where标签

总结

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

到此这篇关于mybatis动态SQL的示例代码的文章就介绍到这了,更多相关Mybatis动态SQL内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Mybatis动态SQL的示例代码

本文链接: https://www.lsjlt.com/news/155694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis动态SQL的示例代码
    目录基本流程IF,WhereSetChoose(when,otherwise)SQL片段总结什么是动态SQL:动态SQL就是根据不同的条件生成不同的SQL语句 基本流程 ...
    99+
    2022-11-12
  • MyBatis动态SQL的示例
    这篇文章将为大家详细讲解有关MyBatis动态SQL的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如...
    99+
    2022-10-18
  • Mybatis中xml的动态sql实现示例
    目录动态SQL简介一、#{}与${}区别#{}表示一个占位符,使用占位符可以防止sql注入,二、传递包装类型三、动态sql—类型四、动态sql—详解(一)if...
    99+
    2022-11-13
  • Mybatis4 之Mybatis动态sql的实现代码
    1.什么是动态SQL 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if...
    99+
    2022-10-18
  • mybatis plus自动生成代码的示例代码
    写一个简单的mybatis plus插件自动生成代码的例子 pom.xml 添加配置 <!-- mybatis plus 插件--> <dependency>...
    99+
    2022-11-13
  • Mybatis实现动态增删改查功能的示例代码
    目录一、Mybatis流程简介二、手写简化版Mybatis设计思路2.1简化后的思路2.2读取XML文件,建立连接2.3创建SqlSession,搭建Configuration和Ex...
    99+
    2022-11-12
  • mybatis动态sql实现逻辑代码详解
    目录1.xml文件读取2.xml 文件解析mybatis通过将sql配置xml文件中,通过解析xml动态标签来实现动态sql 如下样例 xml文件 <?xml ve...
    99+
    2022-11-12
  • MybatisPlus实现分页查询和动态SQL查询的示例代码
    目录一、描述二、实现方式三、 总结一、描述 实现下图中的功能,分析一下该功能,既有分页查询又有根据计划状态、开始时间、公司名称进行动态查询。 二、实现方式 Controller层...
    99+
    2022-11-12
  • MyBatis特殊SQL的执行实例代码
    目录1.模糊查询2.批量删除3.动态设置表名  4.添加功能获取自增的主键总结1.模糊查询 接口: public interface SelectMapper {...
    99+
    2023-01-30
    mybatis特殊sql执行 mybatis 特殊sql
  • Element实现动态表格的示例代码
    目录【代码背景】【代码实现】#1# -> 代码复用的基础是你需要一个可复用的组件#2# -> 在展示页面使用动态表格组件#3# -> 如何给动态表格根据需求动态添加...
    99+
    2022-11-12
  • SpringBoot整合MyBatis-Plus的示例代码
    目录前言源码环境开发工具 SQL脚本 正文单工程POM文件(注意) application.properties(注意)自定义配置(注意)实体类(注意)...
    99+
    2022-11-13
  • mybatis-plus动态表名的实现示例
    背景 在分表的背景下,有时候查询数据的时候需要跨表查询,那此时就需要MP在解析的时候,能够很好的自适应表格名称 实现 MP中是通过PaginationInterceptor(分页插件...
    99+
    2022-11-12
  • mybatis log4j2打印sql+日志实例代码
    目录前言基于maven的springboot第二种 jdk6,普通jar包的springmvc总结前言 将采用slf+log4j2方式进行打印日志,以下用两种方式,一种基于maven...
    99+
    2022-11-13
  • vue+element实现动态换肤的示例代码
    有时候一个项目的主题并不能满足所有人的审美,这时候换肤功能就很友好,本项目基于vue+element实现后台管理项目的换肤功能 1.创建换肤组件 <template>...
    99+
    2022-11-12
  • ReactNative中实现动态导入的示例代码
    目录背景多业务包动态导入Metro 打包原理打包过程bundle 分析__d函数__r函数方案设计分识别入口树拆分bundle 生成合总结背景 随着业务的发展,每一个 React N...
    99+
    2022-11-13
  • mybatis中的动态sql问题
    目录1、if(常用)2、where3、trim4.choose、when、otherwise5、foreach5.1批量删除5.2批量添加6、sql标签总结Mybatis框...
    99+
    2023-02-27
    mybatis动态sql 动态sql mybatis sql
  • Python实现动态二维码生成的示例代码
    目录1.MyQR普通的二维码制作带背景图片的二维码制作带动图背景的二维码制作2.qrcode简单的二维码制作带背景图片的二维码制作大家好,我是辰哥~ 今天给大家分享两个制作二维码的P...
    99+
    2022-11-11
  • springboot 使用mybatis查询的示例代码
    目录示例1示例2返回数据源代码示例1 项目结构 代码controller中 UserController.java package com.example.demo1110.con...
    99+
    2022-11-13
  • mybatis的动态SQL和模糊查询实例详解
    现在以一个例子来介绍mybatis的动态SQL和模糊查询:通过多条件查询用户记录,条件为姓名模糊匹配,并且年龄在某两个值之间。 新建表d_user: create table d...
    99+
    2022-11-11
  • C语言实现动态链表的示例代码
    目录结构体定义已经函数声明函数实现创建一个链表判断链表是否为空获得链表中节点的个数在某个特定的位置插入一个元素获得指定下标的节点的元素删除一个节点链表逆序链表的清空链表的销毁链表的遍...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作