数据库SQL语句规范(Mapper.xml文件)及模板

SpringBoot(七)使用mapper注解编写sql操作数据库 使用mapper注解编写sql是mybatis3中增加了使用注解来配置Mapper的新特性,下面是主要介绍其中几个@Provider的使用方式,他们是:@SelectProvider、@UpdateProvider、@InsertProvider和@DeleteProvider。1:在开发的时候,我先使用xml来拼接的sql,测试没有之后,我又尝试了一下使用@mapper注解来拼接sql,xml中的id和@mapper注解中对应的method是一样的。就不需要在xml中编写对应的SQL,相对来说方便一些。 阅读详情

数据库SQL语句规范(Mapper.xml文件)及模板

一.实体entity及请求对象,响应对象

  1. 实体
package com.xxx.xxx.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_abc_entity")
public class  User implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 姓名
    **/
    @TableField("name")
    private String name;
    
     /**
     * 年龄
     */
    @TableField("age")
    private Integer age;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createdTime;
}
  1. 请求对象
package com.xxx.xxx.dto;

import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class RequestDto implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

	 /**
     * 姓名
    **/
    private String name;
    
     /**
     * 年龄
     */
    private Integer age;
    
    /**
     * 年龄列表
     **/
    private List<Integer> ageList;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdTime;
}

3.响应对象

package com.xxx.xxx.vo;

import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
public class ResponseVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

	 /**
     * 姓名
    **/
    private String name;
    
     /**
     * 年龄
     */
    private Integer age;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdTime;
}

二. Mapper层数据库中的执行语句写法
解释说明:
1)id后面跟的是方法名,parameterType后面跟的是请求对象类型(带上包名),resultType后面跟的是响应对象类型(带上包名);
2)useGeneratedKeys=“true” keyProperty="id"表示:如果插入的表id以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键id返回。useGeneratedKeys参数只针对 insert 语句生效,默认为 false;
3)当对数据库进行批量操作的时候使用时需要注意,如果在Mapper.java文件中对应的方法中使用了@Param(“list”)这个注解进行绑定时,参数列表一定要相同都是list,否则在数据进入数据库操作时会报错

  1. 新增一条数据
<insert id="insert" parameterType="com.xxx.xxx.entity.User" useGeneratedKeys="true" keyProperty="id">
        insert into t_abc_entity
        (
            name,
            age,
            create_time,
        )
        values
        (
            #{name},
            #{age},
            #{createTime}
        )
    </insert>
  1. 批量新增
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
        insert into t_abc_entity
        (
            name,
            age,
            create_time,
        )
        values
		<foreach collection="list" item="item" separator=",">
 		(
            #{item.name},
            #{item.age},
            #{item.createTime}
        )
        </foreach>
</insert>
  1. 通用查询
<select id="queryBySelect" parameterType="com.xxx.xxx.dtoRequestDto " resultType="com.xxx.xxx.vo.ResponseVo">
        select id,name,age,create_time
        from t_abc_entity
        <where>
            <if test="id != null">
                and Id =  #{id}
            </if>
            <if test="name != null and name!=''">
                and name = #{name,jdbcType=VARCHAR}
            </if>
            <if test="age != null">
                and age = #{age}
            </if>
            <if test="ageList!= null and ageList.size() > 0">
                AND age IN
                <foreach collection="ageList" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="createTime != null and createTime !=''">
                and create_time= #{createTime,jdbcType=VARCHAR }
            </if>
       </where>
</select>
  1. 批量删除(根据id)
<delete id="deleteByIds" parameterType="java.util.List">
        delete
        from t_abc_entity
        where ID in 
        (
        <foreach collection ="list" item="item" separator="," >
            #{item}
        </foreach>
        )
    </delete>
  1. 批量选择更新
<update id="batchUpdate" parameterType="java.util.List">
        <foreach  item="emp" separator=";" collection="list">
            update t_abc_entity
            <set>
                <if test="emp.name != null">
                    name  =  #{emp.name },
                </if>
                <if test="emp.age!= null">
                    age=  #{emp.age},
                </if>
                <if test="emp.createdTime!= null">
                    create_time=  #{emp.createdTime}
                </if>
 			</set>
            where
            ID = #{emp.id}
        </foreach>
    </update>
MyBatis Mapper与XML文件自动化生成指南 MyBatis是一个功能强大且灵活的ORM框架,它允许开发者将SQL语句直接嵌入到Java代码中,并通过简单的API与数据库进行交互。与传统JDBC相比,MyBatis极大地减少了样板代码和开发量。它的核心架构围绕着SQLSessionFactory和SqlSession两个接口构建,前者负责创建后者。在现代Java应用程序中,MyBatis通过将业务逻辑与数据访问逻辑分离,简化了数据持久层的操作,为开发者提供了高度的定制能力和优秀的灵活性。MyBatis的核心优势在于其灵活的SQL语句映射能力。 阅读详情

