首页 > 数据库 >关于IDEA使用xml实现动态sql的问题

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

时间:2024-05-17 11:09:02浏览次数:20  
标签:xml XML mapper 代码 sql IDEA 语句 SQL

 如上图,我在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的灵活拼接和独立维护。


标签:xml,XML,mapper,代码,sql,IDEA,语句,SQL
From: https://www.cnblogs.com/onecr/p/18197479

相关文章

  • navicat怎么连接sqlserver
    1.打开SQLServer配置管理器点击SQLServer网络配置、把协议保持启用,如果默认已启用就不用管;把IP地址里的IPAll里的TCP端口改为1433(SQLServer的端口是1433,Mysql的是3306);检查SQLNativeClient11.0的配置,确认协议也在开启,端口为1433;SQLServer的名称这里的服务器名称就是主机名......
  • qt的xml读取和使用
    将数据保存文件QByteArrayfileAsByteArray;QFilefile(filename);if(!file.open(QIODevice::WriteOnly)){qDebug()<<"文件未打开.";}file.write(fileAsByteArray);file.close();读取文件QByteArraybyteArray=file.readAll();使用xml分析文件QXmlStre......
  • 第四节:MySQL主从集群搭建、扩容与数据迁移、半同步复制详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • GreatSQL数据库DROP表后无法重建
    一、数据库信息:数据库版本:5.7.21-log某银行测试数据库,APP业务库内有一个含有大量(几百个)分区表的大表test_app。DROP该分区表的大表后导致无法重建该分区表。二、问题描述:客户使用“droptabletest_app;”时,显示表删除成功。当重新执行该表的建表语句时,报错“Table'app.test_......
  • mysql容器的定时备份脚本,有二种方法
    mysqldump[root@localhostnode]#cat/root/mysqlbeifen.sh#!/bin/bash#定义参数CONTAINER_NAME="mysql"HOST_BACKUP_DIR="/bak"REMOTE_MACHINE_IP="192.168.0.29"REMOTE_TARGET_DIR="/bak/cd"MYSQL_USER="root"M......
  • DBA(Database Administrator)数据库运维-mysql
    一、开篇1、版本选择1、企业版2、社区版MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试的,包括软件代码的管理、测试工作,也是他们在负责。社区也会设立BUG汇报机制,收集用户在使用过程中遇到的BUG情况,相比于企业版,社区版的开发及测试环境没有那么......
  • Python查询PostgreSQL数据库
    哈喽,大家好,我是木头左!Python与PostgreSQL的连接需要了解如何在Python中连接到PostgreSQL数据库。这通常涉及到使用一个库,如psycopg2,它是Python中用于PostgreSQL的最流行的适配器。安装psycopg2非常简单,可以通过pip进行安装:pipinstallpsycopg2安装完成后,可以使用以下代码......
  • sql 查询语句
    表结构如下:1、显示所有职工的基本信息。select*fromworker;2、查询所有职工所属部门的部门号,不显示重复的部门号。selectdistinct`部门号`fromworker;3、求出所有职工的人数。selectcount(*)as'人数'fromworker;4、列出最高工和最低工资。法一select......
  • mysql在select ······ for update 在什么情况下加什么锁
    准备环境:select@@version;select@@autocommit;set@@autocommit=0;CREATETABLE`user_info_tab`(`id`intNOTNULLAUTO_INCREMENT,1.1.`user_name`varchar(255)DEFAULTNULL,......
  • 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)
    转自:从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~讲师介绍丁俊新炬网络首席性能优化专家SQL审核产品经理DBAplus社群联合发起人、《剑破冰山-Oracle开发艺术》副主编OracleACEA,ITPUB开发版资深版......