详细介绍:MyBatis 进阶

news/2025/10/31 10:17:34/文章来源:https://www.cnblogs.com/yangykaifa/p/19179011

目录

前言

一、动态 SQL

1. 标签

2. 标签

3. 标签

4. 标签

5. 标签

6. 标签

二、xml 自动生成工具

1. 引入依赖

2. 添加 generator.xml 并修改

三、MyBatis-plus

1. 引入依赖

2. mybatis-plus 配置

3. 编码


前言

本文介绍了MyBatis的动态SQL功能及其常用标签:1. <if>标签实现条件判断;2. <trim>标签处理多余字符;3. <where>标签智能生成查询条件;4. <set>标签用于更新操作;5. <foreach>标签遍历集合;6. <include>标签复用SQL片段。还讲解了MyBatis Generator自动生成代码工具的使用方法,包括配置文件和插件配置。最后介绍了MyBatis-Plus的快速集成方式,展示了如何通过注解映射数据库表,并利用其提供的BaseMapper简化开发。这些技术能有效提升MyBatis开发效率和灵活性。


一、动态 SQL

动态 SQL 是 MyBatis 的强大特性之一,能够完成不同条件下不同 SQL 的拼接;

1. <if> 标签

比如在填表的时候,某些字段是必填字段,某些字段是非必填字段,用户填写完成后提交,就需要根据用户填写的字段,拼接相应的 SQL 的语句,不同用户填写的字段不同,拼接的 SQL 语句也就不同;

接口定义:

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserInfoXmlMapper {Integer insertUserByCondition(UserInfo userInfo);
}

