关于IDEA使用xml实现动态sql的问题

news/2024/11/19 23:20:05/文章来源:https://www.cnblogs.com/onecr/p/18197479

 如上图,我在mapper层编写了一个list方法用于实现动态sql。

1.导入使用xml文件的mybatis依赖。

 2.配置文件的修改

.properties

 .yml

 

  1. mybatis.mapper-locations=classpath:mapper/*.xml

    • 这个配置项指定了 MyBatis 映射器 XML 文件的位置。
    • classpath:mapper/*.xml 表示 MyBatis 应该在类路径的 mapper 目录中查找映射器 XML 文件。
    • 这些 XML 文件定义了 SQL 语句和结果映射。
  2. mybatis.type-aliases-package=com.example.big_event.pojo

    • 这个配置项指定了 MyBatis 应该在哪个包中查找并注册为类型别名的 Java 类。
    • 类型别名是可以在 MyBatis XML 配置文件中使用的简短名称,代替完全限定的类名。
    • 例如,如果你有一个 com.example.big_event.pojo.User 类,你可以在映射器 XML 文件中使用 User 来代替完整的类名。

 namespace:填写mapper层的类。
id:mapper层你所编写的动态sql方法名

resultType:实体属性类

注意:xml文件名称要跟mapper层的文件名称保持一致。

语句填写好后就实现了xml文件的基本配置了。

 

在使用动态SQL时,有些开发者选择将SQL语句直接写在方法上,使用依赖注解的方法来实现,而另一些开发者则选择使用XML文件来编写动态SQL。两者各有优缺点,选择哪种方式主要取决于项目需求、团队习惯和代码维护的考虑。下面将详细探讨这两种方法的优缺点。

使用依赖注解的方法编写动态SQL

优点:

  1. 简洁明了:将SQL语句直接写在方法上,代码集中在一个地方,便于查看和理解。
  2. 方便调试:在调试时,可以直接看到SQL语句,方便快速定位问题。
  3. 代码一致性:使用依赖注解的方式,可以让SQL和业务逻辑保持在同一个地方,增强代码的可读性和一致性。

缺点:

  1. 复杂的SQL处理困难:对于复杂的动态SQL,使用注解会使方法变得非常复杂和难以维护。
  2. 代码膨胀:如果SQL语句较长或较复杂,方法体会变得臃肿,不利于代码的清晰和简洁。
  3. 注解的限制:注解方式在某些情况下可能受到限制,不能灵活地处理所有动态SQL需求。

使用XML文件实现动态SQL

优点:

  1. 灵活性高:XML文件支持复杂的动态SQL生成,使用标签(如 <if><choose><foreach> 等)可以灵活地拼接SQL语句。
  2. 代码清晰:将SQL与Java代码分离,可以使代码更清晰,业务逻辑和SQL语句各自独立,便于维护。
  3. 易于修改:修改SQL语句时,不需要重新编译Java代码,只需要修改XML文件即可,方便部署和维护。
  4. 重用性强:可以将常用的SQL片段抽取成公用的XML片段,在多个地方重用,减少代码重复。

缺点:

  1. 调试困难:由于SQL语句不直接在Java代码中,调试时需要额外的步骤查看生成的SQL语句。
  2. 学习成本:需要学习和掌握XML标签的用法,对于新手来说,可能需要一些学习成本。
  3. 配置文件管理:大量的XML文件可能导致配置文件的管理和维护变得复杂。

总结

使用哪种方法主要取决于项目的具体需求和团队的偏好:

  • 项目规模较小,SQL语句简单:可以考虑使用依赖注解的方法,简洁直观。
  • 项目规模较大,SQL语句复杂:建议使用XML文件,便于SQL的灵活拼接和独立维护。


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

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

相关文章

基于LoRa的智慧农业解决方案--ASR6601、SX1278、SX1262

我国《数字乡村发展战略纲要》明确指出“要推进农业数字化转型”,加快推广云计算、大数据、物联网、人工智能在农业生产经营管理中的运用。然而,目前我国的农业数字化转型还面临着诸多挑战。我国整体农业机械化程度和自动化控制水平仍然较低。由于农田面积广袤,大量的区域没…

服务器mac地址变化

检查是否开启了多路复用检查是否开启了随机硬件地址留待后查,同时方便他人 联系我:renhanlinbsl@163.com

基于阿里云实现手机号验证功能

一、阿里云手机短信验证码服务阿里云创建账号 https://home.console.aliyun.com/home/dashboard/ProductAndService搜索短信服务选择签名、资质管理、新增资质创建签名创建新模版,其中对映签名等信息查看模版获取ID 和 Key (1).选中头像,创建AccessKey创建工具类/// <summ…

第八章:路由基础

第八章:路由基础 路由: 在特定的拓扑上,选择从 source 节点到 destination 节点的路径。一个好的路由算法,即使面对 non-uniform traffic pattern,也能有效地均衡负载,使实际 throughput 更加接近于理想情况。 好的路由算法可以使路径长度尽可能短,从而减少跳数和传输的…

navicat怎么连接sqlserver

1.打开SQLServer配置管理器点击SQL Server 网络配置、把协议保持启用,如果默认已启用就不用管; 把IP地址里的IPAll里的TCP端口改为1433(SQL Server的端口是1433,Mysql的是3306); 检查SQL Native Client11.0的配置,确认协议也在开启,端口为1433; SQLServer的名称 这里的…

你知道 Java 有哪些引用吗?

判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用。前言判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用。一、概述二、详解 1. 强引用 概述 在Java程序中,强引用…

通过HPA+CronHPA组合应对业务复杂弹性伸缩场景

华为云CCE服务通过将HPA与CronHPA组合,实现指标弹性策略与定时弹性策略的有机协同,满足了客户业务复杂的弹性伸缩场景。本文分享自华为云社区《通过HPA+CronHPA组合应对业务复杂弹性伸缩场景》,作者:云容器大未来。背景 在k8s集群中,容器水平自动伸缩(HPA),可以根据容器资…

Linux基础知识(Ubuntu)

文件权限 意义权限类型 1. r 可读 2. w 可写 3. x 可执行/切换陌路 4. - 无权限通配符 * 匹配0个或多个字符串 ?匹配1个字符 [abcd] 匹配abcd中间任意一个字符 [a-Z] 匹配a-Z范围里的任意一个字符 [!abc] 不匹配方括号里的任何一个字符 ;与[^abc]一致帮助命令 man 语法 man […

join、inner join、left join、right join、outer join的区别

什么是联结?union、intersect等集合运算,它的特征是以 “行” 为单位进行操作,通俗点说,就是进行这些集合运算,会导致记录行数的增减,使用union会增加记录行数,使用 intersect 或 expect 会减少行记录,集合运算不会导致 “列” 数量的改变。而联结(join) 操作,就是将其…

基于.net core 七牛云上传多图片

一、基于.net core 七牛云上传图片上传创建七牛云账号,链接:https://portal.qiniu.com/home 新建空间(可以选择华北,可设置公开或私有(公开返回前台不需要token))单图片上传 /// <summary> /// 上传文件 /// </summary> /// <param name="file"…

Hadoop集群配置免密SSH登录方法

K8s集群配置免密ssh登录 K8S集群包含1个主节点和2个从节点,需要实现各节点之间的免密码登录,下面介绍具体的实现方法。 一、K8s集群环境 二、免密登录原理 每台主机authorized_keys文件里面包含的主机(ssh密钥),该主机都能无密码登录,每台主机的authorized_keys文件里面…

element-ui里选择器select多选

select默认情况下都是单选(如上图),但有时候就需要多选,那就需要添加multiple属性,但这样的话数据会一直叠加,把选择框撑大,如下图:这样的话需要添加 collapse-tags 属性将它们合并为一段文字,效果如下:但如果选多了,清除会不方便,那样的话需要添加clearable属性,…