首页 > 其他分享 >Mybatis 记录

Mybatis 记录

时间:2024-08-06 11:07:00浏览次数:12  
标签:map upperKeys 记录 final item Mybatis where id

1. 根据列表批量修改

void secretKeySequence(@Param("list")List<IndustrialShareDto> list);
<update id="secretKeySequence">
   update cloud_industrial_set
       set `index` =
      case
    <foreach collection="list" item="item">
        when id = #{item.id} then #{item.index}
    </foreach>
    end
    where id in(
    <foreach collection="list" item="item" separator=",">
        #{item.id}
    </foreach>
    )
</update>

2. 小于号的处理

 select username from t where id <![CDATA[ <= ]]> #{id}

3. 大小写重复列的问题

出现在 3.0.5 版本独有的问题,当返回值是 resultType = java.util.Map 时,会有两个列

<select id="findDataShowSet" resultType="java.util.Map">
     select sqltext,customid
       from datashowset
      where showname = #{showName}
      order by id
     offset 0 rows fetch next 1 rows only
</select>

查找原因:FastResultSetHandler.loadMappedAndUnmappedColumnNames()

protected void loadMappedAndUnmappedColumnNames(ResultSet rs, ResultMap resultMap, List<String> mappedColumnNames, List<String> unmappedColumnNames) throws SQLException {
  mappedColumnNames.clear();
  unmappedColumnNames.clear();
  final ResultSetMetaData rsmd = rs.getMetaData();
  final int columnCount = rsmd.getColumnCount();
  final Set<String> mappedColumns = resultMap.getMappedColumns();
  for (int i = 1; i <= columnCount; i++) {
    final String columnName = configuration.isUseColumnLabel() ? rsmd.getColumnLabel(i) : rsmd.getColumnName(i);
    //获取大写
    final String upperColumnName = columnName.toUpperCase(Locale.ENGLISH);
    //大写小写都存了一遍
    if (mappedColumns.contains(upperColumnName)) {
      mappedColumnNames.add(upperColumnName);
      mappedColumnNames.add(columnName);
    } else {
      unmappedColumnNames.add(upperColumnName);
      unmappedColumnNames.add(columnName);
    }
  }
}

要么换版本,要么手动去掉

Set<String> upperKeys = new HashSet<>();
dataList.forEach(map -> {
    upperKeys.addAll(map.keySet());
});
dataList.forEach(
        map -> {
            for(String key : upperKeys){
                map.remove(key.toUpperCase(Locale.ENGLISH));
            }
        }
);

标签:map,upperKeys,记录,final,item,Mybatis,where,id
From: https://www.cnblogs.com/cnff/p/18043546

相关文章

  • MyBatis-Pager: 一个轻量且优雅的 MyBatis 分页组件
    优点无侵入:仅需在mapper层接口中增加Pager<T>参数即可。零配置:无需额外增加配置项,能够自动推断数据库分页方言。使用方法SpringBoot2项目引入maven依赖<dependency><groupId>cn.codest</groupId><artifactId>mybatis-pager-spring-boot2-starter</art......
  • 使用rewriteBatchedStatements属性优化Mybatis-Plus批量插入数据(转)
    原文:https://blog.csdn.net/mcband/article/details/131530297前言由于项目是使用MyBatis-Plus开发的,用起来也确实比较方便,尤其是service层封装好的一些通用的增删改查方法,省去了不少sql语句的书写,但是在开发过程中,我也发现MyBatis-Plus的saveBatch批量插入方法针对MySQL数据库可......
  • MyBatis 根据数据表反向生成 java 实体类等
    MyBatis根据数据表反向生成java实体类等  1、MyBatis根据已有的数据表生成对应的Java实体类的配置文件:mybatisReverseGeneratorConfig.xml此文件放到项目的根目录下 1<?xmlversion="1.0"encoding="UTF-8"?>2<!DOCTYPEgeneratorConfiguration......
  • [记录]跟老客户签了保密协议,不给打广告怎么办?
    其实我们在做销售的过程中,经常碰到一种很头痛的问题,就是某个客户问你,在我们国家有没有跟别的客户甚至大客户合作过?这种问题呢,虽然有些时候,是一些客人为了避免同质化竞争,决定绕开一些供应商;但是大部分客人问这个问题的目的,是希望了解你的产品是否适合他的市场。如果你已经给他的同......
  • STM32学习记录(二):GPIO
    何为高低电平?高电平电压(highlevelvoltage),输出的电压值相对较高低电平电压(lowlevelvoltage),输出的电压值相对较低高低电平的电压具体值是多少需要参考数据手册,举个例子,如下表所示,VDD的典型值是3.3V,根据数据手册可以知道低电平下GPIO输出的最大电压是0.4V;高电平下GPIO输......
  • MyBatis搭建和增删改查
    MyBatis是一个开源的持久层框架,用于处理数据库的增删改查操作。它能够将Java对象与数据库中的数据进行映射关系的配置,并自动生成对应的SQL语句,从而简化了数据库操作的编码工作。MyBatis的核心思想是将SQL语句与Java代码分离,通过XML或注解来配置SQL语句,使得SQL语句可以进行灵活......
  • Mybatis-Plus(0废话,全程高能)
    --------------------------------------------------------------------------------------------------------------------------------我知道你可能或多或少用过,都点进来了,就大概看一眼呗......
  • 后端MyBatis连接Mysql数据库时常见报错
     目录报错情况报错情况一:​编辑报错情况二:解决步骤一、解决命名问题1.mapper层的id是否和Dao层的方法名字相同2.检查namespace与Dao层的文件地址相同二、解决注解问题1.检查Controller层的注解是否正确和完整2.Dao层或者Mapper层的注解3.pojo层:实体类层Data注解(用......
  • Mybatis一级缓存与二级缓存
    一级缓存与二级缓存概述当mydatis需要关联查询时,会使一条sql语句附加n条关联查询语句,即1+n问题,为了解决这个问题mybatis提供了延迟加载和缓存机制,本节讲缓存机制。当不开启延迟加载时,1+n条sql语句同时发送至数据库,这时n+1条sql语句是在同一个会话当中,一级缓存自动生效,即相同......
  • 打靶记录7——Hacker_Kid-v1
    靶机下载地址https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova难度OSCP风格的中级难度靶机(只需要获取root权限即可,CTF风格的靶机就还需要获取flag)涉及的攻击方法:主机发现端口扫描Web信息收集DNS区域传输XXE注入攻击SSTI模版注入Capabilitie提权......