首页 > 数据库 >mybatis设置命名格式转换 与 批量插入更新&select查询返回自定义实体类 的sql写法

mybatis设置命名格式转换 与 批量插入更新&select查询返回自定义实体类 的sql写法

时间:2023-08-19 22:55:05浏览次数:42  
标签:count 实体类 自定义 mybatis item sql 命名

  在mybatis的配置文件中设置了Java实体类驼峰命名与表属性下划线命名的自动转换。

  在mybatis中,从接口获取到大量数据之后,将数据集合分批量插入更新到表中。

  在mybatis中,select查询表数据,返回数据的存储类型为自定义的实体类。

1.设置Java实体类驼峰命名与表属性下划线命名自动映射

  在mybatis-config.xml文件中,设置 

<setting name="mapUnderscoreToCamelCase" value="true"/>

 

  可以实现 下划线命名的表字段与驼峰命名的表的实体类属性 自动映射。

2.批量插入更新的sql

 

<insert>
    insert into t_table_name ( , , , , , , ) 
    values
    <foreach collection="list" item="item" index="index" separator=",">
    (
      #{item.field1, jdbcType= },
      #{item.field2, jdbcType= }     
    )
    </foreach>
    ON DUPLICATE KEY UPDATE
         field3 = VALUES(field3),
         field4 = VALUES(field4)
</insert>    

 

  对于这个sql,会将sql的实体类集合插入到表中,如果插入一条数据的时候,会导致 表的 primary key或union key 冲突,则更新 on duplicate key update 后面设置的字段值。

3.在mybatis配置文件中设置驼峰命名与下划线命名自动转换映射之后的sql写法规则

  在2的批量插入更新语句中,本质是:对于实体类Entity集合中的每个数据,将类属性的值取出,并记录该属性的类型,然后通过jdbc协议传输数据,将数据存储到表中。因此,在2中的sql中,

    <foreach>标签中的内容是实体类集合,这部分属性对应实体类的 驼峰命名

    insert into tab_name 和 key update 部分的所有字段都需要对应表的 下划线命名

例如:

 

<insert id="batchInsertOrUpdate">
        insert into t_source_income (
            prd_id,
            stat_date,
            show_count,
            click_count,
            income
        )
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
                #{item.prdId,jdbcType=VARCHAR},
                #{item.statDate,jdbcType=DATE},
                #{item.showCount,jdbcType=INTEGER},
                #{item.clickCount,jdbcType=INTEGER},
                #{item.income,jdbcType=DECIMAL}
            )
        </foreach>
        ON DUPLICATE KEY UPDATE
        show_count = VALUES(show_count),
        click_count = VALUES(click_count),
        income = VALUES(income)
</insert>

 

4. select 查询的sql写法规则

    从表中直接查询或者按条件查询返回的多条数据,存储为自定义类型的实体类集合。

  写法示例:

    假设表字段 stat_date  click_count,自定义实体类对应的命名采用驼峰命名。

<select id="queryDateByType" resultType="com.zzw.Data">
    select stat_date, click_count from t_source_income where type="income"
</select>

  如示例sql所示,select 后面的字段采用的是下划线命名,可以自动的对应实体类Data中驼峰命名的属性。

  

 

标签:count,实体类,自定义,mybatis,item,sql,命名
From: https://www.cnblogs.com/zhangzhenw/p/17643192.html

相关文章

  • SpringBoot使用自定义注解实现数据脱敏
    我们在日常开发中,经常有一些数据中的部分需要隐藏起来,达到数据安全的目的,这一个过程就是数据脱敏。一、自定义数据脱敏枚举类packagecom.example.springbootdemo.enums;importlombok.Getter;importjava.util.function.Function;/***数据脱敏策略枚举*/@Getterpubli......
  • MySQL基本SQL语句1(DDL)
    前言SQL(StructuredQueryLanguage)结构化查询语言,用于存取,查询,更新数据以及管理关系型数据库系统SQL指令分为四类DDL        DataDefintionlanguage数据库定义语言                用于完成对数据库对象(数据表,数据库,视图,索引)的创建,删除,修改DML......
  • MySQL基本SQL语句1(DDL)
    前言SQL(StructuredQueryLanguage)结构化查询语言,用于存取,查询,更新数据以及管理关系型数据库系统SQL指令分为四类DDL        DataDefintionlanguage数据库定义语言                用于完成对数据库对象(数据表,数据库,视图,索引)的创建,删除,修改DML......
  • SQL注入基础学习
    SQL注入基础一、sql注入的基本知识Ⅰ、sql注入原理通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通常未经检查或者未经充分检查的用户输入数据或代码编写问题,意外变成了代码被执行。产生漏洞的条件:参数用户可控参......
  • 记一次MySQL数据库被黑
    情况概述偶然获得了一台云服务器,并在上面使用Docker搭建了MySQL数据库,想着将平时做Demo用到的数据转过去,结果一直犯懒没弄.今天在登陆时发现数据库被黑了.使用showdatabases命令后看到一个名为README_TO_RECOVER_A的库,库中有张表,表的内容为:Allyourdataisbacke......
  • MySQL技能树学习
    在MySQL相关技能树的学习过程当中,存在一些问题,比如在移动端的学习体验和PC的学习体验不一样,这个相信学习过的朋友都有所感觉。尤其移动端的技能树切换、同一个技能树内,不同节点的切换,都比较繁琐。PC感觉还好,同样不太好的还有在移动端的返回功能比较难用,   整体而言,MySQL的技......
  • Navicat执行mysql脚本报错
    1、错误日志[Err]1055-Expression#1ofORDERBYclauseisnotinGROUPBYclause andcontainsnonaggregatedcolumn'information_schema.PROFILING.SEQ' whichisnotfunctionallydependentoncolumnsinGROUPBYclause; thisisincompatiblewith......
  • 大华智慧园区综合管理平台SQL注入漏洞复现
    一、产品简介大华智慧园区综合管理平台是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。二、漏洞概述大华智慧园区综合管理平台未对用户的输入进行有效的过滤,直接将其拼接进了S......
  • MySqlBulkLoader批量数据插入
    MySqlBulkLoader批实现过程:将需要的数据集保存到CSV文件,然后再从文件里面读取。 CsvHelp1///<summary>2///定义csv文件3///</summary>4///<paramname="folder">路径</param>5///<paramname="......
  • PostgreSQL 源码性能诊断(perf profiling)指南(含火焰图生成分析FlameGraph) - 珍藏级
    PostgreSQL源码性能诊断(perfprofiling)指南(含火焰图生成分析FlameGraph)-珍藏级作者digoal日期2016-11-28标签PostgreSQL,Linux,perf,性能诊断,stap,systemtap,strace,dtrace,dwarf,profiler,perf_events,probe,dynamicprobe,tracepoint......