Mysql:重点且常用的 SQL 标签整理

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

目录

1  <resultMap> 标签

2 <sql> 标签

3 <where> 标签

4 <if> 标签

5  <trim> 标签

6 <foreach> 标签

7 <set> 标签


1 <resultMap> 标签

比如以下代码:

    <resultMap type="SysCollege" id="SysCollegeResult">
        <result property="collegeId"    column="college_id"    />
        <result property="collegeCode"    column="college_code"    />
        <result property="collegeName"    column="college_name"    />
        <result property="collegeProvince"    column="college_province"    />
        <result property="collegeCity"    column="college_city"    />
        <result property="collegeDistrict"    column="college_district"    />
        <result property="collegePhone"    column="college_phone"    />
        <result property="collegeEmail"    column="college_email"    />
        <result property="collegeType"    column="college_type"    />
        <result property="collegeWebsite"    column="college_website"    />
        <result property="collegeIntroduced"    column="college_introduced"    />
        <result property="collegeLogo"    column="college_logo"    />
        <result property="collegeStudentNum"    column="college_student_num"    />
        <result property="collegeMajorNum"    column="college_major_num"    />
        <result property="collegeDeptNum"    column="college_dept_num"    />
        <result property="status"    column="status"    />
    </resultMap>

上述是 <resultMap>  标签来映射查询结果到 SysCollege 对象的示例,该代码定义了一个名为 SysCollegeResult 的结果映射,用于将查询结果中的列与 SysCollege 对象的属性进行映射,这样定义了结果映射之后,当执行查询语句时,MyBatis 将会根据该映射将查询结果中的列值赋给 SysCollege 对象的对应属性。


使用定义好的 <resultMap>标签:

Mysql:重点且常用的 SQL 标签整理,MySql,sql,mysql,mybatis

2 <sql> 标签

比如以下代码:

    <sql id="selectSysMajorVo">
        select major_id, major_code, major_name, major_type, major_degree, major_career from sys_major
    </sql>

这个就是定义好的sql代码块,可以在其它操作中直接使用,可以减少重复代码的编写,是非常方便的。


使用定义好的 <sql>标签:

Mysql:重点且常用的 SQL 标签整理,MySql,sql,mysql,mybatis

3 <where> 标签

<where> 大多数情况下使用在,根据条件动态生成查询条件,生成 WHERE 子句

