Web开发:ibatis的使用笔记

news2024/12/26 12:05:49

一、简介

ibatis是一个基于SQL映射支持Java和.NET的持久层框架:

1.如下所示id是对应程序的statement,resultClass需要填写SQL查询到的字段对应的类的命名空间+类名DAO.QueryForList<实体类>),以此完成持久层和业务逻辑层的交互;

<select id="GetIncomeMonth" resultClass="XXXX.Model.StatistMonth">
    <![CDATA[
                /*我是一条注释*/
    ]]>
</select>

可以这样映射到常用的类型:

<select id="SelectDetailViewByParam" resultType="System.String">

2.一般标签有select,Insert,Update,Delete,Query,procedure  

3.数据库查询的字段要和实体类对应,不对应的SQL语句要用AS起别名统一,否则映射失败

<!-- 起别名的SQL,要包起来 例如:SELECT A.NAME,B.PLACE FROM TABLE A LEFT JOIN B ON A.ID=B.ID-->

<!-- 需要改为SELECT * FROM (SELECT A.NAME,B.PLACE FROM TABLE A LEFT JOIN B ON A.ID=B.ID) AS T-->

4.占位符,通过字典键值对传递,命名要一致,dic.Add(“ID”,”123”):

  • ID=#ID#  
  • ID LIKE '%$ID$%'  
  • ID NOT IN ($ID$) 
  • ID NOT IN ('$ID$')

区别:#默认给两边加单引号,$不会,传进来是什么就是什么

5.配置xml位置:Config\SqlMap.config,注意先后顺序,先写T4模板生成的xml,再写自己写的xml

二、标签

1.CDATA转义

出现以下符号需要用CDATA包裹:“<”“>”“?”“&”等符号

2.isnotnull

【说明】不为空则执行包裹的SQL,其中prepend可以是and、or、空

<select id="省略"  resultClass="省略">
     select * from table
        <isNotEmpty prepend="and" property="ID">
            ID = #ID#
        </isNotEmpty>
</select>

假如ID是空的,那么将执行

select * from table

假如ID不是空的,那么将执行

select * from table and ID='123456'

一般来讲SQL中的like,不用写isNotEmpty,即使输入空的,比如以下情况,也会默认查到所有

select * from table where ID like '%%'

3.foreach循环(处理入参不同查询不同)

【情景】

有一个成绩表:scoreid,studentid,score,testnum

有一个学生表:studentid,studentname

假如传入1,2显示出studentid,studentname,'testnum=1的成绩','testnum=2的成绩'

假如传入1,2,3显示出studentid,studentname,'testnum=1的成绩','testnum=2的成绩','testnum=3的成绩'

解答:其中入参testnum=1,2,3