相关推荐

那些年对支付宝的研究[整理]

支付宝功能强大.他内部各个功能间的跳转是通过Uri 实现的.而使用window.location.href 即可.跟浏览器一样的协议.很方便 H5启动支付宝: alipays://platformapi/startapp?appId=20000067&url=网址 alipays://platformapi/startapp?appId=20000691&url=网址 ali...

技术专研 8917

在Mapper.xml中写复杂的动态SQL语句

在Mapper.xml中写复杂的动态SQL语句

小何的博客 6480

SIwave仿真手册——电源完整性仿真之PDN阻抗的提取(四)

(想不到我这个弱鸡的博主有一天也有被催更的时候,看到后台被催的消息,我慌了,赶紧写一篇把。) 文章目录3.1 PDN阻抗的提取3.1.1手动完成PDN阻抗的提取1、创建pin group2、创建端口3、数据文件的清理和检查(参考1.3.4&1.3.5)4、添加电容模型(参考2.2.1)(==这一步很重要==)5、开始仿真6、查看仿真结果3.1.2利用向导工具完成PDN阻抗的提取1、点击图标![在这里插入图片描述](https://img-blog.csdnimg.cn/36d974339ea5449

luohuo9844的博客 1万+

Mapper.xml动态sql

Mapper.xml动态sql

skqpp1314的博客 3864

C#报表,使用微软rdlc模板,生成Excel, PDF, Word, Image文件,使用自定义对象做数据集不连接数据库

我项目是用vs2017 建的,.NET farmwork 4.7.2 这种报表可以用于任何模式的应用,web,桌面,因为这只是生成一个文件或者文件流 步骤比较详细啰嗦,其中有讲到rdlc怎么新建设计,如果已经会设计rdlc了的可以直接跳到底部看代码的执行结果, 底部还有源码下载链接,百度盘 首先控制台安装报表包 新建rdlc 报表 建立rdlc里要用的数据模型 模型建完,或者修改都要重新...

qq_35955916的博客 5203

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 300

mapper.xml书写模板

mapper.xml简单书写格式模板

wudidabiaobei的博客 4346

Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件

在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。

赞的博客 1557

mapper.xml的基本写法

修改代码块 <update id="editContent" parameterType="com.ilearning.ssm.pojo.LessionContent"> update tb_lession_content <set> <if test="tb_le_con_content!=null"> tb_le_con_content=#{tb_le_con_conten

Types_c的博客 3838

结合MATLAB/Simulink和多体动力学仿真软件UM(Universal Mechanism),建立高速列车轴箱轴承的动力学模型,并通过联合仿真分析其正常运行特性和典型故障模式

高速列车是现代交通运输的重要组成部分,其运行速度高、载客量大,对安全性和可靠性提出了极高的要求。轴箱轴承作为高速列车的关键部件之一,承担着传递载荷和支撑车轴的重要作用。然而,由于长期运行在高速、重载和复杂工况下,轴箱轴承容易出现疲劳磨损、润滑失效和裂纹等故障,从而影响列车的安全性。本项目旨在结合MATLAB/Simulink和多体动力学仿真软件UM(Universal Mechanism),建立高速列车轴箱轴承的动力学模型,并通过联合仿真分析其正常运行特性和典型故障模式。

xiaoheshang_123的博客 330

级联H桥构网型储能SVG系统设计与VSG控制策略研究

随着新能源渗透率不断提高,电力系统惯量和阻尼水平持续下降,传统跟网型控制策略在弱电网条件下的稳定性面临严峻挑战。构网型控制以电压源方式运行,能够为系统提供惯量和频率支撑,成为当前研究热点。本文针对10kV/10Mvar级联H桥构网型储能静止无功发生器(SVG),采用星形连接拓扑结构,设计了基于虚拟同步发电机(VSG)的构网型控制策略。文章从主电路拓扑设计、数学建模、VSG控制策略设计、调制策略、直流电压平衡控制、系统参数设计、仿真建模和硬件实现等八个方面展开系统论述,给出了完整的Simulink仿真模型~~

huanghm88的专栏 350

mybatis开发dao方法-SqlSession的应用场景

1、mybatis开发dao的方法: (1)SqlSession使用范围 ​ 通过SqlSessionFactoryBuilder创建会话工SqlSessionFactory ​       将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder ​       在需要创建SqlSessionFac

weixin_49109957的博客 644

大唐杯5G考前冲刺篇(回顾全文重点必看)

大唐杯习题复习指南

nimo观察者 1万+

MyBatis XML 配置文件:从配置规范到 CRUD 开发实践

MyBatis的开发方式有两种:注解、XML。下来要将的就是XML,如果想要看MyBatis注解的,可以看我上一篇文章。

2301_80543957的博客 2194

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Mapper.xml中的sql语句详解

本文介绍了MyBatis常用XML标签及其使用场景。重点讲解了<mapper>根标签的namespace属性、<sql>代码复用、<resultMap>结果映射等基础标签。详细说明了增删改查标签(<select>、<insert>、<update>、<delete>)的属性和注意事项,比较了#{}和${}的区别。最后介绍了动态SQL(<if>、<where>)和批量操作(<foreach>

m0_59074121的博客 915

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Mapper.xml

mapper映射文件***Mapper.xml <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> ...

HongRi_的博客 800

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

mapper.java.ftl(Mapper 接口模板标准规范版2)

MyBatis-Plus最佳实践代码生成模板 摘要:提供MyBatis-Plus代码生成器的标准模板文件,包含mapper.java.ftl和mapper.xml.ftl两个核心组件。模板遵循企业级开发规范,具有以下特点: 接口与XML分离设计 继承BaseMapper自动获得CRUD方法 强制使用@Mapper注解 包含详细中文注释说明 支持自定义SQL片段 方法命名规范统一 参数校验和异常处理明确 预留扩展方法示例 模板严格遵循MyBatis-Plus最佳实践,确保生成的代码具有规范性、可维护性和扩展性

python15397的博客 380

MyBatis学习:mapper.xml文件标签中parameterType属性的说明和使用

目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。目前已经阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,认识了框架,回顾了JDBC连接数据库,初步建立了使用MyBatis和MySQL的Maven项目,简单解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,本篇博客记录一下parameterType属性和它的使用。...

weixin_46281472的博客 1万+

mapper命名规范_这下够清楚了吧!详解Mybatis的Mapper映射文件

前言上节我们介绍了 《 Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 》,内容很详细( 也很枯燥),由于篇幅实在过于冗长,我预计大家想看完得花上两段上班地铁公交车的时间 。。。不过应该有让大家了解到 Mybatis 的核心配置文件 config.xml 全貌,其中的 元素即是我们本节准备登场介绍的 SQL 映射器,上节有介绍了三种引入 SQL 映射器的方式,本节...

weixin_39593354的博客 2925

Mybatis——mapper.xml中的SQL标签

今天写mapper.xml文件时使用了一些不常用的SQL标签,上网发现还有好多,就想着把SQL标签全部总结一下。!!

2203_75372944的博客 1489

(Mybatis笔记)Mybatis配置文件和映射模板——SqlMapConfig.xml和Mapper.xml

Mybatis配置文件和映射模板——SqlMapConfig.xml和Mapper.xml

张松的博客 6020

Mybatis中的mapper.xml文件学习和使用

Mybatis中的mapper.xml文件学习和使用 本文是基于Windows 10系统环境,进行Mybatis中的mapper.xml的学习和使用 Windows 10 Mybatis 一、mapper.xml书写规范 (1) select语句 <select id="getUserByMap" parameterType="java.util.Map" resultType="ja...

哈工大许政的博客 1万+

Mybatis-XML映射文件

本文简单讲解Mybatis-XML映射文件的编写规范,如何配置XML文件的前提约束,讲解相关的属性含义

weixin_61605998的博客 508

使用IDEA做项目时mapper.xml中的sql语句

不以人人的意志为转义乃天道 4122

mapper.xml映射文件详解

      Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd。我们先大体上看看支持哪些配置:映射文件是以&lt;mapper&gt;作为根节点,在根节点中支持9个元素,分别为insert、update、delete、select(增删改查);cache、cache-ref、resultMap、parameterMap、sql。 下文中...

TomHaveNoCat的博客 1791

IDEA配置MyBatis Mapper.xml模板实战指南

MyBatis XML 是基于 DTD 约束的强规范配置文件,其核心原理依赖 DOCTYPE 声明、namespace 与接口严格绑定、resultType/typeHandler 类型校验三大契约。这类配置缺乏编译期检查,错误常延迟至运行时暴露,导致启动失败、空结果、事务失效等典型问题。通过在 IntelliJ IDEA 中配置标准化 Mapper.xml 模板,可将 DTD 校验、变量化命名空间、预置动态 SQL 片段等能力内建为开发流程,显著提升编写准确率与团队协作效率。尤其适用于 Spring Bo

weixin_28829903的博客 193
上一篇: 运行spring boot项目 报错{“timestamp“:16524, “status“:404, “error“:“Not Found“, “message“:““, “path“:“url“}
下一篇: 数据库中字段存在关键字,查询出错
ccpshare
博客等级 码龄6年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值