比如以下代码:

    <select id="selectSysMajorList" parameterType="SysMajor" resultMap="SysMajorResult">
        <include refid="selectSysMajorVo"/>
        <where>  
            <if test="majorCode != null "> and major_code = #{majorCode}</if>
            <if test="majorName != null  and majorName != ''"> and major_name like concat('%', #{majorName}, '%')</if>
            <if test="majorType != null  and majorType != ''"> and major_type = #{majorType}</if>
            <if test="majorDegree != null "> and major_degree = #{majorDegree}</if>
            <if test="majorCareer != null  and majorCareer != ''"> and major_career = #{majorCareer}</if>
        </where>
    </select>

比如:如果 majorCode 不为空,则生成 and major_code = #{majorCode} 的查询条件,其它也是一样。


where和<where>标签有什么区别:

WHERE 关键字是静态的,需要手动编写每个查询条件,并使用连接符(例如 "AND" 或 "OR")来拼接条件。而 <where> 标签是动态的,可以根据条件的存在与否来动态生成 WHERE 子句,并自动处理条件之间的连接符(比如上述代码中的and).

4 <if> 标签

<if> 标签通常用于在动态 SQL 中根据条件判断是否包含某部分 SQL 片段

比如跟上述<where>标签配合使用

5 <trim> 标签

<trim> 元素的作用是根据条件动态生成 SQL 语句的部分内容

比如以下代码:

    <insert id="insertSysMajor" parameterType="SysMajor" useGeneratedKeys="true" keyProperty="majorId">
        insert into sys_major
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="majorCode != null">major_code,</if>
            <if test="majorName != null">major_name,</if>
            <if test="majorType != null">major_type,</if>
            <if test="majorDegree != null">major_degree,</if>
            <if test="majorCareer != null">major_career,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="majorCode != null">#{majorCode},</if>
            <if test="majorName != null">#{majorName},</if>
            <if test="majorType != null">#{majorType},</if>
            <if test="majorDegree != null">#{majorDegree},</if>
            <if test="majorCareer != null">#{majorCareer},</if>
         </trim>
    </insert>

prefix="SET":指定生成的 SET 子句的前缀为 "SET"。

suffixOverrides=",":指定如果 SET 子句的最后一个字符是逗号(,),则将其移除。

prefix="(" 指定了插入语句的列名部分的前缀为左括号 (suffix=")" 则指定了该部分的后缀为右括号 ),即 () 之间就是列名列表


当上述的值都不为空,生成的sql语句是:

insert into sys_major
(major_code, major_name, major_type, major_degree, major_career)
values
(#{majorCode}, #{majorName}, #{majorType}, #{majorDegree}, #{majorCareer})

在这段代码中,useGeneratedKeys="true" 表示要从数据库中获取自动生成的主键值,keyProperty="majorId" 则指定了自动生成的主键值将赋给 SysMajor 对象中的 majorId 属性。

如果执行插入操作成功,并且数据库返回了自动生成的主键值,MyBatis 会将该值赋给 majorId 属性,作为插入操作的返回值。因此,如果程序需要获取插入操作生成的主键值,则可以通过 majorId 属性来获取。如果插入操作失败或者没有生成主键值,则 majorId 属性的值不会改变。

6 <foreach> 标签

<foreach> 标签,用于遍历传入的数组

比如以下代码:实现批量删除!

    <delete id="deleteSysMajorByMajorIds" parameterType="String">
        delete from sys_major where major_id in 
        <foreach item="majorId" collection="array" open="(" separator="," close=")">
            #{majorId}
        </foreach>
    </delete>

item="majorId":指定遍历过程中当前元素的别名为 majorId

collection="array":指定要遍历的集合为 array,即传入的 majorId 数组。

open="(":指定循环开始时的字符为 (

separator=",":指定每个元素之间的分隔符为 ,

close=")":指定循环结束时的字符为 )

#{majorId}:表示当前遍历到的 majorId 元素,会被替换为对应的值。

7 <set> 标签

<set> 标签用于定义一个包含更新字段内容的 SQL 片段

比如以下代码:

 	<update id="updateDictType" parameterType="SysDictType">
 		update sys_dict_type
 		<set>
 			<if test="dictName != null and dictName != ''">dict_name = #{dictName},</if>
 			<if test="dictType != null and dictType != ''">dict_type = #{dictType},</if>
 			<if test="status != null">status = #{status},</if>
 			<if test="remark != null">remark = #{remark},</if>
 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
 			update_time = sysdate()
 		</set>
 		where dict_id = #{dictId}
	</update>

update_time = sysdate() 表示更新 update_time 字段为当前时间文章来源地址https://www.toymoban.com/news/detail-805277.html

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

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

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

相关文章

  • 【常用SQL】MySQL查询重复的数据

    查询重复的数据可以使用SQL中的GROUP BY和HAVING子句。以下是一个示例查询,可以检查名为 table_name 的表中是否有重复的 column_name 列的值: 该查询将按照 column_name 列的值进行分组,并计算每个值的出现次数。然后使用HAVING子句过滤出现次数大于1的组,这些组中的行即为重复数

    2024年02月16日
    浏览(57)
  • Mybatis是什么?Mybatis中动态sql常用标签有哪些?

    Mybatis是什么? Mybatis是一种开源的Java持久层框架,它可以将SQL语句和Java代码进行分离,使得开发人员可以更加专注于业务逻辑的实现。与Hibernate等ORM框架不同的是,Mybatis使用XML或注解的方式来描述SQL语句,这种方式更加灵活,因此在一些需要高度自定义SQL语句的场景下,

    2024年02月05日
    浏览(43)
  • [druid or mybatis] merge sql error, dbType mysql, druid-1.2.12, sql : .

    报这个问题,处理的时候是真的难受了。最终定位到的是自己的mybatis的标签内存在多余的标点 \\\" . \\\" 当时都给尬笑了,还好解决了。

    2024年02月12日
    浏览(45)
  • mysql 系统优化常用sql(2、基础参数)

    show variables like \\\'autocommit\\\';    查看数据库自动提交是否开启 show full processlist;    查看数据库当前运行的线程有哪些 show global variables;  查看数据库所有的全局变量 show variables like \\\'transaction_isolation\\\';  查看数据库当前事务隔离级别 show   index   from  zj_userinfo_expand 查看当前表

    2024年02月09日
    浏览(31)
  • MySQL创建分区方法,及分区中常用SQL示例

    本文总结如何通过sql创建表分区,查看分区,以及日常如何使用分区表。 通过sql语句创建 查看分区情况: 分区中常用SQL示例 1、查询指定分区内的数据:  2、对已存在的表进行分区 3、 删除表的所有分区 4、删除表的特定分区 5、 删除表单个分区内的数据 6、把分区内的数据

    2024年02月11日
    浏览(29)
  • MySQL中常用查看锁和事务的SQL语句

    当我们在使用MySQL数据库时,了解如何查看锁和事务的状态是非常重要的。这些信息可以帮助我们调试和优化数据库性能,以及解决并发访问的问题。在本博客中,我将介绍一些常用的MySQL查询语句,用于查看锁和事务的状态。 1. 查看当前的锁状态 要查看当前数据库中的锁状

    2024年02月09日
    浏览(43)
  • 【业务功能篇52】Springboot+mybatis mysql开启批量执行sql参数 allowMultiQueries=true

    可以在sql语句后携带分号,实现多语句执行。 可以执行批处理,同时发出多个SQL语句。 在application-xxx.xml配置文件中,配置数据库的信息  实例 dao层xml: 逐条更新,但一次提交给MySQL服务器而已。 利用foreach 遍历循环,传入的list集合数据,批量的进行update   MySQL的JDBC连接的

    2024年02月15日
    浏览(43)
  • MySQL、Oracle 常用SQL:建表、建视图、数据增删改查、常用condition

    删除表:DROP TABLE TABLE_NAME; 建表:CREATE TABLE TABLE_NAME(); 主键:PRIMARY KEY 不为空: NOT NULL 默认值:DEFAULT DEFAULT_VALUE MySQL、Oracle 通用样例: 注意:DATATYPE 是指 数据库的数据类型,需要修改成具体数据类型。 INT类型 自增:INT AUTO_INCREMENT 注释:COMMENT 参考案例: INT类型:不支持自

    2024年01月16日
    浏览(45)
  • mybatis&Mysql分页查询,以及SQL_CALC_FOUND_ROWS与count(*) 性能对比

    温故而知新,这里记录一下         分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页。         相当于执行了limit分页语句,返回部分数据。物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般

    2024年01月23日
    浏览(54)
  • mybatis-plus技巧--动态表名-多语句-拼接sql--关于mybatis的mysql分页查询总数的优化思考

    传入tableName参数就可以了,不过只能用$不能用# 因为#会发生预编译,然后会在表名上加引号’\\\'。 新建一个表名拦截类实现TableNameHandler mybatisPlus添加插件 实例: 每天按统计 如果表名为count则加上今天的时间 每次设置 直接设置名字,然后就会改变的。 需要在配置文件中的

    2024年01月16日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包