Mybatis操作数据库--通用

2023-10-27

选中.xml 右键 Junite 测试的时候,@Test位于这个包中 import org.junit.jupiter.api.Test;

根据条件进行查询总记录数  条件如果涉及到两个表的内容  你也就只写一个表里面的
select
		count(1)
		from
		smbms_bill 
		<trim prefix="where" prefixOverrides="and | or">
			<if test="productName!=null and productName!=''">
				and productName like CONCAT('%',#{productName},'%')
			</if>
			<if test="providerId!=null and providerId>0">
				and providerId=#{providerId}
			</if>
			<if test="isPayment!=null and isPayment>0">
				and isPayment=#{isPayment}
			</if>
		</trim>


根据条件查询(分页)集合(虽然没有说按什么排序 但是你在最后需要写出来 order By )
select
		b.id,b.billCode,b.productName,b.productDesc,b.productUnit,
		b.productCount,b.totalPrice,b.isPayment,b.providerId,
		b.createdBy,b.creationDate,b.modifyBy,b.modifyDate,p.proName as providerName
		from
		smbms_bill b,smbms_provider p
		where
<trim prefixOverrides="and | or">
	b.providerId=p.id
		<if test="productName!=null and productName!=''">
			and productName like CONCAT('%',#{productName},'%')
		</if>
		<if test="providerId!=null and providerId>0">
			and providerId=#{providerId}
		</if>
		<if test="isPayment!=null and isPayment>0">
			and isPayment=#{isPayment}
		</if>
		order by creationDate DESC,modifyDate DESC
		<if test="startIndex!=null and pageSize!=null">
			limit #{startIndex},#{pageSize}
		</if>
	</trim>
当个参数可以加上注解
查看  通过id 查询返回值Provider
<!-- Provider getById(@Param("id")Integer id) -->
	<select id="getById"  resultType="Provider">
	SELECT
		id,proCode,proName,
		proDesc,proContact,
		proPhone,proAddress,
		proFax,createdBy,
		creationDate,
		modifyDate,modifyBy
	FROM
		smbms_provider
	where
		u.userRole=r.id
		id=#{id}
	</select>
	
        
 删除 (增删改默认返回是int<!-- int delById(@Param("id")Integer id) -->
	<delete id="delById">
	delete from smbms_provider where id=#{id}
	</delete>


添加 
<!-- int add(Provider provider) -->
	<insert id="add" parameterType="Provider">
	insert into smbms_provider(proCode,proName,
		proDesc,proContact,
		proPhone,proAddress,
		proFax,createdBy,
		creationDate,
		modifyDate,modifyBy)
	values(#{proCode},#{proName},#{proDesc},#{proContact},#{proPhone},#{proAddress},
           #{proFax},#{createdBy},#{creationDate},#{modifyDate},#{modifyBy})
	</insert>
	
 修改(虽然没有说按什么修改 但是你应该知道是根据id进行修改)
 <!-- int update(Provider provider) -->
	<update id="update" parameterType="Provider">
	update smbms_provider
		set
		<trim suffixOverrides=",">
			<if test="proCode != null">
				proCode = #{proCode},
			</if>
			<if test="proName != null">
				proName = #{proName},
			</if>
			<if test="proDesc != null">
				proDesc = #{proDesc},
			</if>
			<if test="proContact !=null">
				proContact = #{proContact},
			</if>
			<if test="proPhone != null">
				proPhone = #{proPhone},
			</if>
			<if test="proAddress != null">
				proAddress = #{proAddress},
			</if>
			<if test="proFax != null">
				proFax = #{proFax},
			</if>
			<if test="userRole != null and userRole > 0">
				userRole = #{userRole},
			</if>
			<if test="modifyBy != null">
				modifyBy = #{modifyBy},
			</if>
			<if test="modifyDate != null">
				modifyDate = #{modifyDate},
			</if>
			<if test="idPicPath != null">
				idPicPath = #{idPicPath}
			</if>
		</trim>
		where id = #{id}
	</update>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis操作数据库--通用 的相关文章

  • 期权酱也来说说期权双卖策略原理

    期权option 又称选择权 是一类衍生品合约 买方支付权利金给卖方之后 买方有权在未来的特定日期或之前 以特定的价格向卖方买入或卖出标的资产的权利 下文介绍期权酱也来说说期权双卖策略原理 本文来自 期权酱 期权的本质简单说就是买方支付权利
  • 自己挖坑自己填,谷歌大改Transformer注意力,速度、内存利用率都提上去了

    点击上方 AI遇见机器学习 选择 星标 公众号 重磅干货 第一时间送达 来自 机器之心 考虑到 Transformer 对于机器学习最近一段时间的影响 这样一个研究就显得异常引人注目了 Transformer 有着巨大的内存和算力需求 因为

随机推荐

  • 挖掘机整体(2012.11.30)

    将近1周 终于把整体搞定了 这周的问题所在就是由于 180 ANGLE或者180 ANGLE的余弦值都相同 所以才会来回晃 我用了ASINF反正弦
  • Spring 框架学习—控制反转(IOC)

    Spring是一个开源框架 Spring是于2003 年兴起的一个轻量级的Java 开发框架 由Rod Johnson创建 简单来说 Spring是一个分层的JavaSE EEfull stack 一站式 轻量级开源框架 主要用于降低模块之
  • C#编程中的报错解决System.InvalidOperationException

    C 编程中的报错解决System InvalidOperationException 问题场景 问题原因 解决方案 方案一 打破规则 方案二 利用委托 Delegate 问题场景 在C Windows GUI编程中 从某个子线程去访问设计器
  • 计算机类毕业设计优秀最新题目

    主要有以下类别 python c语言 c vc opencv opengl程序设计 单片机类 51 stm32 arduino arm avr 龙芯开发板 嵌入式系统等硬件设计 程序设计 protues仿真 下列题目涵盖但不限于以上内容 4
  • 【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现

    一个简单的黑屏动画 用于2D项目 效果类似慢眨眼 进 出房间时切换场景的衔接过渡 这种效果的实现方式其实蛮多的 我能想到的包括用shader 用一张全黑Sprite覆盖屏幕 或者直接做成一个UI 最近学了一些UnityShader 所以首先
  • html title 属性多行显示

    html global attribute title displays in multiple lines 下面的代码段主要是展现了4种方式让 title 属性的多行展示 经测试 至少兼容到了 ie8
  • java JDBC

    JDBC是什么 Java DataBase Connectivity Java语言连接数据库 JDBC的本质是什么 一套接口 JDBC是SUN公司制定的一套接口 interface 接口都有调用者和实现者 面向接口调用 面向接口写实现类 这
  • Golang笔记:使用exec包执行外部程序与Shell命令

    文章目录 目的 使用演示 Cmd结构体 总结 目的 程序中执行外部程序是比较常用的功能 Golang执行外部程序可以使用标准库中的 os exec https pkg go dev os exec 这个包默认是用来执行外部程序的 可以通过调
  • 3 分钟掌握 Node.js 版本的区别

    在我们日常开发中 Node js 使用场景越来越多 大到服务端项目 小到开发工具脚本 所以掌握 Node js 一些基础知识是非常有必要的 今天主要聊一下 Node js 中 LTS 和 Current 的区别和如何选择合适的版本 一 版本
  • 前端在线预览word,excel,pdf

    前端在线预览word excel pdf 预览Word 预览pdf 预览Excel 预览Word 微软的在线预览功能 可以预览word ppt Excel PDF 局限 需要外网能访问文件 如果是只能内网用的系统就不适合了 XDOX预览 局
  • Linux组成员共享目录

    背景 在实际工作中常常会遇到这样的问题 一台服务器上的多个用户需要合作完成一个项目 他们都有自己的home目录和初始私有组 而他们需要同时再同一个目录下做开发 这时就会用到组成员共享目录 下面介绍如何让组成员再同一目录协同工作 以下操作默认
  • ./darknet: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file:

    libcudart so 8 0 不能找到 是库文件路径引发的问题 可以到 etc ld so conf d目录下 修改其中任意一份conf文件 可以自建conf 以方便识别 将lib所在目录写进去 然后在终端输入 ldconfig 更新缓
  • Android客户端连接SSM(Spring+SpringMVC+Mybatis)框架Java服务器端

    Android客户端开发越来越流行 但是 Android客户端对应的服务器端采用什么框架呢 对于功能较为简单的应用 我建议 直接采用java web开发最简单的MVC框架即可 很多Android应用的服务器端开发框架 我都是采用这种 但是
  • Python安装及建立虚拟环境

    文章目录 前言 一 python安装 二 建立虚拟环境 三 安装jupyter notebook 总结 前言 Python由荷兰数学和计算机科学研究学会的吉多 范罗苏姆 于1990 年代初设计 作为一门叫做ABC语言的替代品 Python提
  • MongoDB 系统管理与操作详解

    一 MongoDB 启动与关闭 1 启动MongoDB 执行mongod命令即可启动MongoDB服务器 mongod在启动时可使用许多可配置选项 在命令行中运行mongod help可列出这些选项 下列选项十分常用 需着重注意 dbpat
  • JVM——垃圾回收

    垃圾回收 文章目录 垃圾回收 垃圾回收概述 什么是垃圾 为什么要回收垃圾 内存溢出和内存泄漏 java垃圾回收机制 自动内存管理 应该关心哪些区域的回收 垃圾回收相关算法 垃圾标记阶段算法 如何标记一个垃圾对象 什么样的对象能被标记为垃圾对
  • IntelliJ IDEA 高级调试技巧

    一 条件断点 循环中经常用到这个技巧 比如 遍历1个大List的过程中 想让断点停在某个特定值 参考上图 在断点的位置 右击断点旁边的小红点 会出来一个界面 在Condition这里填入断点条件即可 这样调试时 就会自动停在i 10的位置
  • WinPcap实战(一)——发送ARP包

    ARP包的结构 ARP包格式 物理帧头 14B ARP帧结构 28B 填充数据 18B CRC 4B 这里给出一张图 图中没有18字节的填充数据和4字节的校验位 物理帧头 14B 目的MAC 6B 源MAC 6B 类型 2B ARP帧 0x
  • 小程序通过webview实现本地任意文件上传

    微信小程序做文件上传的时候 只能选择相册的图片或者视频 没办法选择手机内存卡里的文件 比如 word pdf文件等等 下面可以通过 webview 的方式 借用 h5 的方式即可实现上面的功能 添加业务域名 webview里面打开的地址 首
  • Mybatis操作数据库--通用

    选中 xml 右键 Junite 测试的时候 Test位于这个包中 import org junit jupiter api Test 根据条件进行查询总记录数 条件如果涉及到两个表的内容 你也就只写一个表里面的 select count