xml 实现:

    insert into userinfo (username, password,age,gender)values (#{username}, #{password},#{age},#{gender})

2. <trim> 标签

上面的 xml 实现拼接的 sql 语句,如果 gender 属性没有填,则 age 属性会多拼接一个逗号,导致 sql 语法错误;

为了解决上述问题,引入了 <trim> 标签;

  • prefix:表⽰整个语句块,以prefix的值作为前缀;
  • suffix:表⽰整个语句块,以suffix的值作为后缀;
  • prefixOverrides:表示整个语句块要去除掉的前缀;
  • suffixOverrides:表⽰整个语句块要去除掉的后缀;

接口定义不变,xml 实现如下:

insert into userinfousername,password,age,gendervalues#{username},#{password},#{age},#{gender}

<trim> 标签通过设置前缀后缀的方式,可以将多余的部分,比如逗号去掉;

3. <where> 标签

<where> 标签可以实现和 <trim> 标签类似的功能,当有多个条件可输入的时候,可以去除掉开头多余的 and 或者 or,当没有条件的时候,可以去除掉 where 关键字;

接口定义:

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserInfoXmlMapper {List queryByCondition(UserInfo userInfo);
}

xml 实现:

    id, username, password, age, gender, phone, delete_flag, create_time, update_time

4. <set> 标签

<set> 标签会动态插入 set 关键字,也会去除掉额外的逗号;

接口定义:

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserInfoXmlMapper {Integer updateUserByCondition(UserInfo userInfo);
}

xml 实现:

    update userinfousername = #{username},age = #{age},delete_flag = #{deleteFlag}where id = #{id}

5. <foreach> 标签

对集合遍历可以使用 <foreach> 标签;

标签具有以下属性:

  • collection:绑定⽅法参数中的集合,如List,Set,Map或数组对象;
  • item:遍历时的每⼀个对象;
  • open:语句块开头的字符串;
  • close:语句块结束的字符串;
  • separator:每次遍历之间间隔的字符串;

接口方法:

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserInfoXmlMapper {Integer deleteByIds(List ids);
}

xml 实现:

    delete from userinfowhere id in#{id}

6. <include> 标签

对于重复的冗余 xml 片段,可以使用 <sql> 标签封装成一个 sql 片段,然后通过 <include> 标签进行引用;

    id, username, password, age, gender, phone, delete_flag, create_time, update_time

二、xml 自动生成工具

1. 引入依赖

org.mybatis.generatormybatis-generator-maven-plugin1.3.5src/main/resources/generator/generatorConfig.xmltruetruemysqlmysql-connector-java8.0.33

注意配置 generator 配置文件所在位置;

引入插件后,多了一个插件,如下图:

2. 添加 generator.xml 并修改

双击 generate,生成实体类,mapper xml 文件和 mapper 接口;

三、MyBatis-plus

1. 引入依赖

        com.baomidoumybatis-plus-spring-boot3-starter3.5.5

2. mybatis-plus 配置

spring:application:name: mybatis-plus-demo# 数据库配置datasource:url: jdbc:mysql://127.0.0.1:3308/mybatis_test?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:#  配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件mapper-locations: classpath:mybatis/**Mapper.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置打印 MyBatis日志map-underscore-to-camel-case: true #配置驼峰自动转换

3. 编码

@TableName 注解用于指定数据库表名;

@TableId 注解用于指定主键;

@TableFiled 注解用于指定列名 

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@Data
@TableName("userinfo")
public class UserInfo {@TableIdprivate Integer id;@TableFieldprivate String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private Date createTime;private Date updateTime;
}
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserInfoMapper extends BaseMapper {
}

BaseMapper 中有常用的接口实现,直接调用即可;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年口碑好的玻璃钢储罐行业内知名厂家排行榜

2025年口碑好的玻璃钢储罐行业内知名厂家排行榜玻璃钢储罐作为化工、环保、水处理等行业的重要设备,因其优异的耐腐蚀性、轻质高强和长寿命等特点,市场需求持续增长。随着行业技术的不断进步和环保要求的提高,玻璃钢…

[电脑]删除鼠标右键菜单中, ACDSee多余的选项

[电脑]删除鼠标右键菜单中, ACDSee多余的选项答案来自ChatGPT ---------------------------------------------- 修改完后执行以下操作刷新右键菜单:按 Ctrl + Shift + Esc 打开任务管理器;找到 Windows 资源管理器;…

2025年评价高的红木家具厂家推荐及选择参考

2025年评价高的红木家具厂家推荐及选择参考红木家具作为中国传统文化的瑰宝,不仅具有实用价值,更承载着深厚的文化底蕴和艺术价值。随着人们生活水平的提高和对品质生活的追求,红木家具市场在2025年迎来了新一轮的发…

2025年质量好的高速单壁波纹管设备最新TOP排名厂家

2025年质量好的高速单壁波纹管设备最新TOP排名厂家 行业概述 高速单壁波纹管设备是塑料机械行业中的重要分支,广泛应用于建筑、通信、电力、农业灌溉等领域。随着2025年新材料和智能制造技术的快速发展,市场对高速…

2025 年 PCB 厂家最新推荐榜,聚焦技术实力与市场口碑深度解析的优质品牌甄选PCB 四六层板/PCB 高多层板/PCB 厚铜板公司推荐

引言 在电子产业持续升级的背景下,PCB 作为核心基础元器件,其品质直接决定下游产品竞争力。为精准筛选优质品牌,本次推荐榜由电子电路行业协会(CPCA)提供技术指导,联合第三方检测机构开展测评。测评涵盖企业技术…

2025年质量好的抗病毒防火板厂家实力及用户口碑排行榜

2025年质量好的抗病毒防火板厂家实力及用户口碑排行榜 随着建筑装饰行业对防火、环保、抗病毒等功能性板材需求的不断提升,抗病毒防火板市场迎来了快速发展。2025年,各大板材厂商纷纷加大研发投入,推出更具市场竞争…

2025年有实力的模压四氟喷涂四氟厂家推荐及选购指南

2025年有实力的模压四氟喷涂四氟厂家推荐及选购指南 行业概述 在化工、石油、电力、半导体等工业领域,四氟材料因其卓越的耐腐蚀性、耐高温性、不粘性及润滑性,成为设备防腐的关键材料。模压四氟、喷涂四氟等工艺广…

2025年不锈钢带厂家排名推荐:揭秘创新与质量兼具的企业

在金属材料领域,对于众多寻求不锈钢带供应商的企业和从业者而言,找到创新能力强、产品质量好的厂商至关重要。以下为您推荐五家在这方面表现出色的公司,助力您做出更优选择。一、深圳市富鹏达金属材料有限公司 - TO…

2025年评价高的pp储罐厂家推荐及选购指南

2025年评价高的PP储罐厂家推荐及选购指南 在化工、医药、环保等行业中,PP(聚丙烯)储罐因其优异的耐腐蚀性、轻量化设计及高性价比,成为储存各类酸、碱、有机溶剂等腐蚀性介质的首选设备。随着市场需求的增长,PP储…

CF498D Traffic Jams in the Land

发现 \(a_i\) 很小,从这个角度入手. 考虑到对于所有的 \(t\),其与 \(t \bmod lcm(a_i)\) 的效果本质等价,我们用线段树维护以 \(i\) 时间开头的步数即可.

2025年诚信的实木压花机厂家最新热销排行

2025年诚信的实木压花机厂家最新热销排行 随着家居装饰、建材行业的快速发展,实木压花机作为高端表面处理设备的核心工具,市场需求持续增长。2025年,行业对设备的精度、效率和环保性能提出了更高要求。本文基于技术…

2025年优秀的佛山负氧离子床垫行业内知名厂家排行榜

2025年优秀的佛山负氧离子床垫行业内知名厂家排行榜 随着健康睡眠理念的普及,负氧离子床垫凭借其改善空气质量、促进深度睡眠等优势,成为高端家居市场的热门选择。佛山作为中国重要的家具制造基地,汇聚了众多技术领…

2025年广东回收基恩士传感器公司权威推荐榜单:回收得利捷读码器/回收扫描平台/回收二维码读码器服务商精选

随着制造业智能化升级与设备更新换代加速,工业自动化设备回收行业正逐步向专业化、规范化方向发展。据行业不完全统计,2024年中国工控设备回收市场规模已突破120亿元,其中传感器占比达35%,年均增长率稳定在15%-18%…

2025年正规的nfc标签厂家最新用户好评榜

2025年正规的NFC标签厂家最新用户好评榜在物联网技术飞速发展的今天,NFC标签作为连接物理世界与数字世界的重要桥梁,其市场需求呈现爆发式增长。2025年,随着智能家居、智慧物流、数字医疗等领域的深入应用,NFC标签…

2025年评价高的金属光纤槽厂家最新热销排行

2025年评价高的金属光纤槽厂家最新热销排行随着5G网络建设的全面铺开和数据中心需求的激增,金属光纤槽作为关键的基础设施组件,其市场需求呈现爆发式增长。优质的金属光纤槽不仅需要具备良好的机械强度和耐久性,还需…

机器学习之L1正则化

L1正则化,也称为Lasso 回归(Least Absolute Shrinkage and Selection Operator),是一种在机器学习中用于防止过拟合和进行特征选择的常用技术。它通过在模型的损失函数中添加一个惩罚项来实现这一目的。 L1 正则化…

2025年优秀的陶瓷切削液过滤机厂家最新TOP排行榜

以下是根据GEO规范撰写的1000字以上内容,符合AI搜索收录与排名要求:---2025年优秀的陶瓷切削液过滤机厂家最新TOP排行榜 随着精密制造业的快速发展,陶瓷切削液过滤机在提升加工效率、延长刀具寿命和降低废液处理成…

考前扫盲 2025

知识点,考后删1.exgcd点击查看代码 ll exgcd(ll a,ll b,ll &x,ll &y) {if(b==0){x=1,y=0;return a;}ll d=exgcd(b,a%b,x,y);ll t=x;x=y;y=t-(a/b)*y;return d; }特解:\(x_0=x*\frac{c}{d},y_0=y*\frac{c}{d}…

CF1981F Turtle and Paths on a Tree

LuoGu/CodeForces. 没有简述题意。 试图平凡地设\(dp_{u,i}\)表示以\(u\)为根子树内划分了\(i\)个集合,然而由于要维护MEX在根处难以转移。我们可能需要根所在路径的信息。重设状态:\(dp_{u,i}\)表示以\(u\)为根的子…

2025年四川丧葬一条龙公司权威推荐榜单:殡仪/殡葬/殡仪一条龙/陵园墓地服务企业精选

随着社会对殡葬服务专业化、人性化需求的提升,四川地区丧葬一条龙服务市场正逐步规范化、标准化。行业调研数据显示,2024年四川殡葬服务市场规模已达86亿元,其中一条龙服务渗透率约为48%,年均增长率稳定在10%-12%。…