动态sql以及常用的标签

这篇具有很好参考价值的文章主要介绍了动态sql以及常用的标签。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是动态sql:

指根据不同的条件生成不同的sql

搭建环境:

动态sql以及常用的标签,sql,java,数据库

建表:

create table blog(
id varchar(50) not null comment '博客id',
title varchar(100) not null comment '博客标题',
author varchar(30) not null comment '博客作者',
create_time datetime not null comment '创建时间',
views int(30) not null comment '浏览量'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

创建基础工程:

接口:

package com.heerlin.dao;

public interface BlogMapper {
}

xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.heerlin.dao.BlogMapper">

</mapper>

编写实体类

import jdk.jfr.DataAmount;
import lombok.Data;

import java.util.Date;

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

}

utils:

package com.heerlin.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //创建数据库会话sqlSessionFactory
            String resource = "mybatis-config.xml";
            //输入流
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    // 定义一个公共的静态方法,用于获取 SqlSession 对象
    public static SqlSession getSqlSession() {
        // 打开一个新的 SqlSession 会话
        return sqlSessionFactory.openSession();
    }
}

小技巧:开启驼峰命名转换

配置:

动态sql以及常用的标签,sql,java,数据库

if

那就先写个接口吧

动态sql以及常用的标签,sql,java,数据库

 写个sql:

动态sql以及常用的标签,sql,java,数据库

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

 接下来测试一下

当我们没给传参时会查出所有信息

动态sql以及常用的标签,sql,java,数据库

当map里有参数时:只会查询对应的数据

动态sql以及常用的标签,sql,java,数据库

说明我们所写的动态sql生效,这就是动态sql里最简单的if

choose(when,otherwise)

有时候,我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

还是上面的例子,但是策略变为:传入了 “title” 就按 “title” 查找,传入了 “author” 就按 “author” 查找的情形。若两者都没有传入,就返回标记为 featured 的 BLOG(这可能是管理员认为,与其返回大量的无意义随机 Blog,还不如返回一些由管理员精选的 Blog)。

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG WHERE state = ‘ACTIVE’
  <choose>
    <when test="title != null">
      AND title like #{title}
    </when>
    <when test="author != null and author.name != null">
      AND author_name like #{author.name}
    </when>
    <otherwise>
      AND featured = 1
    </otherwise>
  </choose>
</select>

trim(where,set)

where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

如果 where 元素与你期望的不太一样,你也可以通过自定义 trim 元素来定制 where 元素的功能。

动态sql以及常用的标签,sql,java,数据库文章来源地址https://www.toymoban.com/news/detail-623132.html

到了这里,关于动态sql以及常用的标签的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用数据库之sql server的使用和搭建

       关系型数据库,SQLServer是由微软公司开发的一种关系型据库管理系统,它已广泛用于电子商务、银行、保险、电力等行业。SQLServer提供了对XML和Internet标准的支持,具有强大的、灵活的、基于Web的应用程序管理功能。 优点: 1通过创建唯一性索引,可以保证数据库表中每一

    2024年02月04日
    浏览(51)
  • GaussDB查看数据库、表空间、表、schema大小以及常用的数据库元命令

    元命令 l+ 可以快速查看

    2024年02月11日
    浏览(54)
  • 在SQL server中用sql语句实现数据库的备份以及还原

    本文给大家提供并讲解了在SQL server中用SQL语句实现数据库的备份已经还原 假设你已经有一个数据库Student 创建备份设备,其名称为bk_Student,保存文件为D: Student.bak,并对Student数据库进行完全备份,备份到备份设备bk_ Student中。  在Student数据库中,创建一张表temp并对Student数

    2024年02月03日
    浏览(58)
  • Linux环境安装 SQL Server数据库以及使用

    虚拟机:VMware Workstation。 系统:Ubuntu 20.04。 文件系统:XFS 或 EXT4。 内存:至少具有 2 GB 内存。 磁盘空间:6 GB以上。 处理器速度:2 GHz。 处理器核心数:2 个核心。 处理器类型:仅兼容 x64。 安装SQL Server版本:2019。 如果以前安装了 SQL Server 的社区技术预览版 (CTP) 或候选发

    2023年04月12日
    浏览(48)
  • 【手写数据库toadb】SQL字符串如何被数据库认识? 词法语法分析基础原理,常用工具

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月08日
    浏览(49)
  • MySQL数据库概念、管理以及SQL语句的基本命令操作

    数据(data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一格式进行存储(记录可以看成一条记录) 表 将不同的记录组织在一起 用来存储具体数据 记录:行 字段(属性):列 以行+列的形式就组成了表(数据存储在表中) 数

    2024年02月08日
    浏览(68)
  • 【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

    2023年,第34周,第1篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! SQL SERVER 官方本身就有数据库可视化管理工具SSMS,所以大部分都会使用SSMS。以前版本是直接捆绑, 安装完成就自带有,最近版本可以不捆绑,需要单独下载安装对应版本。 除了 Microsoft SQL S

    2024年02月12日
    浏览(41)
  • windows下安装达梦数据库~客户端以及常用操作

    一、达梦数据库安装 1. 软件下载 到达梦数据库官网下载DM8开发版本, 下载地址:https://www.dameng.com/list_103.html windows 演示 2. 解压 dm8_20230106_x86_win_64.zip 双击dm8_20230106_x86_win_64.iso 3. 安装 双击setup.exe开始安装,选择简体中文,时区选择中国标准时间 双击setup.exe或者setup.bat 4. 点击

    2024年02月05日
    浏览(95)
  • SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置

    目录 (一)前言 (二)下载与安装 1. 下载 (1)下载地址 (2)SSMS对操作系统的要求 2. 安装 (1)存放下载好的安装包 (2) 双击进入安装 3. SSMS的简单使用 (1)打开SSMS (2)SSMS登录配置框填写 (3)删除登录界面上的记录 (三)卸载SSMS 1. 进入控制面板 2.  找到卸载软件

    2024年02月03日
    浏览(38)
  • 事务的四个特性、四个隔离级别以及数据库的常用锁

    事务的四个特性、四个隔离级别以及数据库的常用锁 四大特性 事务的四大特性,通常被称为ACID特性,是数据库管理系统(DBMS)确保事务处理的关键属性。这四大特性分别是: 原子性(Atomicity): 原子性要求事务是一个不可分割的单位,要么全部执行,要么全部不执行。如

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包