Java @Mapper 使用注解的方式注入SQL的详细过程

 更新时间:2025年12月15日 08:43:30   作者:奋力向前123  
文章主要介绍了MySQL的JSON数据类型及其使用方法,包括在表中存储和处理JSON数据、使用JSON数据进行复杂查询以及在SQL语句中处理JSON数据的示例,感兴趣的朋友跟随小编一起看看吧

MySQL 的 JSON 数据类型(从 MySQL 5.7.8 开始支持)允许你在表中存储和处理 JSON 格式的数据。

JSON 数据类型提供了灵活性,但应谨慎使用。对于需要复杂查询、索引或关系约束的数据,传统的关系表结构通常是更好的选择。

mysql中in语句的处理。

一、例如SQL:update bill_main set bill_state = '00' where bill_no in ();

处理如下:

@Update(" update bill_main set bill_state = '00' where  bill_no in <foreach collection='billNoList' item='billNo' open='(' separator=',' close=')'> #{billNo}</foreach> ")
Boolean approveReject(@Param("billNoList") List<String> billNoList);

 @Update(" update bill_main set bill_state = '00' where  bill_no in <foreach collection='billNoList' item='billNo' open='(' separator=',' close=')'> #{billNo}</foreach> ")
    Boolean approveReject(@Param("billNoList") List<String> billNoList);

二、遇到数据类为JOSN的SQL的处理(t3)

SELECT  t1.id,
        t1.bill_no,
        t1.process_instance_id,
        t1.process_definition_id,
        t1.process_deployment_id,
        t1.approve_id,
        t1.remark,
        t1.enabled_flag,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserId')) comApplyUserId,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserName')) comApplyUserName,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserCode')) comApplyUserCode,
        t3.hj_value, #工时
        t3.yye04,#项目
        t3.comSubCategoryCode #月份
        FROM bill_main t1
        LEFT JOIN bill_main_data t2 ON t1.id = t2.id
         LEFT join (
         SELECT 
                  t.id,#单据号
                  jt.hj_value, #工时
                  jt.yye04,#项目
                  jt.comSubCategoryCode #月份
                FROM bill_main_data t,
                JSON_TABLE(
                    t.BILL_DATA->'$.jyInfo',
                    '$[*]' COLUMNS (
                        idx FOR ORDINALITY,
                        hj_value VARCHAR(100) PATH '$.hj',
                        yye04 VARCHAR(100) PATH '$.yye04',
                        comSubCategoryCode VARCHAR(100) PATH '$.comSubCategoryCode'
                    ) ) AS jt
         ) t3
         on t1.id = t3.id

SELECT  t1.id,
        t1.bill_no,
        t1.process_instance_id,
        t1.process_definition_id,
        t1.process_deployment_id,
        t1.approve_id,
        t1.remark,
        t1.enabled_flag,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserId')) comApplyUserId,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserName')) comApplyUserName,
        json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserCode')) comApplyUserCode,
        t3.hj_value, #工时
        t3.yye04,#项目
        t3.comSubCategoryCode #月份
        FROM bill_main t1
        LEFT JOIN bill_main_data t2 ON t1.id = t2.id
         LEFT join (
         SELECT 
                  t.id,#单据号
                  jt.hj_value, #工时
                  jt.yye04,#项目
                  jt.comSubCategoryCode #月份
                FROM bill_main_data t,
                JSON_TABLE(
                    t.BILL_DATA->'$.jyInfo',
                    '$[*]' COLUMNS (
                        idx FOR ORDINALITY,
                        hj_value VARCHAR(100) PATH '$.hj',
                        yye04 VARCHAR(100) PATH '$.yye04',
                        comSubCategoryCode VARCHAR(100) PATH '$.comSubCategoryCode'
                    ) ) AS jt
         ) t3
         on t1.id = t3.id

三、mysql json 数据类型的使用示例

-- 创建电商商品表
CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    attributes JSON,
    price DECIMAL(10,2)
);
-- 插入商品数据
INSERT INTO products VALUES
(1, '手机', '{"brand": "苹果", "color": "黑色", "storage": "128GB", "specs": {"ram": "4GB", "cpu": "A15"}}', 6999),
(2, '笔记本', '{"brand": "戴尔", "color": "银色", "storage": "512GB", "specs": {"ram": "16GB", "cpu": "i7"}}', 8999);
-- 复杂查询:查找品牌是苹果且颜色是黑色的产品
SELECT name, price FROM products
WHERE JSON_EXTRACT(attributes, '$.brand') = '苹果'
AND JSON_EXTRACT(attributes, '$.color') = '黑色';
-- 嵌套查询
SELECT name, attributes->'$.specs.cpu' AS cpu
FROM products;

到此这篇关于Java @Mapper 使用注解的方式注入SQL的详细过程的文章就介绍到这了,更多相关Java @Mapper 注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java软引用在浏览器使用实例讲解

    java软引用在浏览器使用实例讲解

    在本篇文章里小编给大家整理的是一篇关于java软引用在浏览器使用实例讲解内容,有兴趣的朋友们可以学习下。
    2021-04-04
  • Java如何修改.class文件变量

    Java如何修改.class文件变量

    这篇文章主要介绍了Java如何修改.class文件变量,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • Java实现为Word每一页设置不同图片水印的效果

    Java实现为Word每一页设置不同图片水印的效果

    Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果。所以本文为大家介绍了一个方法,可以实现对每一页或者某个页面设置不同的水印效果,需要的可以参考一下
    2022-02-02
  • Java中Easyexcel 实现批量插入图片功能

    Java中Easyexcel 实现批量插入图片功能

    这篇文章主要介绍了Easyexcel 实现批量插入图片,本文通过实例代码给大家介绍了easyexcel文档处理工具、自定义图片处理器的相关知识,需要的朋友可以参考下
    2022-04-04
  • Java设计模式之动态代理模式实例分析

    Java设计模式之动态代理模式实例分析

    这篇文章主要介绍了Java设计模式之动态代理模式,结合实例形式分析了动态代理模式的概念、功能、组成、定义与使用方法,需要的朋友可以参考下
    2018-04-04
  • Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理

    Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理

    ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。下面通过本文给大家介绍Java concurrency集合之ArrayBlockingQueue的相关知识,感兴趣的朋友一起看看吧
    2017-06-06
  • Java Number类原理实例解析

    Java Number类原理实例解析

    这篇文章主要介绍了Java Number类原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java分布式锁由浅入深介绍

    Java分布式锁由浅入深介绍

    这篇文章主要介绍了Java分布式锁,数据库实现分布式锁方式比较多,如悲观锁(查询时增加for update)、乐观锁(通过version字段)、增加一个表记录锁信息等。因为依赖于数据库,比较好理解,但是也存在一些问题
    2023-03-03
  • SpringBoot通过注解注入Bean的几种方式解析

    SpringBoot通过注解注入Bean的几种方式解析

    这篇文章主要为大家介绍了SpringBoot注入Bean的几种方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • SpringBoot读取Resource目录下文件的四种方式总结

    SpringBoot读取Resource目录下文件的四种方式总结

    在Spring Boot项目中,经常需要获取resources目录下的文件,这些文件可以包括配置文件、模板文件、静态资源等,本文将介绍四种常用的方法来获取resources目录下的文件,需要的朋友可以参考下
    2023-08-08

最新评论