MyBatis特殊的SQL执行

MyBatis特殊的SQL执行
5.1 查询多条数据为map集合
(1)方式一
将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
时可以将这些map放在一个list集合中获取
①Mapper.java

List<Map<String, Object>> getAllUserToMap();
1
②Mapper.xml

<select id="getAllUserToMap" resultType="map">
    select * from t_user
</select>

(2)方式二
将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并
且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对
应的map集合
①Mapper.java

@MapKey("id")
Map<String, Object> getAllUserToMap();
1
2
②Mapper.xml

<select id="getAllUserToMap" resultType="map">
    select * from t_user
</select>
1
2
3
③结果如下
{
1={password=123, sex=男, id=1, age=23, username=admin},
2={password=416, sex=男, id=2, age=24, username=张三},
3={password=341, sex=男, id=3, age=25, username=李四}
}

5.2 模糊查询
<select id="testMohu" resultType="User">
    <!-- 方式一 -->
    select * from t_user where username like '%${mohu}%'
    <!-- 方式二 -->
    select * from t_user where username like concat('%',#{mohu},'%')
    <!-- 方式三 -->
    select * from t_user where username like "%"#{mohu}"%"
</select>
5.3 批量删除
(1)Mapper.java

/**
* 批量删除
* @param ids
* @return
*/
int deleteMore(@Param("ids") String ids);

(2)Mapper.xml

<!--int deleteMore(@Param("ids") String ids);-->
<delete id="deleteMore">
    delete from t_user where id in (${ids})
</delete>

5.4 动态设置表名
(1)Mapper.java

/**
* 动态设置表名,查询所有的用户信息
* @param tableName
* @return
*/
List<User> getAllUser(@Param("tableName") String tableName);

(2)Mapper.xml

<select id="getAllUser" resultType="User">
    select * from ${tableName}
</select>

5.5 添加功能获取自增的主键
(1)使用场景:插入一条新的记录后,数据库本身自动生成了主键,而这个主键需要在其他表中使用。


(2)Mapper.java


int insertUser(User user);
(3)Mapper.xml

/**
* useGeneratedKeys: 设置使用自增的主键
* keyProperty="id" 指定主键值赋值给Java对象的哪个属性
* keyColumn 设置为数据库的自增长列名(有些版本需要设置,否则会报错)
*/
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>

6、自定义映射resultMap
6.1 当字段名和属性名不一致的时候,如何处理映射关系?
(1)为查询的字段设置别名,和属性名保持一致

<select id="getEmpById" resultType="Emp">
    select emp_id empId,emp_name empName,age,gender from t_emp where emp_id = #{empId}
</select> 
1
2
3
(2)当字段符合Mysql的要求使用下划线“_”,而实体类的属性符合Java的要求使用驼峰;
此时可以在mybatis的核心配置文件中设置一个全局配置,可以自动将下划线映射为驼峰

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 将下划线映射为驼峰 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

  1. 自定义映射 resultMap 处理字段和属性的映射关系

    • 当字段名和实体类中的属性名不一致时,可以通过 resultMap 来设置自定义映射:
       

      xml

      <resultMap id="userMap" type="User"><id property="id" column="user_id" /><result property="name" column="username" />
      </resultMap>
    • 这种方式允许自定义字段和属性之间的映射关系。

以上是 MyBatis 特殊 SQL 执行的一些常见方式,可以根据具体需求选择合适的方法来实现。

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

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

相关文章

Go 程序编译的步骤

Go程序编译的步骤 词法分析&#xff08;Lexical Analysis&#xff09; Go编译器首先对源代码进行词法分析&#xff0c;将代码拆分成标记&#xff08;tokens&#xff09;&#xff0c;这些标记是编程语言的最小单位&#xff0c;如关键字、变量名、操作符等。 作用&#xff1a;生…

SD-WAN服务商应该怎么挑选?

随着企业对高效、灵活网络的需求不断增长&#xff0c;SD-WAN技术逐渐成为市场热点。然而&#xff0c;面对众多服务商的多样化方案&#xff0c;如何选择最适合自己企业的服务商是一个重要的问题。SD-WAN服务商之间在技术、功能和服务等方面存在差异&#xff0c;企业需要根据自身…

三相LCL并网逆变器--仿真验证

根据前面的博客的讲解&#xff0c;确定主电路参数如下 名称/单位 值 名称/单位 值 额定功率P/kW 20 开关频率fsw/kHz 10 母线电压Udc/V 720 逆变器侧电感L1/mH 1.8 额定电流Ireated/A 30 并网测电感L2/mH 0.4 PCC电压/Us/V 220 滤波电容C/uF 4.7 电网频率f…

基于SpringBoot+Vue的服装生产管理系统-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 设计原则 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 系统流程和逻辑 7.2 系统结构 8. 数据库设计 8.1 数据库ER图 &#xff08;1&#xff09;管理员实体属性图…

告别充电焦虑:移动充电机器人的革命性解决方案

移动充电机器人作为新能源汽车领域的黑科技&#xff0c;正逐渐崭露头角。它的出现为电动汽车充电带来了全新的解决方案&#xff0c;解决了传统充电方式的诸多痛点。 新能源汽车具有诸多优点&#xff0c;如科技含量高、噪音小、使用成本低等&#xff0c;但 “续航焦虑”“充电焦…

【启明智显分享】ESP32-P4方案4.3寸触摸屏来袭!支持MIPI CSI摄像头接口

家人们&#xff0c;你们一直在等的ESP32-P4方案4.3寸触摸屏它来了&#xff01; 启明智显全新推出的ESP32-P4 4.3寸IPS触摸屏&#xff0c;搭载强大的双核400MHz RISC-V处理器&#xff0c;配备32MB PSRAM和16MB FLASH&#xff0c;分辨率800*480&#xff0c;性能和视觉体验再次突…

国内管理咨询公司哪家落地辅导做的好?

在当今快速变化的市场环境中&#xff0c;企业面临着前所未有的竞争压力与转型挑战。为了在这场没有硝烟的战争中脱颖而出&#xff0c;许多企业开始寻求外部专业力量的帮助&#xff0c;以期通过科学的管理咨询实现战略升级和业绩突破。而在众多的管理咨询公司中&#xff0c;思博…

【力扣】824.山羊拉丁文

问题描述 思路解析 首先把字符串通过空格分隔开来&#xff0c;用一个字符串数组来接收。因为要经常加上字符&#xff0c;所以使用 StringBuilder &#xff0c;最后再进行转化然后检验首字母是否为元音&#xff0c;因为元音字母加上其大小写比较多&#xff0c;所以用一个字符串…

二叉树OJ题

带值的多层递归 对二叉树的递归性质做一个更好的补充。 提到二叉树的递归&#xff0c;我们首相想到的就是二叉树的深度优先遍历&#xff08;根遍历&#xff09;。对于求二叉树结点的个数&#xff0c;同样可以用递归来实现&#xff08;带值的多层递归&#xff09;。 1、二叉树的…

算法刷题Day11: BM33 二叉树的镜像

点击题目链接 思路 转换为子问题&#xff1a;左右子树相反转。遍历手法&#xff1a;后序遍历 代码 class Solution:def Transverse(self,root: TreeNode):if root None:return rootnewleft self.Transverse(root.left)newright self.Transverse(root.right)# 对root节点…

leetcode104.二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…

一体式远程IO(三格电子)

一、功能概述 1.1 设备结构 本产品是三格电子研发生产的一体式远程 IO 。通信有 Profinet 、EtherCAT、 EtherNet/IP 三种。IO 接口有&#xff1a;32 路数字量输入、32 路数字量输出 NPN、32 路数字量输出 PNP、16 路数字量输入 16 路数字量输出 NPN、16 路数字量输入 16 路数…

零碳新墅居 | 重新定义零碳美学,阳光新能源打开高端品智生活新可能

当下人们对于居住生活的期待&#xff0c;不再仅限于实用与舒适&#xff0c;更追求绿色、低碳、美观与智能的结合。在这一趋势下&#xff0c;零碳墅居生活正成为引领高端生活风尚的新范式。 11月初&#xff0c;PChouse太平洋家居网携手阳光家庭能源官宣成立的“零碳新墅居设计智…

库存看板在现代企业管理中的作用:如何通过看板系统提升库存流动性与效率?

库存管理是现代企业管理中的重要环节&#xff0c;尤其对于制造业、零售业及电商平台等行业&#xff0c;如何高效、精准地管理库存&#xff0c;避免过度库存积压或库存不足的情况&#xff0c;直接影响到公司的运营成本、资金周转、客户满意度等多个方面。而在众多库存管理方法中…

免押租赁系统助力资源共享新模式开创便捷租赁体验

内容概要 免押租赁系统&#xff0c;听起来是不是很酷&#xff1f;这个新模式不仅仅是为了让你少花点钱&#xff0c;它的到来简直就是个革命&#xff01;以前&#xff0c;租东西时首先想到的就是那个令人心痛的押金&#xff0c;对吧&#xff1f;但现在&#xff0c;免押租赁系统…

Spring Boot 3 + Vue 3实战:实现用户登录功能

文章目录 一、实战概述二、实战步骤? &#xff08;一&#xff09;创建前端项目 - login-vue 1、创建Vue项目2、安装axios模块3、安装vue-router模块4、安装less和less-loader模块5、运行Vue项目6、在浏览器里访问首页7、在IDEA里打开Vue项目8、创建登录Vue组件9、创建首页Vue…

记录一次老平台改造通知用户刷新页面,纯前端实现

记录一次老平台改造通知用户刷新页面&#xff0c;纯前端实现 方案概述背景现状问题本质 方案设计前提设计实现 其他补充写在最后的话抛出一个问题 方案概述 背景 前端构建完上线&#xff0c;用户还停留还在老页面&#xff0c;用户不知道网页重新部署了&#xff0c;跳转页面的时…

11.12[CQU JAVEE_EXP3][JAVA WEB]3h速成JAVA WEB;DE启动Tomcat的各种BUG;GIT

GIT 如果有四个实验&#xff0c;但希望将四个实验保存在一个远程仓库当中&#xff0c;且分别有一个文件夹来区分&#xff0c;但是在本地写实验的时候&#xff0c;希望每次只打开一个实验&#xff0c;并且做完后向远程仓库中提交&#xff0c;不会拉取远程仓库中的其它实验代码 …

PYTHON编写API

API——application programming interface 全称为应用程序开发接口&#xff0c;是不同软件系统之间相互通信的桥梁。通过API&#xff0c;开发者可以通过标准化的请求和响应机制&#xff0c;访问服务器上的数据和功能&#xff0c;而无需了解具体的内部实现细节。在python中&am…

网络基础和UDP函数的简单使用

网络发展 最开始&#xff0c;计算机是独立的个体&#xff0c;因为需求需要计算机之间交换数据&#xff0c;由局域网&#xff08;私网&#xff09;–>广域网&#xff08;公网&#xff09;&#xff0c;网络就逐渐发展起来了。 初识协议 协议就是一种约定 网络协议就是众多协…