首页 > 数据库 >整合了mybatis-plus后,就不用再xml文件里面写sql了吗

整合了mybatis-plus后,就不用再xml文件里面写sql了吗

时间:2024-09-27 14:19:55浏览次数:10  
标签:xml queryWrapper SysStudent plus sysStudent student sql mybatis

整合了mybatis-plus后,就不用再xml文件里面写sql了吗

使用mybatis-plus接口

这是一个根据特定条件筛选学生信息的接口,用户可以通过姓名,年龄,性别,爱好来筛选学生,可以都选也可以都不选。这就迫使在 java 代码中添加了很多 if 语句

public List<SysStudent> queryList(SysStudent sysStudent){
        LambdaQueryWrapper<SysStudent> queryWrapper = Wrappers.lambdaQuery();
        if (StringUtils.isNotBlank(sysStudent.getStudentName())) {
            queryWrapper.eq(SysStudent::getStudentName, sysStudent.getStudentName());
        }
        if (StringUtils.isNotBlank(sysStudent.getStudentHobby())) {
            queryWrapper.eq(SysStudent::getStudentHobby, sysStudent.getStudentHobby());
        }
        if (sysStudent.getStudentAge() != null) {
            queryWrapper.eq(SysStudent::getStudentAge, sysStudent.getStudentAge());
        }
        if (sysStudent.getStudentSex() != null) {
            queryWrapper.eq(SysStudent::getStudentSex, sysStudent.getStudentSex());
        }
        List<SysStudent> studentList = list(queryWrapper);
        return studentList;
    }

使用xml文件

因为项目刚刚整合了mybatis-plus,所以极度想要用一下。。
如果在xml文件里写sql,如下:

<mapper namespace="com.ruoyi.system.mapper.SysStudentMapper">

  省略部分代码

    <select id="queryList" parameterType="SysStudent" resultMap="SysStudentMap">
        select * from sys_student
        <where>
            <if test="studentName != null and studentName != ''">
                and student_name like concat('%', #{studentName}, '%')
            </if>
            <if test="studentSex != null and studentSex != ''">
                and student_sex = #{studentSex}
            </if>
            <if test="studentHobby != null and studentHobby != ''">
                and student_hobby = #{studentHobby}
            </if>
             <if test="studentAge != null and studentAge != ''">
                and student_age = #{studentAge}
            </if>
        </where>
    </select>
</mapper>

写在项目中的java代码就简单多了

public List<SysStudent> queryList(SysStudent sysStudent){
	List<SysStudent> studentList = sysStudentMapper.queryList(sysStudent);
    return studentList;
}

总结

直接使用mybatis-plus接口的优点:

  • 简洁快速: 对于简单的查询条件构建,使用MyBatis Plus提供的LambdaQueryWrapper可以非常快速地完成。
  • 类型安全: 利用Java的类型系统,可以避免SQL注入问题,并且在编译阶段就能发现一些错误。
  • IDE支持: 由于是在Java代码中编写,IDE的代码提示、重构等功能都可以很好地支持。

在XML文档中编写sql的优点:

  • 灵活性: 对于复杂的SQL逻辑,尤其是涉及到子查询、窗口函数、存储过程等情况,XML文件提供了更大的灵活性。
  • 可维护性: 将SQL逻辑从Java代码中分离出来,使得代码更易于阅读和维护。
  • 复用性: 同一个SQL片段可以在多个地方被引用。

我初略的总结了一下:对于简单的查询条件构建,直接使用Java接口的方式更为快捷。而对于复杂的查询逻辑,XML文件提供了更高的灵活性和可维护性。

博主水平有限,欢迎指正

标签:xml,queryWrapper,SysStudent,plus,sysStudent,student,sql,mybatis
From: https://blog.csdn.net/weixin_44023931/article/details/142591898

相关文章

  • MySQL 8.0 为 Java 开发者提供了许多强大的新特性
    以下是一些关键点:1.通用表表达式(CTE):CTE允许您定义命名的临时结果集,这些结果集可以在后续的SELECT、INSERT、UPDATE、DELETE或CREATEVIEW语句中被引用。这对于编写复杂查询特别有用。WITHRECURSIVEemployee_hierarchyAS(SELECTid,name,manager_id,1ASlevelF......
  • mysql安装
    编译安装cmake..-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_DATADIR=/opt/data\-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock\-DWITH_BOOST=/opt/mysql-5.7.40/boost/boost_1_59_0\-DDEFAULT_CHARSET=utf8\-DDEFAULT_COLLATION=utf8_general_ci\-DWIT......
  • python爬虫案例——抓取三级跳转网页,实现逐页抓取,数据存入mysql数据库(10)
    文章目录1、目标任务2、网页分析3、完整代码1、目标任务目标站点:情话网(http://www.ainicr.cn/tab/)任务:抓取该网站下所有标签下的所有情话语句,并将其存入mysql数据库2、网页分析用浏览器打开网页,按F12或右键检查,进入开发者模式,在Network-Doc下找到网页的数......
  • 科普文:软件架构数据库系列之【MySQL数据库SQL命令和SQL标准梳理】
    概叙结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。​SQL是用于访问和处理数据库的标准的计算机语言。SQL历史HistoryofSQL​SQL语言1974年由Boyce和Chamb......
  • 【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId=1718516问题现象某局点yashandbcpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。经分析执行计划,相对以前有所变化,走了另外一个索引(......
  • 【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId=1718516问题现象某局点yashandbcpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。经分析执行计划,相对以前有所变化,走了另外一个索......
  • SQL第9课——汇总数据
    (9.21-----9.25在打研究生数模比赛,所以断更了几天,sorry)SQL的聚集函数,如何利用它们汇总表的数据。9.1聚集函数汇总数据但是不需要实际检索出来,SQL查询可用函数检索数据,以便分析和报表生成。聚集函数(aggregatefunction):对某些行运行的函数,计算并返回一个值。SQL聚集......
  • 第27篇 sqlserver2022详细安装步骤
    话不多说,直接开干一.下载1.官方链接下载:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads2.在下载目录中找到下面这个小的安装包SQL2022-SSEI-Dev.exe,运行开始下载SQLserver;二.安装SqlServer2022服务端1.双击安装包【SQLServer2022-x64-CHS-De......
  • MySQL窗口函数汇总
    1.窗口函数概述窗口函数是一种SQL函数,非常适合于数据分析,其最大的特点就是:输入值是从SELECT语句的结果集中的一行或者多行的"窗口"中获取的,也可以理解为窗口有大有小(行数有多有少)。通过OVER子句,窗口函数与其他的SQL函数有所区别,如果函数具有OVER子句,则它是窗口函数。如果它缺少了O......
  • pbootcms:未检测到您服务器环境的sqlite3数据库扩展
    当遇到PBootCMS提示“未检测到您服务器环境的sqlite3数据库扩展”的错误时,可以通过以下两种方法来解决:第一种方法:把数据库配置连接驱动改为 pdo_sqlite打开数据库配置文件找到 database.php 文件,通常位于 \APPs\config\ 目录下。修改数据库配置将 type 的......