<select id="getStudentScores" resultClass="FitsWeb.Model.StudentDetails">

        SELECT s.studentid, s.studentname,

            <foreach collection="testnums" item="item" separator=",">

                MAX(CASE WHEN sc.testnum = #{item} THEN sc.score END) AS 'testnum=${item}的成绩'

            </foreach>

        FROM 学生表 s

        LEFT JOIN 成绩表 sc ON s.studentid = sc.studentid

        WHERE sc.testnum IN (#{testnum})

        GROUP BY s.studentid, s.studentname

</select>

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

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

相关文章

第十五章 React使用UI(Ant Design)框架

一、专栏介绍 &#x1f606;&#x1f606; 欢迎加入本专栏&#xff01;本专栏将引领您快速上手React&#xff0c;让我们一起放弃放弃的念头&#xff0c;开始学习之旅吧&#xff01;我们将从搭建React项目开始&#xff0c;逐步深入讲解最核心的hooks&#xff0c;以及React路由、…

亚马逊云科技助力泡泡玛特快速部署全球弹性资源,打造国潮出海文化

企业全球化的终极目标就是品牌出海。1978年伴随着改革开放&#xff0c;中国企业开始放眼望世界输出中国产品&#xff0c;经过多年锤炼后&#xff0c;中国企业如TCL、泡泡玛特在不同的行业重塑版图&#xff0c;对外输出中国品牌&#xff0c;赢得了全球市场&#xff0c;中国企业实…

2023最快申请一张虚拟信用卡方式

虚拟信用卡就是不记名的信用卡&#xff0c;该卡种是预付性质&#xff0c;必须要先充值后消费&#xff0c;不支持转账。 虚拟卡&#xff08;Virtual Card&#xff09;是一种在线支付方式&#xff0c;它不需要实体卡片&#xff0c;而是由虚拟卡号和CVV码组成&#xff0c;可以用于…

图论专栏一《图的基础知识》

图论&#xff08;Graph Theory&#xff09;是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形&#xff0c;这种图形通常用来描述某些实体之间的某种特定关系&#xff0c;用点代表实体&#xff0c;用连接两点的线表示两个实体间具有的…

vscode报错:建立连接:XHR failed

文章目录 问题解决方案 问题 Windows端ssh远程连接Linux端&#xff0c;Windows端vscode报错&#xff1a;“…XHR failed.” 解决方案 参考&#xff1a;解决 Windows 端 VS Code “无法与 “…“ 建立连接&#xff1a;XHR failed.” 问题 亲测有效。 总结&#xff1a; linux…

2023PCTF Double_SS

记录一下 ssrf配合 ssti的结合 首先开启环境 明显的ssrf 让我们访问 5555端口 使用http协议访问 url127.0.0.1:5555 告诉我们去访问 name 并且给我们key url127.0.0.1:5555/name 出现报错 说我们不是admin 然后我们往下看 我们使用file协议读取app/app.py urlfile:///app…

Linux出击之网络环境设置

Linux中如果想要设置静态IP&#xff0c;这就需要我们进行自己去设置。 首先想知道是否有网络&#xff0c;我们就可以查看我们的网卡信息呀&#xff0c;ping 外网地址试试。 比如&#xff0c; ping www.baidu.com ip addr show, 这两个命令都可以让我们对网络有一个了解。 …

华为交换机,配置VRRP负载分担示例

VRRP简介 定义 虚拟路由冗余协议VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;通过把几台路由设备联合组成一台虚拟的路由设备&#xff0c;将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时&#xff0c;VRRP机制能够选…

【设计模式--结构型--桥接模式】

设计模式--结构型--桥接模式 桥接&#xff08;Bridge&#xff09;模式定义结构案例好处使用场景 桥接&#xff08;Bridge&#xff09;模式 定义 将抽象与实现分离&#xff0c;使他们可以独立变化。它是用组合关系代替继承关系来实现&#xff0c;从而降低了抽象和实现这两个维…

10个国内外素材网站,提供免费 Photoshop 素材下载资源

即时设计 被很多人视为免费的PS素材网站——即时设计提供了资源广场版块&#xff0c;方便用户查找材料。对于提供的PS材料&#xff0c;即时设计也做了详细的分类工作&#xff0c;用户可以根据不同的使用标签快速找到相应的PS材料。 进入资源广场&#xff0c;在搜索框中输入要…

leetcode 153. 寻找旋转排序数组中的最小值(优质解法)

代码&#xff1a; class Solution {public int findMin(int[] nums) {int left0,rightnums.length-1;int refernums[right];while (left<right){int midleft(right-left)/2;if(nums[mid]>refer){leftmid1;}else {rightmid;}}return nums[left];} }题解&#xff1a; 通过…

3.electron之vue3.0的桌面应用程序

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…

C语言—每日选择题—Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

SpringBoot运维中的高级配置

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

Excel高效办公:文秘与行政办公的智能化革新

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f91f; 代理 IP 推荐&#xff1a;&#x1f449;品易 HTTP 代理 IP &#x1f485; 想寻找共同学习交流的小伙伴&#xff0c…

数据库常用分库分表方案

为什么需要分库分表 分库分表是因应数据库处理大规模数据时所面临的挑战而出现的解决方案. // 提高性能 单个数据库在数据量增加时容易出现性能瓶颈。分库分表可以减轻单个数据库的负担&#xff0c;提高系统的读写性能和响应速度. // 提高并发能力 大量用户同时访问数据库可能…

电信网关配置管理系统后台 upload.php 文件上传漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。 0x02 漏洞概述 电信网关配置管理系统后台 /manager/teletext/material/upload.php 接口存在文件上传漏洞,攻击者…

Python实现图形的几何变换

一、能够提供对话框窗口&#xff0c;输入三角形的顶点坐标&#xff1b;或者&#xff0c;采用鼠标左键单击方式输入三角形的顶点坐标。 二、对输入的三角形顶点坐标进行五种基本几何变换&#xff1a; 对于平移变换&#xff0c;能够提供对话框窗口&#xff0c;输入平移向量&…

Openlayers 加载 Geoserver 图层以及切换图层样式

Openlayers 加载 Geoserver 图层以及切换图层样式 图层样式核心代码完整代码&#xff1a;在线示例 Openlayers 加载 Geoserver 图层&#xff0c;切换样式也是在项目中遇到的需求&#xff0c;现在介绍一下比较简单但是实用性一般的方法。 后期出一篇自由设置属性字段样式的博客…