当前位置: 首页 > news >正文

Springboot Mybatis XML配置文件

        XML配置文件操作

package com.wzb.MybatisXmlExercise20240925;public class Xml {public static void main(String[] args) {System.out.println("Hello XML");}// XML配置文件规范// 使用Mybatis注解的方式的确可以操作数据库,但大多只能完成增删改查等简单的功能,若需要实现复杂的SQL功能,则需要// 使用XML配置文件映射语句————也就是将SQL语句写在XML配置文件中// 在Mybatis中使用XML映射文件开发,需要符合特定规范:// 1.XML映射文件名必须和Mapper接口严格相等,并且将XML映射文件和Mapper接口放置在相同的包下面(同包同名,必须严格相同)// XML文件一般都是放在resource目录之下的,需要在resource目录中创建和Mapper接口包同包同名的目录用于存放XML文件// 切记:因为在resource目录中无法直接创建软件包,所以说要创建目录,并用/分隔其层级关系// 2.XML映射文件的namespace属性必须和Mapper接口的全限定名完全一致// 3.XML映射文件中的SQL语句的id必须和Mapper接口的方法名一致,返回值也需要一致;都需要严格相等// XML配置文件和注解需要合理使用,在日常开发中,若没有特别要求,那么用注解完成一些简单的增删改查;用XML配置文件完成复杂的SQL功能}

        XMLMapper

package com.wzb.MybatisXmlExercise20240925;import com.wzb.Pojo20240925.Emp;
import org.apache.ibatis.annotations.Mapper;import java.time.LocalDate;
import java.util.List;@Mapper
public interface XmlMapper {public List<Emp> conditionSelect(String name, short gender, LocalDate begin, LocalDate end);}

        XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzb.MybatisXmlExercise20240925.XmlMapper"><!--全类名就是全部包名 + 类名--><!--XML映射文件中的SQL语句的id必须和Mapper接口中的方法名完全一致,并且保持返回值一致--><!--完成条件查询--><select id = "conditionSelect" resultType="com.wzb.Pojo20240925.Emp">select * from empwhere name like concat('%', #{name}, '%')and gender = #{gender}and entrydate between #{begin} and #{end}order by update_time desc</select><!-- 但是有一个弊端,可见中间都是and连接的,那么当后面的参数(如gender)都是null的时候,即使传递了前面的参数(如name)也不会有查询结果,因为不管传递参数没有,都会拼接进SQL语句,这不符合业务逻辑————传递了参数,才进行拼接;若没有参数,则不拼接 --></mapper>

 

 

相关文章:

  • 【计算机网络 - 基础问题】每日 3 题(二十八)
  • Qualcomm AI Hub模型优化1: Whisper-Base-En导出及问题解决
  • c++模拟真人鼠标轨迹算法
  • Python项目Flask框架整合Redis
  • 国内旅游:现状与未来趋势分析
  • 【怎样基于Okhttp3来实现各种各样的远程调用,表单、JSON、文件、文件流等待】
  • 小程序电量
  • 一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测
  • 高防服务器有用吗?租用价格一般多少
  • uni-app vue3封装websocket,支持微信小程序
  • Ansible流程控制-条件_循环_错误处理_包含导入_块异常处理
  • linux命令之firewall-cmd用法
  • Spring Boot项目连接Oracle数据库启动报错:Undefined Error
  • 再来谈离散性,Java 比 SQL 又有什么优势?
  • 《深海迷航》风灵月影修改器进阶教程:揭秘海底无限奥秘
  • 网络传输文件的问题
  • [case10]使用RSQL实现端到端的动态查询
  • [译]前端离线指南(上)
  • CAP理论的例子讲解
  • css选择器
  • Date型的使用
  • Docker: 容器互访的三种方式
  • eclipse(luna)创建web工程
  • Golang-长连接-状态推送
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript创建对象的四种方式
  • js算法-归并排序(merge_sort)
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring声明式事务管理之一:五大属性分析
  • vue脚手架vue-cli
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 来,膜拜下android roadmap,强大的执行力
  • 入手阿里云新服务器的部署NODE
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用Gradle第一次构建Java程序
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (3)(3.5) 遥测无线电区域条例
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (回溯) LeetCode 131. 分割回文串
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET Core中如何集成RabbitMQ
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET8使用VS2022打包Docker镜像
  • .NET的数据绑定
  • .NET简谈设计模式之(单件模式)
  • .net下的富文本编辑器FCKeditor的配置方法
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复