mybatis增删改查模板设置及设置调用

mybatis增删改查模板设置

系统配置文件完成以及连接好数据之后,就可以用这个mybatis了,首先写这个数据库的增删改查模板StashMapper.xml,这个东西是要放在DAO层中的奥,切记。

1.编写mybatis对应数据库的增删改查模板

在我的StashMapper.xml文件里,下边,开始写如下模板代码:

<mapper namespace="com.example.sfdeliverysystem.dao.mybatis.StashMapper">--结果映射 type:要映射成哪个类型的对象,这里边就是我实体类的路径名,id后边是给result起个名,一般叫实体类名+result
--这个结果映射实际上是对这个返回值进行一个预设,这些字段需要的写的返回值都在这个一一对应的映射里边了,也就是说,我在下边语句明确返回值类型的
--时候,我只需要输入一个resultMap="StashPOResult",就是13行后边id=的那个东西,对应字段的返回值就自动设置好了,要是不用它的话,就得自己写
--比如resultType="integer",resultType="com.example.sfdeliverysystem.model.StashPO"这个就是把这个返回值设置成这个实体类的类型
--涉及这个实体类里边的字段都可以自动设置返回值<resultMap type="com.example.sfdeliverysystem.model.StashPO" id="StashPOResult">
--对表中的主键进行映射,id后边的是主键,result后边的是非主键
--property属性:用于指定实体类属性名称;column属性:用于指定数据库列名<id property="orderid" column="c_orderid" /><result property="name" column="c_name" /><result property="address" column="c_address" /><result property="packagetype" column="c_packagetype" />                                                                                                                                                                                                                                 <result property="weight" column="f_weight" /><result property="arrivepayment" column="b_arrivepayment" /><result property="comment" column="c_comment" /></resultMap>
--这是insert操作的模板预设,id后边是方法名,
--insert需要有入参,所以parameterType后边是入参,代表从这个实体类获得参数<insert id="insertStash" parameterType="com.example.sfdeliverysystem.model.StashPO">INSERT INTOt_stash(c_orderid,c_name,c_address,n_tel,c_packagetype,f_weight,b_arrivepayment,c_comment)VALUES(#{orderid},#{name},#{address},#{tel},#{packagetype},#{weight},#{arrivepayment},#{comment});--values上边这行,代表数据库里边的字段名,values下边这行,代表通过实体类中的对应输入的入参,所以才会有一个带c一个不带c的这种情况</insert>
--这是select操作的模板预设,id后边是方法名,select不需要入参,所以没有parameterType后边那一堆<select id="selectStash"resultMap="StashPOResult">SELECTc_orderid,c_name,c_address,n_tel,c_packagetype,f_weight,b_arrivepayment,c_commentFROMt_stash;</select>
--这是update操作的模板预设,id后边是方法名,update需要有入参,所以parameterType后边是入参,代表从这个实体类获得参数--><update id="updateStash" parameterType="com.example.sfdeliverysystem.model.StashPO">updatet_stashsetc_orderid = #{orderid},c_name = #{name},c_address = #{address},n_tel=#{tel},c_packagetype=#{packagetype},f_weight=#{weight},b_arrivepayment=#{arrivepayment},c_comment=#{comment});</update>
--这是delete操作的模板预设,id后边是方法名,update需要有入参,
--所以parameterType后边是入参,代表从这个实体类获得参数<delete id="deleteStash" parameterType="String">deletefromt_stashwherec_orderid = #{orderid};
--上边只写c_orderid而不写别的字段是因为这比是主键,
--删东西都得在这删,第二范式</delete>
</mapper>

下面说一下我遇到的疑惑,看下边的代码

<select id="getTRyglFgtsByBh" parameterType="String"resultType="com.thunisoft.jxglptJxkh.bean.TRyglFgts">SELECT C_BH AS CBh, C_RY AS CRy, C_FGTS AS CFgts,C_FY ASCFy FROMT_RYGL_FGTS WHERE C_BH = #{CBh,jdbcType=VARCHAR}</select><select id="getTRyglFgtsListByRy" parameterType="String"resultMap="TRyglFgtsResult">SELECT C_BH AS CBh, C_RY AS CRy, C_FGTS AS CFgts,C_FY ASCFyFROMT_RYGL_FGTS WHERE C_RY = #{CRy}</select>

这是两个select模板语句,问题是,第一个和第二个的java类型都是“String”,然后下边得代码也基本差不多,差就差在最后一句,第一个是WHERE C_BH = #{CBh,jdbcType=VARCHAR},第二个是 WHERE C_RY = #{CRy},这两个一个用了VARCHAR,一个没有,这是为什么呢?

原因在于,第一个 C_BH代表编号,在数据库中可能是普通得编号也可能是
uu_id,这两种编号得类型不一样,普通编号是VARCHAR,uu_id是有自己单独的类型,但是我上边的java类型是String,只能对应数据库的VARCHAR,这样二对一,就有可能出现对不上的情况,所以我要把下边数据库的类型强行限制成VARCHAR,这样就能完美跟JAVA里的String对应上了。

2.在DAO层建立mapper去调用已建好的模板

首先要确认这个模板文件,我的叫StashMapper.xml是在Dao层里奥

建完模板之后,在项目的DAO层,建立一个mapper接口


在这个接口中写调用模板的代码(本质上用的还是接口那套活)

package com.example.sfdeliverysystem.dao.mybatis;
import  java.util.List;
import com.example.sfdeliverysystem.model.StashPO;public interface StashMapper {/*** 这是增* @param stashPo*/void insertStash(StashPO stashPo);/*** 这是查,只有它有返回值* @return StashPO*/StashPO selectStash();/*** 这是改* @param stashPo*/void updateStash(StashPO stashPo);/*** 这是删,删的类型是String* @param cid*/void deleteStash(String cid);

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

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

相关文章

持续总结中!2024年面试必问 20 道 Kafka面试题(一)

一、Kafka 的基础概念有哪些&#xff1f; Kafka 是一个分布式流处理平台&#xff0c;由 LinkedIn 开发&#xff0c;并于 2011 年成为 Apache 软件基金会的一部分。以下是 Kafka 的一些基础概念&#xff1a; Broker: Kafka 集群由多个 Broker 组成&#xff0c;每个 Broker 存储…

DKTCDR:Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation

Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation IEEE(CCF B.SCI 1)-Guoshuai Zhao, Xiaolong Zhang, Hao Tang, Jialie Shen, and Xueming Qian-2024 思路 在CDR中,构建连接两个域的桥梁是实现跨域推荐的基础。然而现在的CDR方法往往在连接两个域时忽…

通俗易懂理解RANSAC算法

RANSAC(Random Sample Consensus)&#xff0c;翻译为随机抽样一致算法。 算法思路&#xff1a;从所有观测中随机找到几个尽可能少的点去拟合模型&#xff0c;拟合后依次计算模型和所有观测数据的残差&#xff0c;当残差小于给定的阈值时&#xff0c;就将其判断为内点&#xff…

软件测试进阶

目录 一、自动化测试 1.概念 2.Selenium 2.1 概念 2.1.1 Selenium是什么&#xff1f; 2.1.2 Selenium特点 2.1.3 工作原理 2.2 SeleniumJava环境搭配 2.3 定位元素 2.3.1 CSS语法 2.3.2 XPath语法 2.4 应用 2.4.1 点击提交文本 2.4.2 模拟输入 2.4.3 清除文本 2…

统信UOS桌面操作系统1070上使用notepad--文本编辑器

原文链接&#xff1a;统信UOS桌面操作系统1070上使用notepad–文本编辑器 Hello&#xff0c;大家好啊&#xff01;今天我要向大家推荐一款在统信UOS桌面操作系统1070上非常好用的文本编辑器软件——“notepad–”。这款软件功能强大、操作简便&#xff0c;特别适合开发人员和日…

车载软件架构 - AUTOSAR 的信息安全框架

车载软件架构 - AUTOSAR 的信息安全架构 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗…

Nginx企业级负载均衡:技术详解系列(17)—— 长连接优化策略与下载服务器高效搭建

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 今天咱们来聊聊Nginx的两个知识点&#xff1a;Nginx的长连接优化、如何将Nginx配置成下载服务器。 长连接配置详解 在Nginx的配置中&#xff0c;长连接是一个重要的性能优化手段。它允许一个TCP连接上发送多个请求和…

STM32作业实现(一)串口通信

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

C++指针和引用到内存泄漏,内存对齐——面试八股素材库

参考《CPrimer》2.3 复合结构&#xff1b; C内存管理&#xff0c;内存泄漏&#xff0c;内存对齐 目录 指针和引用 引用和指针差别 引用 指针 具体用法差异 常量指针和指向常量对象的指针 const int * ptr; 和 int const * ptr 和 int * const ptr; 区别 const int *ptr…

c++实现:小型公司的信息管理系统(关于多态)

前言&#xff1a; 介绍员工信息&#xff1a;一个小型公司的人员信息管理系统 某小型公司&#xff0c;主要有四类人员&#xff1a;经理、技术人员、销售经理和推销员。现在&#xff0c;需要存储这些人员的姓名、编号、级别、当前薪水。计算月薪总额并显示全部信息人员编号基数为…

Nginx企业级负载均衡:技术详解系列(16)—— Nginx的try_files指令,你知道这个指令是干什么的吗?

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 今天咱们来聊一聊Nginx的try_files指令&#xff0c;你知道这个指令是干什么的吗&#xff1f; 如果你对Web服务器配置有所了解&#xff0c;那么你可能会对try_files指令感到好奇。这个指令实际上是Nginx配置中的一项强…

提高工作效率的招数

自己的工作效率为啥比别人低&#xff0c;因为不会使用工具&#xff0c;这就是一个大冤种。 1.血泪教训&#xff0c;写代码调用第三方接口的时候已经要打印调用日志&#xff0c;不然扯皮真的难搞。 2.pg 上测试或的时候由于schema 错误mybatis会给你报空指针一样&#xff0c;还…

服务失败后如何重试?

服务失败后如何重试&#xff1f; 在分布式系统和网络应用程序中&#xff0c;重试策略对于有效处理瞬时错误和网络不稳定性至关重要。 重试策略能让系统在发生故障时多次尝试操作&#xff0c;从而提高最终成功的可能性。 下图显示了 4 种常见的重试策略。 01 线性回退 线性回…

SMV 算法【python,机器学习,算法】

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一类按监督学习&#xff08;supervised learning&#xff09;方式对数据进行二元分类的广义线性分类器&#xff08;generalized linear classifier&#xff09;&#xff0c; 其决策边界是对学习样本求解的最大…

SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改

新增操作 正常我们都是从新增功能书写 查看源码 显示的是这个 在vue里面开下来 这样就能显示 点击确定 就能把数据发送到后台进行保存 //弹出添加窗口handleCreate() {this.dialogFormVisible true;},//重置表单resetForm() {},//添加handleAdd() {//绑定的是确定按钮 发起请…

浅谈Qt:跨平台开发的现在与未来

在软件开发领域&#xff0c;跨平台框架一直是热门话题。Qt作为一个成熟且功能丰富的跨平台C开发库&#xff0c;自从1991年由挪威Trolltech公司开发以来&#xff0c;已经走过了30多年的历程。Qt主要用于开发图形用户界面&#xff08;GUI&#xff09;程序&#xff0c;同时也支持开…

Educational Codeforces Round 166 (Rated for Div. 2) (A~C)

A. Verify Password 思路:按照ASCLL值进行比较就行(因为字母的ASCLL本来就在数字后面),所以,只要找到前面比后面的数大就输出NO,反之YES 代码实现: #include<bits/stdc.h> using namespace std; #define N 100005 typedef long long ll; ll n, m, num, sum, t; ll a[N]…

[力扣题解] 257. 二叉树的所有路径

题目&#xff1a;257. 二叉树的所有路径 思路 前序遍历 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x)…

电脑死机问题排查

情况描述&#xff1a;2024年6月2日下午16&#xff1a;04分电脑突然花屏死机&#xff0c;此情况之前遇到过三次&#xff0c;认为是腾讯会议录屏和系统自带录屏软件冲突导致。 报错信息&#xff1a;应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址…

整理好了!2024年最常见 20 道 Kafka面试题(二)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道 Kafka面试题&#xff08;一&#xff09;-CSDN博客 三、请解释Kafka中的生产者&#xff08;Producer&#xff09;和消费者&#xff08;Consumer&#xff09;。 在Kafka中&#xff0c;生产者&#xff08;Produce…